diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a0376c9..562dde60 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -157,7 +157,7 @@ endif() message(STATUS "Boost: ${Boost_VERSION} from ${Boost_LIBRARY_DIRS}") -include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) +include_directories(SYSTEM ${Boost_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/contrib/ethereum/libethash) if(MINGW) set(Boost_LIBRARIES "${Boost_LIBRARIES};ws2_32;mswsock") elseif(NOT MSVC) diff --git a/README.md b/README.md index 07adf327..954d15bb 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,11 @@ Building Recommended OS version: Ubuntu 17.04 LTS. -1. `$ sudo apt install git g++ cmake unzip libicu-dev mesa-common-dev libglu1-mesa-dev qt5-default qtwebengine5-dev` +1. For server version: \ +`$ sudo apt-get install -y build-essential g++ python-dev autotools-dev libicu-dev libbz2-dev cmake git libboost-all-dev screen`\ +For GUI version:\ +`$ sudo apt-get install -y build-essential g++ python-dev autotools-dev libicu-dev libbz2-dev cmake git libboost-all-dev screen mesa-common-dev libglu1-mesa-dev qt5-default qtwebengine5-dev` + 2. `$ cd zano/ && make -j$(nproc) gui` 3. Look for the binaries, including the `Zano` GUI, in the build directory diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 46ed7497..599de9f8 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -4,7 +4,7 @@ set(UPNPC_BUILD_TESTS OFF CACHE BOOL "Build test executables") add_subdirectory(miniupnpc) add_subdirectory(zlib) add_subdirectory(db) - +add_subdirectory(ethereum) set_property(TARGET upnpc-static PROPERTY FOLDER "contrib") @@ -13,6 +13,7 @@ set_property(TARGET lmdb PROPERTY FOLDER "contrib") + if(MSVC) set_property(TARGET upnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267") else() diff --git a/contrib/ethereum/CMakeLists.txt b/contrib/ethereum/CMakeLists.txt new file mode 100644 index 00000000..359ad19e --- /dev/null +++ b/contrib/ethereum/CMakeLists.txt @@ -0,0 +1,10 @@ +add_subdirectory(libethash) + +set_property(TARGET ethash PROPERTY FOLDER "contrib") + +if(MSVC) + target_compile_options(ethash PRIVATE /wd4477 /wd4267) +else() + target_compile_options(ethash PRIVATE -Wno-format -Wno-aggregate-return -Wno-empty-body) +endif() + diff --git a/contrib/ethereum/libethash/CMakeLists.txt b/contrib/ethereum/libethash/CMakeLists.txt new file mode 100644 index 00000000..8205079d --- /dev/null +++ b/contrib/ethereum/libethash/CMakeLists.txt @@ -0,0 +1,33 @@ +# ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. +# Copyright 2018 Pawel Bylica. +# Licensed under the Apache License, Version 2.0. See the LICENSE file. + +# set(include_dir ${PROJECT_SOURCE_DIR}/include) + + +add_library( + ethash + bit_manipulation.h + builtins.h + endianness.hpp + ethash/ethash.h + ethash/ethash.hpp + ethash-internal.hpp + ethash.cpp + ethash/hash_types.h + managed.cpp + ethash/keccak.h + ethash/keccak.hpp + keccak.c + keccakf800.c + keccakf1600.c + kiss99.hpp + primes.h + primes.c + ethash/progpow.hpp + progpow.cpp +) + + + + diff --git a/contrib/ethereum/libethash/bit_manipulation.h b/contrib/ethereum/libethash/bit_manipulation.h new file mode 100644 index 00000000..3fa22948 --- /dev/null +++ b/contrib/ethereum/libethash/bit_manipulation.h @@ -0,0 +1,81 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#pragma once + +#include "builtins.h" +#include "support/attributes.h" + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +static inline uint32_t rotl32(uint32_t n, unsigned int c) +{ + const unsigned int mask = 31; + + c &= mask; + unsigned int neg_c = (unsigned int)(-(int)c); + return (n << c) | (n >> (neg_c & mask)); +} + +static inline uint32_t rotr32(uint32_t n, unsigned int c) +{ + const unsigned int mask = 31; + + c &= mask; + unsigned int neg_c = (unsigned int)(-(int)c); + return (n >> c) | (n << (neg_c & mask)); +} + +static inline uint32_t clz32(uint32_t x) +{ + return x ? (uint32_t)__builtin_clz(x) : 32; +} + +static inline uint32_t popcount32(uint32_t x) +{ + return (uint32_t)__builtin_popcount(x); +} + +static inline uint32_t mul_hi32(uint32_t x, uint32_t y) +{ + return (uint32_t)(((uint64_t)x * (uint64_t)y) >> 32); +} + + +/** FNV 32-bit prime. */ +static const uint32_t fnv_prime = 0x01000193; + +/** FNV 32-bit offset basis. */ +static const uint32_t fnv_offset_basis = 0x811c9dc5; + +/** + * The implementation of FNV-1 hash. + * + * See https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function#FNV-1_hash. + */ +NO_SANITIZE("unsigned-integer-overflow") +static inline uint32_t fnv1(uint32_t u, uint32_t v) noexcept +{ + return (u * fnv_prime) ^ v; +} + +/** + * The implementation of FNV-1a hash. + * + * See https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function#FNV-1a_hash. + */ +NO_SANITIZE("unsigned-integer-overflow") +static inline uint32_t fnv1a(uint32_t u, uint32_t v) noexcept +{ + return (u ^ v) * fnv_prime; +} + +#ifdef __cplusplus +} +#endif diff --git a/contrib/ethereum/libethash/builtins.h b/contrib/ethereum/libethash/builtins.h new file mode 100644 index 00000000..6cf6a285 --- /dev/null +++ b/contrib/ethereum/libethash/builtins.h @@ -0,0 +1,43 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +/** + * @file + * Implementation of GCC/clang builtins for MSVC compiler. + */ + +#pragma once + +#ifdef _MSC_VER +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Returns the number of leading 0-bits in `x`, starting at the most significant bit position. + * If `x` is 0, the result is undefined. + */ +static inline int __builtin_clz(unsigned int x) +{ + unsigned long most_significant_bit; + _BitScanReverse(&most_significant_bit, x); + return 31 - (int)most_significant_bit; +} + +/** + * Returns the number of 1-bits in `x`. + */ +static inline int __builtin_popcount(unsigned int x) +{ + return (int)__popcnt(x); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/contrib/ethereum/libethash/endianness.hpp b/contrib/ethereum/libethash/endianness.hpp new file mode 100644 index 00000000..34724778 --- /dev/null +++ b/contrib/ethereum/libethash/endianness.hpp @@ -0,0 +1,98 @@ +// Copyright 2018 Pawel Bylica. +// Licensed under the Apache License, Version 2.0. See the LICENSE file. + +/// @file +/// This file contains helper functions to handle big-endian architectures. +/// The Ethash algorithm is naturally defined for little-endian architectures +/// so for those the helpers are just no-op empty functions. +/// For big-endian architectures we need 32-bit and 64-bit byte swapping in +/// some places. + +#pragma once + +#include + +#if _WIN32 + +#include + +#define bswap32 _byteswap_ulong +#define bswap64 _byteswap_uint64 + +// On Windows assume little endian. +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __BYTE_ORDER __LITTLE_ENDIAN + +#elif __APPLE__ + +#include + +#define bswap32 __builtin_bswap32 +#define bswap64 __builtin_bswap64 + +#else + +#include + +#define bswap32 __builtin_bswap32 +#define bswap64 __builtin_bswap64 + +#endif + +namespace ethash +{ +#if __BYTE_ORDER == __LITTLE_ENDIAN + +struct le +{ + static uint32_t uint32(uint32_t x) noexcept { return x; } + static uint64_t uint64(uint64_t x) noexcept { return x; } + + static const hash1024& uint32s(const hash1024& h) noexcept { return h; } + static const hash512& uint32s(const hash512& h) noexcept { return h; } + static const hash256& uint32s(const hash256& h) noexcept { return h; } +}; + +struct be +{ + static uint64_t uint64(uint64_t x) noexcept { return bswap64(x); } +}; + + +#elif __BYTE_ORDER == __BIG_ENDIAN + +struct le +{ + static uint32_t uint32(uint32_t x) noexcept { return bswap32(x); } + static uint64_t uint64(uint64_t x) noexcept { return bswap64(x); } + + static hash1024 uint32s(hash1024 h) noexcept + { + for (auto& w : h.word32s) + w = uint32(w); + return h; + } + + static hash512 uint32s(hash512 h) noexcept + { + for (auto& w : h.word32s) + w = uint32(w); + return h; + } + + static hash256 uint32s(hash256 h) noexcept + { + for (auto& w : h.word32s) + w = uint32(w); + return h; + } +}; + +struct be +{ + static uint64_t uint64(uint64_t x) noexcept { return x; } +}; + +#endif +} // namespace ethash \ No newline at end of file diff --git a/contrib/ethereum/libethash/ethash-internal.hpp b/contrib/ethereum/libethash/ethash-internal.hpp new file mode 100644 index 00000000..96209bd1 --- /dev/null +++ b/contrib/ethereum/libethash/ethash-internal.hpp @@ -0,0 +1,69 @@ +// ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. +// Copyright 2018 Pawel Bylica. +// Licensed under the Apache License, Version 2.0. See the LICENSE file. + +/// @file +/// Contains declarations of internal ethash functions to allow them to be +/// unit-tested. + +#pragma once + +#include + +#include "endianness.hpp" + +#include +#include + +extern "C" struct ethash_epoch_context_full : ethash_epoch_context +{ + ethash_hash1024* full_dataset; + + constexpr ethash_epoch_context_full(int epoch_number, int light_cache_num_items, + const ethash_hash512* light_cache, const uint32_t* l1_cache, int full_dataset_num_items, + ethash_hash1024* full_dataset) noexcept + : ethash_epoch_context{epoch_number, light_cache_num_items, light_cache, l1_cache, + full_dataset_num_items}, + full_dataset{full_dataset} + {} +}; + +namespace ethash +{ +inline bool is_less_or_equal(const hash256& a, const hash256& b) noexcept +{ + for (size_t i = 0; i < (sizeof(a) / sizeof(a.word64s[0])); ++i) + { + if (be::uint64(a.word64s[i]) > be::uint64(b.word64s[i])) + return false; + if (be::uint64(a.word64s[i]) < be::uint64(b.word64s[i])) + return true; + } + return true; +} + +inline bool is_equal(const hash256& a, const hash256& b) noexcept +{ + return std::memcmp(a.bytes, b.bytes, sizeof(a)) == 0; +} + +void build_light_cache(hash512 cache[], int num_items, const hash256& seed) noexcept; + +hash512 calculate_dataset_item_512(const epoch_context& context, int64_t index) noexcept; +hash1024 calculate_dataset_item_1024(const epoch_context& context, uint32_t index) noexcept; +hash2048 calculate_dataset_item_2048(const epoch_context& context, uint32_t index) noexcept; + +namespace generic +{ +using hash_fn_512 = hash512 (*)(const uint8_t* data, size_t size); +using build_light_cache_fn = void (*)(hash512 cache[], int num_items, const hash256& seed); + +void build_light_cache( + hash_fn_512 hash_fn, hash512 cache[], int num_items, const hash256& seed) noexcept; + +epoch_context_full* create_epoch_context( + build_light_cache_fn build_fn, int epoch_number, bool full) noexcept; + +} // namespace generic + +} // namespace ethash diff --git a/contrib/ethereum/libethash/ethash.cpp b/contrib/ethereum/libethash/ethash.cpp new file mode 100644 index 00000000..f12faab7 --- /dev/null +++ b/contrib/ethereum/libethash/ethash.cpp @@ -0,0 +1,441 @@ +// ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. +// Copyright 2018 Pawel Bylica. +// Licensed under the Apache License, Version 2.0. See the LICENSE file. + +#include "ethash-internal.hpp" + +#include "bit_manipulation.h" +#include "endianness.hpp" +#include "primes.h" +#include "support/attributes.h" +#include +#include + +#include +#include +#include +#include + +namespace ethash +{ +// Internal constants: +constexpr static int light_cache_init_size = 1 << 24; +constexpr static int light_cache_growth = 1 << 17; +constexpr static int light_cache_rounds = 3; +constexpr static int full_dataset_init_size = 1 << 30; +constexpr static int full_dataset_growth = 1 << 23; +constexpr static int full_dataset_item_parents = 256; + +// Verify constants: +static_assert(sizeof(hash512) == ETHASH_LIGHT_CACHE_ITEM_SIZE, ""); +static_assert(sizeof(hash1024) == ETHASH_FULL_DATASET_ITEM_SIZE, ""); +static_assert(light_cache_item_size == ETHASH_LIGHT_CACHE_ITEM_SIZE, ""); +static_assert(full_dataset_item_size == ETHASH_FULL_DATASET_ITEM_SIZE, ""); + + +namespace +{ +using ::fnv1; + +inline hash512 fnv1(const hash512& u, const hash512& v) noexcept +{ + hash512 r; + for (size_t i = 0; i < sizeof(r) / sizeof(r.word32s[0]); ++i) + r.word32s[i] = fnv1(u.word32s[i], v.word32s[i]); + return r; +} + +inline hash512 bitwise_xor(const hash512& x, const hash512& y) noexcept +{ + hash512 z; + for (size_t i = 0; i < sizeof(z) / sizeof(z.word64s[0]); ++i) + z.word64s[i] = x.word64s[i] ^ y.word64s[i]; + return z; +} +} // namespace + +int find_epoch_number(const hash256& seed) noexcept +{ + static constexpr int num_tries = 30000; // Divisible by 16. + + // Thread-local cache of the last search. + static thread_local int cached_epoch_number = 0; + static thread_local hash256 cached_seed = {}; + + // Load from memory once (memory will be clobbered by keccak256()). + const uint32_t seed_part = seed.word32s[0]; + const int e = cached_epoch_number; + hash256 s = cached_seed; + + if (s.word32s[0] == seed_part) + return e; + + // Try the next seed, will match for sequential epoch access. + s = keccak256(s); + if (s.word32s[0] == seed_part) + { + cached_seed = s; + cached_epoch_number = e + 1; + return e + 1; + } + + // Search for matching seed starting from epoch 0. + s = {}; + for (int i = 0; i < num_tries; ++i) + { + if (s.word32s[0] == seed_part) + { + cached_seed = s; + cached_epoch_number = i; + return i; + } + + s = keccak256(s); + } + + return -1; +} + +namespace generic +{ +void build_light_cache( + hash_fn_512 hash_fn, hash512 cache[], int num_items, const hash256& seed) noexcept +{ + hash512 item = hash_fn(seed.bytes, sizeof(seed)); + cache[0] = item; + for (int i = 1; i < num_items; ++i) + { + item = hash_fn(item.bytes, sizeof(item)); + cache[i] = item; + } + + for (int q = 0; q < light_cache_rounds; ++q) + { + for (int i = 0; i < num_items; ++i) + { + const uint32_t index_limit = static_cast(num_items); + + // Fist index: 4 first bytes of the item as little-endian integer. + const uint32_t t = le::uint32(cache[i].word32s[0]); + const uint32_t v = t % index_limit; + + // Second index. + const uint32_t w = static_cast(num_items + (i - 1)) % index_limit; + + const hash512 x = bitwise_xor(cache[v], cache[w]); + cache[i] = hash_fn(x.bytes, sizeof(x)); + } + } +} + +epoch_context_full* create_epoch_context( + build_light_cache_fn build_fn, int epoch_number, bool full) noexcept +{ + static_assert(sizeof(epoch_context_full) < sizeof(hash512), "epoch_context too big"); + static constexpr size_t context_alloc_size = sizeof(hash512); + + const int light_cache_num_items = calculate_light_cache_num_items(epoch_number); + const int full_dataset_num_items = calculate_full_dataset_num_items(epoch_number); + const size_t light_cache_size = get_light_cache_size(light_cache_num_items); + const size_t full_dataset_size = + full ? static_cast(full_dataset_num_items) * sizeof(hash1024) : + progpow::l1_cache_size; + + const size_t alloc_size = context_alloc_size + light_cache_size + full_dataset_size; + + char* const alloc_data = static_cast(std::calloc(1, alloc_size)); + if (!alloc_data) + return nullptr; // Signal out-of-memory by returning null pointer. + + hash512* const light_cache = reinterpret_cast(alloc_data + context_alloc_size); + const hash256 epoch_seed = calculate_epoch_seed(epoch_number); + build_fn(light_cache, light_cache_num_items, epoch_seed); + + uint32_t* const l1_cache = + reinterpret_cast(alloc_data + context_alloc_size + light_cache_size); + + hash1024* full_dataset = full ? reinterpret_cast(l1_cache) : nullptr; + + epoch_context_full* const context = new (alloc_data) epoch_context_full{ + epoch_number, + light_cache_num_items, + light_cache, + l1_cache, + full_dataset_num_items, + full_dataset, + }; + + auto* full_dataset_2048 = reinterpret_cast(l1_cache); + for (uint32_t i = 0; i < progpow::l1_cache_size / sizeof(full_dataset_2048[0]); ++i) + full_dataset_2048[i] = calculate_dataset_item_2048(*context, i); + return context; +} +} // namespace generic + +void build_light_cache(hash512 cache[], int num_items, const hash256& seed) noexcept +{ + return generic::build_light_cache(keccak512, cache, num_items, seed); +} + +struct item_state +{ + const hash512* const cache; + const int64_t num_cache_items; + const uint32_t seed; + + hash512 mix; + + ALWAYS_INLINE item_state(const epoch_context& context, int64_t index) noexcept + : cache{context.light_cache}, + num_cache_items{context.light_cache_num_items}, + seed{static_cast(index)} + { + mix = cache[index % num_cache_items]; + mix.word32s[0] ^= le::uint32(seed); + mix = le::uint32s(keccak512(mix)); + } + + ALWAYS_INLINE void update(uint32_t round) noexcept + { + static constexpr size_t num_words = sizeof(mix) / sizeof(uint32_t); + const uint32_t t = fnv1(seed ^ round, mix.word32s[round % num_words]); + const int64_t parent_index = t % num_cache_items; + mix = fnv1(mix, le::uint32s(cache[parent_index])); + } + + ALWAYS_INLINE hash512 final() noexcept { return keccak512(le::uint32s(mix)); } +}; + +hash512 calculate_dataset_item_512(const epoch_context& context, int64_t index) noexcept +{ + item_state item0{context, index}; + for (uint32_t j = 0; j < full_dataset_item_parents; ++j) + item0.update(j); + return item0.final(); +} + +/// Calculates a full dataset item +/// +/// This consist of two 512-bit items produced by calculate_dataset_item_partial(). +/// Here the computation is done interleaved for better performance. +hash1024 calculate_dataset_item_1024(const epoch_context& context, uint32_t index) noexcept +{ + item_state item0{context, int64_t(index) * 2}; + item_state item1{context, int64_t(index) * 2 + 1}; + + for (uint32_t j = 0; j < full_dataset_item_parents; ++j) + { + item0.update(j); + item1.update(j); + } + + return hash1024{{item0.final(), item1.final()}}; +} + +hash2048 calculate_dataset_item_2048(const epoch_context& context, uint32_t index) noexcept +{ + item_state item0{context, int64_t(index) * 4}; + item_state item1{context, int64_t(index) * 4 + 1}; + item_state item2{context, int64_t(index) * 4 + 2}; + item_state item3{context, int64_t(index) * 4 + 3}; + + for (uint32_t j = 0; j < full_dataset_item_parents; ++j) + { + item0.update(j); + item1.update(j); + item2.update(j); + item3.update(j); + } + + return hash2048{{item0.final(), item1.final(), item2.final(), item3.final()}}; +} + +namespace +{ +using lookup_fn = hash1024 (*)(const epoch_context&, uint32_t); + +inline hash512 hash_seed(const hash256& header_hash, uint64_t nonce) noexcept +{ + nonce = le::uint64(nonce); + uint8_t init_data[sizeof(header_hash) + sizeof(nonce)]; + std::memcpy(&init_data[0], &header_hash, sizeof(header_hash)); + std::memcpy(&init_data[sizeof(header_hash)], &nonce, sizeof(nonce)); + + return keccak512(init_data, sizeof(init_data)); +} + +inline hash256 hash_final(const hash512& seed, const hash256& mix_hash) +{ + uint8_t final_data[sizeof(seed) + sizeof(mix_hash)]; + std::memcpy(&final_data[0], seed.bytes, sizeof(seed)); + std::memcpy(&final_data[sizeof(seed)], mix_hash.bytes, sizeof(mix_hash)); + return keccak256(final_data, sizeof(final_data)); +} + +inline hash256 hash_kernel( + const epoch_context& context, const hash512& seed, lookup_fn lookup) noexcept +{ + static constexpr size_t num_words = sizeof(hash1024) / sizeof(uint32_t); + const uint32_t index_limit = static_cast(context.full_dataset_num_items); + const uint32_t seed_init = le::uint32(seed.word32s[0]); + + hash1024 mix{{le::uint32s(seed), le::uint32s(seed)}}; + + for (uint32_t i = 0; i < num_dataset_accesses; ++i) + { + const uint32_t p = fnv1(i ^ seed_init, mix.word32s[i % num_words]) % index_limit; + const hash1024 newdata = le::uint32s(lookup(context, p)); + + for (size_t j = 0; j < num_words; ++j) + mix.word32s[j] = fnv1(mix.word32s[j], newdata.word32s[j]); + } + + hash256 mix_hash; + for (size_t i = 0; i < num_words; i += 4) + { + const uint32_t h1 = fnv1(mix.word32s[i], mix.word32s[i + 1]); + const uint32_t h2 = fnv1(h1, mix.word32s[i + 2]); + const uint32_t h3 = fnv1(h2, mix.word32s[i + 3]); + mix_hash.word32s[i / 4] = h3; + } + + return le::uint32s(mix_hash); +} +} // namespace + +result hash(const epoch_context& context, const hash256& header_hash, uint64_t nonce) noexcept +{ + const hash512 seed = hash_seed(header_hash, nonce); + const hash256 mix_hash = hash_kernel(context, seed, calculate_dataset_item_1024); + return {hash_final(seed, mix_hash), mix_hash}; +} + +result hash(const epoch_context_full& context, const hash256& header_hash, uint64_t nonce) noexcept +{ + static const auto lazy_lookup = [](const epoch_context& context, uint32_t index) noexcept + { + auto full_dataset = static_cast(context).full_dataset; + hash1024& item = full_dataset[index]; + if (item.word64s[0] == 0) + { + // TODO: Copy elision here makes it thread-safe? + item = calculate_dataset_item_1024(context, index); + } + + return item; + }; + + const hash512 seed = hash_seed(header_hash, nonce); + const hash256 mix_hash = hash_kernel(context, seed, lazy_lookup); + return {hash_final(seed, mix_hash), mix_hash}; +} + +bool verify_final_hash(const hash256& header_hash, const hash256& mix_hash, uint64_t nonce, + const hash256& boundary) noexcept +{ + const hash512 seed = hash_seed(header_hash, nonce); + return is_less_or_equal(hash_final(seed, mix_hash), boundary); +} + +bool verify(const epoch_context& context, const hash256& header_hash, const hash256& mix_hash, + uint64_t nonce, const hash256& boundary) noexcept +{ + const hash512 seed = hash_seed(header_hash, nonce); + if (!is_less_or_equal(hash_final(seed, mix_hash), boundary)) + return false; + + const hash256 expected_mix_hash = hash_kernel(context, seed, calculate_dataset_item_1024); + return is_equal(expected_mix_hash, mix_hash); +} + +search_result search_light(const epoch_context& context, const hash256& header_hash, + const hash256& boundary, uint64_t start_nonce, size_t iterations) noexcept +{ + const uint64_t end_nonce = start_nonce + iterations; + for (uint64_t nonce = start_nonce; nonce < end_nonce; ++nonce) + { + result r = hash(context, header_hash, nonce); + if (is_less_or_equal(r.final_hash, boundary)) + return {r, nonce}; + } + return {}; +} + +search_result search(const epoch_context_full& context, const hash256& header_hash, + const hash256& boundary, uint64_t start_nonce, size_t iterations) noexcept +{ + const uint64_t end_nonce = start_nonce + iterations; + for (uint64_t nonce = start_nonce; nonce < end_nonce; ++nonce) + { + result r = hash(context, header_hash, nonce); + if (is_less_or_equal(r.final_hash, boundary)) + return {r, nonce}; + } + return {}; +} +} // namespace ethash + +using namespace ethash; + +extern "C" { + +ethash_hash256 ethash_calculate_epoch_seed(int epoch_number) noexcept +{ + ethash_hash256 epoch_seed = {}; + for (int i = 0; i < epoch_number; ++i) + epoch_seed = ethash_keccak256_32(epoch_seed.bytes); + return epoch_seed; +} + +int ethash_calculate_light_cache_num_items(int epoch_number) noexcept +{ + static constexpr int item_size = sizeof(hash512); + static constexpr int num_items_init = light_cache_init_size / item_size; + static constexpr int num_items_growth = light_cache_growth / item_size; + static_assert( + light_cache_init_size % item_size == 0, "light_cache_init_size not multiple of item size"); + static_assert( + light_cache_growth % item_size == 0, "light_cache_growth not multiple of item size"); + + int num_items_upper_bound = num_items_init + epoch_number * num_items_growth; + int num_items = ethash_find_largest_prime(num_items_upper_bound); + return num_items; +} + +int ethash_calculate_full_dataset_num_items(int epoch_number) noexcept +{ + static constexpr int item_size = sizeof(hash1024); + static constexpr int num_items_init = full_dataset_init_size / item_size; + static constexpr int num_items_growth = full_dataset_growth / item_size; + static_assert(full_dataset_init_size % item_size == 0, + "full_dataset_init_size not multiple of item size"); + static_assert( + full_dataset_growth % item_size == 0, "full_dataset_growth not multiple of item size"); + + int num_items_upper_bound = num_items_init + epoch_number * num_items_growth; + int num_items = ethash_find_largest_prime(num_items_upper_bound); + return num_items; +} + +epoch_context* ethash_create_epoch_context(int epoch_number) noexcept +{ + return generic::create_epoch_context(build_light_cache, epoch_number, false); +} + +epoch_context_full* ethash_create_epoch_context_full(int epoch_number) noexcept +{ + return generic::create_epoch_context(build_light_cache, epoch_number, true); +} + +void ethash_destroy_epoch_context_full(epoch_context_full* context) noexcept +{ + ethash_destroy_epoch_context(context); +} + +void ethash_destroy_epoch_context(epoch_context* context) noexcept +{ + context->~epoch_context(); + std::free(context); +} + +} // extern "C" diff --git a/contrib/ethereum/libethash/ethash/ethash.h b/contrib/ethereum/libethash/ethash/ethash.h new file mode 100644 index 00000000..b12f1aa9 --- /dev/null +++ b/contrib/ethereum/libethash/ethash/ethash.h @@ -0,0 +1,99 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#pragma once + +#include + +#include + +#ifdef __cplusplus +#define NOEXCEPT noexcept +#else +#define NOEXCEPT +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The Ethash algorithm revision implemented as specified in the Ethash spec + * https://github.com/ethereum/wiki/wiki/Ethash. + */ +#define ETHASH_REVISION "23" + +#define ETHASH_EPOCH_LENGTH 30000 +#define ETHASH_LIGHT_CACHE_ITEM_SIZE 64 +#define ETHASH_FULL_DATASET_ITEM_SIZE 128 +#define ETHASH_NUM_DATASET_ACCESSES 64 + + +struct ethash_epoch_context +{ + const int epoch_number; + const int light_cache_num_items; + const union ethash_hash512* const light_cache; + const uint32_t* const l1_cache; + const int full_dataset_num_items; +}; + + +struct ethash_epoch_context_full; + + +/** + * Calculates the number of items in the light cache for given epoch. + * + * This function will search for a prime number matching the criteria given + * by the Ethash so the execution time is not constant. It takes ~ 0.01 ms. + * + * @param epoch_number The epoch number. + * @return The number items in the light cache. + */ +int ethash_calculate_light_cache_num_items(int epoch_number) NOEXCEPT; + + +/** + * Calculates the number of items in the full dataset for given epoch. + * + * This function will search for a prime number matching the criteria given + * by the Ethash so the execution time is not constant. It takes ~ 0.05 ms. + * + * @param epoch_number The epoch number. + * @return The number items in the full dataset. + */ +int ethash_calculate_full_dataset_num_items(int epoch_number) NOEXCEPT; + +/** + * Calculates the epoch seed hash. + * @param epoch_number The epoch number. + * @return The epoch seed hash. + */ +union ethash_hash256 ethash_calculate_epoch_seed(int epoch_number) NOEXCEPT; + + +struct ethash_epoch_context* ethash_create_epoch_context(int epoch_number) NOEXCEPT; + +/** + * Creates the epoch context with the full dataset initialized. + * + * The memory for the full dataset is only allocated and marked as "not-generated". + * The items of the full dataset are generated on the fly when hit for the first time. + * + * The memory allocated in the context MUST be freed with ethash_destroy_epoch_context_full(). + * + * @param epoch_number The epoch number. + * @return Pointer to the context or null in case of memory allocation failure. + */ +struct ethash_epoch_context_full* ethash_create_epoch_context_full(int epoch_number) NOEXCEPT; + +void ethash_destroy_epoch_context(struct ethash_epoch_context* context) NOEXCEPT; + +void ethash_destroy_epoch_context_full(struct ethash_epoch_context_full* context) NOEXCEPT; + +#ifdef __cplusplus +} +#endif diff --git a/contrib/ethereum/libethash/ethash/ethash.hpp b/contrib/ethereum/libethash/ethash/ethash.hpp new file mode 100644 index 00000000..03f29afd --- /dev/null +++ b/contrib/ethereum/libethash/ethash/ethash.hpp @@ -0,0 +1,160 @@ +// ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. +// Copyright 2018 Pawel Bylica. +// Licensed under the Apache License, Version 2.0. See the LICENSE file. + +/// @file +/// +/// API design decisions: +/// +/// 1. Signed integer type is used whenever the size of the type is not +/// restricted by the Ethash specification. +/// See http://www.aristeia.com/Papers/C++ReportColumns/sep95.pdf. +/// See https://stackoverflow.com/questions/10168079/why-is-size-t-unsigned/. +/// See https://github.com/Microsoft/GSL/issues/171. + +#pragma once + +#include +#include + +#include +#include +#include + +namespace ethash +{ +constexpr auto revision = ETHASH_REVISION; + +static constexpr int epoch_length = ETHASH_EPOCH_LENGTH; +static constexpr int light_cache_item_size = ETHASH_LIGHT_CACHE_ITEM_SIZE; +static constexpr int full_dataset_item_size = ETHASH_FULL_DATASET_ITEM_SIZE; +static constexpr int num_dataset_accesses = ETHASH_NUM_DATASET_ACCESSES; + +using epoch_context = ethash_epoch_context; +using epoch_context_full = ethash_epoch_context_full; + +/// Constructs a 256-bit hash from an array of bytes. +/// +/// @param bytes A pointer to array of at least 32 bytes. +/// @return The constructed hash. +inline hash256 hash256_from_bytes(const uint8_t bytes[32]) noexcept +{ + hash256 h; + std::memcpy(&h, bytes, sizeof(h)); + return h; +} + +struct result +{ + hash256 final_hash; + hash256 mix_hash; +}; + +struct search_result +{ + bool solution_found = false; + uint64_t nonce = 0; + hash256 final_hash = {}; + hash256 mix_hash = {}; + + search_result() noexcept = default; + + search_result(result res, uint64_t nonce) noexcept + : solution_found(true), nonce(nonce), final_hash(res.final_hash), mix_hash(res.mix_hash) + {} +}; + + +/// Alias for ethash_calculate_light_cache_num_items(). +static constexpr auto calculate_light_cache_num_items = ethash_calculate_light_cache_num_items; + +/// Alias for ethash_calculate_full_dataset_num_items(). +static constexpr auto calculate_full_dataset_num_items = ethash_calculate_full_dataset_num_items; + +/// Alias for ethash_calculate_epoch_seed(). +static constexpr auto calculate_epoch_seed = ethash_calculate_epoch_seed; + + +/// Calculates the epoch number out of the block number. +inline constexpr int get_epoch_number(int block_number) noexcept +{ + return block_number / epoch_length; +} + +/** + * Coverts the number of items of a light cache to size in bytes. + * + * @param num_items The number of items in the light cache. + * @return The size of the light cache in bytes. + */ +inline constexpr size_t get_light_cache_size(int num_items) noexcept +{ + return static_cast(num_items) * light_cache_item_size; +} + +/** + * Coverts the number of items of a full dataset to size in bytes. + * + * @param num_items The number of items in the full dataset. + * @return The size of the full dataset in bytes. + */ +inline constexpr uint64_t get_full_dataset_size(int num_items) noexcept +{ + return static_cast(num_items) * full_dataset_item_size; +} + +/// Owned unique pointer to an epoch context. +using epoch_context_ptr = std::unique_ptr; + +using epoch_context_full_ptr = + std::unique_ptr; + +/// Creates Ethash epoch context. +/// +/// This is a wrapper for ethash_create_epoch_number C function that returns +/// the context as a smart pointer which handles the destruction of the context. +inline epoch_context_ptr create_epoch_context(int epoch_number) noexcept +{ + return {ethash_create_epoch_context(epoch_number), ethash_destroy_epoch_context}; +} + +inline epoch_context_full_ptr create_epoch_context_full(int epoch_number) noexcept +{ + return {ethash_create_epoch_context_full(epoch_number), ethash_destroy_epoch_context_full}; +} + + +result hash(const epoch_context& context, const hash256& header_hash, uint64_t nonce) noexcept; + +result hash(const epoch_context_full& context, const hash256& header_hash, uint64_t nonce) noexcept; + +bool verify_final_hash(const hash256& header_hash, const hash256& mix_hash, uint64_t nonce, + const hash256& boundary) noexcept; + +bool verify(const epoch_context& context, const hash256& header_hash, const hash256& mix_hash, + uint64_t nonce, const hash256& boundary) noexcept; + +search_result search_light(const epoch_context& context, const hash256& header_hash, + const hash256& boundary, uint64_t start_nonce, size_t iterations) noexcept; + +search_result search(const epoch_context_full& context, const hash256& header_hash, + const hash256& boundary, uint64_t start_nonce, size_t iterations) noexcept; + + +/// Tries to find the epoch number matching the given seed hash. +/// +/// Mining pool protocols (many variants of stratum and "getwork") send out +/// seed hash instead of epoch number to workers. This function tries to recover +/// the epoch number from this seed hash. +/// +/// @param seed Ethash seed hash. +/// @return The epoch number or -1 if not found. +int find_epoch_number(const hash256& seed) noexcept; + + +/// Get global shared epoch context. +const epoch_context& get_global_epoch_context(int epoch_number); + +/// Get global shared epoch context with full dataset initialized. +const epoch_context_full& get_global_epoch_context_full(int epoch_number); +} // namespace ethash diff --git a/contrib/ethereum/libethash/ethash/hash_types.h b/contrib/ethereum/libethash/ethash/hash_types.h new file mode 100644 index 00000000..108e141c --- /dev/null +++ b/contrib/ethereum/libethash/ethash/hash_types.h @@ -0,0 +1,46 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +union ethash_hash256 +{ + uint64_t word64s[4]; + uint32_t word32s[8]; + uint8_t bytes[32]; +}; + +union ethash_hash512 +{ + uint64_t word64s[8]; + uint32_t word32s[16]; + uint8_t bytes[64]; +}; + +union ethash_hash1024 +{ + union ethash_hash512 hash512s[2]; + uint64_t word64s[16]; + uint32_t word32s[32]; + uint8_t bytes[128]; +}; + +union ethash_hash2048 +{ + union ethash_hash512 hash512s[4]; + uint64_t word64s[32]; + uint32_t word32s[64]; + uint8_t bytes[256]; +}; + +#ifdef __cplusplus +} +#endif diff --git a/contrib/ethereum/libethash/ethash/hash_types.hpp b/contrib/ethereum/libethash/ethash/hash_types.hpp new file mode 100644 index 00000000..cb9c3f10 --- /dev/null +++ b/contrib/ethereum/libethash/ethash/hash_types.hpp @@ -0,0 +1,15 @@ +// ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. +// Copyright 2018 Pawel Bylica. +// Licensed under the Apache License, Version 2.0. See the LICENSE file. + +#pragma once + +#include + +namespace ethash +{ +using hash256 = ethash_hash256; +using hash512 = ethash_hash512; +using hash1024 = ethash_hash1024; +using hash2048 = ethash_hash2048; +} // namespace ethash diff --git a/contrib/ethereum/libethash/ethash/keccak.h b/contrib/ethereum/libethash/ethash/keccak.h new file mode 100644 index 00000000..e1414b84 --- /dev/null +++ b/contrib/ethereum/libethash/ethash/keccak.h @@ -0,0 +1,49 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#pragma once + +#include + +#include + +#ifdef __cplusplus +#define NOEXCEPT noexcept +#else +#define NOEXCEPT +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The Keccak-f[1600] function. + * + * The implementation of the Keccak-f function with 1600-bit width of the permutation (b). + * The size of the state is also 1600 bit what gives 25 64-bit words. + * + * @param state The state of 25 64-bit words on which the permutation is to be performed. + */ +void ethash_keccakf1600(uint64_t state[25]) NOEXCEPT; + +/** + * The Keccak-f[800] function. + * + * The implementation of the Keccak-f function with 800-bit width of the permutation (b). + * The size of the state is also 800 bit what gives 25 32-bit words. + * + * @param state The state of 25 32-bit words on which the permutation is to be performed. + */ +void ethash_keccakf800(uint32_t state[25]) NOEXCEPT; + +union ethash_hash256 ethash_keccak256(const uint8_t* data, size_t size) NOEXCEPT; +union ethash_hash256 ethash_keccak256_32(const uint8_t data[32]) NOEXCEPT; +union ethash_hash512 ethash_keccak512(const uint8_t* data, size_t size) NOEXCEPT; +union ethash_hash512 ethash_keccak512_64(const uint8_t data[64]) NOEXCEPT; + +#ifdef __cplusplus +} +#endif diff --git a/contrib/ethereum/libethash/ethash/keccak.hpp b/contrib/ethereum/libethash/ethash/keccak.hpp new file mode 100644 index 00000000..9dbc6aaa --- /dev/null +++ b/contrib/ethereum/libethash/ethash/keccak.hpp @@ -0,0 +1,35 @@ +// ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. +// Copyright 2018 Pawel Bylica. +// Licensed under the Apache License, Version 2.0. See the LICENSE file. + +#pragma once + +#include +#include + +namespace ethash +{ +inline hash256 keccak256(const uint8_t* data, size_t size) noexcept +{ + return ethash_keccak256(data, size); +} + +inline hash256 keccak256(const hash256& input) noexcept +{ + return ethash_keccak256_32(input.bytes); +} + +inline hash512 keccak512(const uint8_t* data, size_t size) noexcept +{ + return ethash_keccak512(data, size); +} + +inline hash512 keccak512(const hash512& input) noexcept +{ + return ethash_keccak512_64(input.bytes); +} + +static constexpr auto keccak256_32 = ethash_keccak256_32; +static constexpr auto keccak512_64 = ethash_keccak512_64; + +} // namespace ethash diff --git a/contrib/ethereum/libethash/ethash/progpow.hpp b/contrib/ethereum/libethash/ethash/progpow.hpp new file mode 100644 index 00000000..81e6dbaa --- /dev/null +++ b/contrib/ethereum/libethash/ethash/progpow.hpp @@ -0,0 +1,47 @@ +// ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. +// Copyright 2018 Pawel Bylica. +// Licensed under the Apache License, Version 2.0. See the LICENSE file. + +/// @file +/// +/// ProgPoW API +/// +/// This file provides the public API for ProgPoW as the Ethash API extension. + +#include + +namespace progpow +{ +using namespace ethash; // Include ethash namespace. + + +/// The ProgPoW algorithm revision implemented as specified in the spec +/// https://github.com/ifdefelse/ProgPOW#change-history. +constexpr auto revision = "0.9.2"; + +constexpr int period_length = 50; +constexpr uint32_t num_regs = 32; +constexpr size_t num_lanes = 16; +constexpr int num_cache_accesses = 12; +constexpr int num_math_operations = 20; +constexpr size_t l1_cache_size = 16 * 1024; +constexpr size_t l1_cache_num_items = l1_cache_size / sizeof(uint32_t); + +result hash(const epoch_context& context, int block_number, const hash256& header_hash, + uint64_t nonce) noexcept; + +result hash(const epoch_context_full& context, int block_number, const hash256& header_hash, + uint64_t nonce) noexcept; + +bool verify(const epoch_context& context, int block_number, const hash256& header_hash, + const hash256& mix_hash, uint64_t nonce, const hash256& boundary) noexcept; + +search_result search_light(const epoch_context& context, int block_number, + const hash256& header_hash, const hash256& boundary, uint64_t start_nonce, + size_t iterations) noexcept; + +search_result search(const epoch_context_full& context, int block_number, + const hash256& header_hash, const hash256& boundary, uint64_t start_nonce, + size_t iterations) noexcept; + +} // namespace progpow diff --git a/contrib/ethereum/libethash/ethash/version.h b/contrib/ethereum/libethash/ethash/version.h new file mode 100644 index 00000000..f0372b0d --- /dev/null +++ b/contrib/ethereum/libethash/ethash/version.h @@ -0,0 +1,18 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2019 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. + */ + +#pragma once + +/** The ethash library version. */ +#define ETHASH_VERSION "0.4.3" + +#ifdef __cplusplus +namespace ethash +{ +/// The ethash library version. +constexpr auto version = ETHASH_VERSION; + +} // namespace ethash +#endif diff --git a/contrib/ethereum/libethash/keccak.c b/contrib/ethereum/libethash/keccak.c new file mode 100644 index 00000000..4c0b4caa --- /dev/null +++ b/contrib/ethereum/libethash/keccak.c @@ -0,0 +1,123 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#include + +#include "support/attributes.h" +#include + +#if _WIN32 +/* On Windows assume little endian. */ +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __BYTE_ORDER __LITTLE_ENDIAN +#elif __APPLE__ +#include +#else +#include +#endif + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define to_le64(X) X +#else +#define to_le64(X) __builtin_bswap64(X) +#endif + + +/** Loads 64-bit integer from given memory location as little-endian number. */ +static INLINE ALWAYS_INLINE uint64_t load_le(const uint8_t* data) +{ + /* memcpy is the best way of expressing the intention. Every compiler will + optimize is to single load instruction if the target architecture + supports unaligned memory access (GCC and clang even in O0). + This is great trick because we are violating C/C++ memory alignment + restrictions with no performance penalty. */ + uint64_t word; + memcpy(&word, data, sizeof(word)); + return to_le64(word); +} + +static INLINE ALWAYS_INLINE void keccak( + uint64_t* out, size_t bits, const uint8_t* data, size_t size) +{ + static const size_t word_size = sizeof(uint64_t); + const size_t hash_size = bits / 8; + const size_t block_size = (1600 - bits * 2) / 8; + + size_t i; + uint64_t* state_iter; + uint64_t last_word = 0; + uint8_t* last_word_iter = (uint8_t*)&last_word; + + uint64_t state[25] = {0}; + + while (size >= block_size) + { + for (i = 0; i < (block_size / word_size); ++i) + { + state[i] ^= load_le(data); + data += word_size; + } + + ethash_keccakf1600(state); + + size -= block_size; + } + + state_iter = state; + + while (size >= word_size) + { + *state_iter ^= load_le(data); + ++state_iter; + data += word_size; + size -= word_size; + } + + while (size > 0) + { + *last_word_iter = *data; + ++last_word_iter; + ++data; + --size; + } + *last_word_iter = 0x01; + *state_iter ^= to_le64(last_word); + + state[(block_size / word_size) - 1] ^= 0x8000000000000000; + + ethash_keccakf1600(state); + + for (i = 0; i < (hash_size / word_size); ++i) + out[i] = to_le64(state[i]); +} + +union ethash_hash256 ethash_keccak256(const uint8_t* data, size_t size) +{ + union ethash_hash256 hash; + keccak(hash.word64s, 256, data, size); + return hash; +} + +union ethash_hash256 ethash_keccak256_32(const uint8_t data[32]) +{ + union ethash_hash256 hash; + keccak(hash.word64s, 256, data, 32); + return hash; +} + +union ethash_hash512 ethash_keccak512(const uint8_t* data, size_t size) +{ + union ethash_hash512 hash; + keccak(hash.word64s, 512, data, size); + return hash; +} + +union ethash_hash512 ethash_keccak512_64(const uint8_t data[64]) +{ + union ethash_hash512 hash; + keccak(hash.word64s, 512, data, 64); + return hash; +} diff --git a/contrib/ethereum/libethash/keccakf1600.c b/contrib/ethereum/libethash/keccakf1600.c new file mode 100644 index 00000000..271fe76d --- /dev/null +++ b/contrib/ethereum/libethash/keccakf1600.c @@ -0,0 +1,255 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#include + +static uint64_t rol(uint64_t x, unsigned s) +{ + return (x << s) | (x >> (64 - s)); +} + +static const uint64_t round_constants[24] = { + 0x0000000000000001, + 0x0000000000008082, + 0x800000000000808a, + 0x8000000080008000, + 0x000000000000808b, + 0x0000000080000001, + 0x8000000080008081, + 0x8000000000008009, + 0x000000000000008a, + 0x0000000000000088, + 0x0000000080008009, + 0x000000008000000a, + 0x000000008000808b, + 0x800000000000008b, + 0x8000000000008089, + 0x8000000000008003, + 0x8000000000008002, + 0x8000000000000080, + 0x000000000000800a, + 0x800000008000000a, + 0x8000000080008081, + 0x8000000000008080, + 0x0000000080000001, + 0x8000000080008008, +}; + +void ethash_keccakf1600(uint64_t state[25]) +{ + /* The implementation based on the "simple" implementation by Ronny Van Keer. */ + + int round; + + uint64_t Aba, Abe, Abi, Abo, Abu; + uint64_t Aga, Age, Agi, Ago, Agu; + uint64_t Aka, Ake, Aki, Ako, Aku; + uint64_t Ama, Ame, Ami, Amo, Amu; + uint64_t Asa, Ase, Asi, Aso, Asu; + + uint64_t Eba, Ebe, Ebi, Ebo, Ebu; + uint64_t Ega, Ege, Egi, Ego, Egu; + uint64_t Eka, Eke, Eki, Eko, Eku; + uint64_t Ema, Eme, Emi, Emo, Emu; + uint64_t Esa, Ese, Esi, Eso, Esu; + + uint64_t Ba, Be, Bi, Bo, Bu; + + uint64_t Da, De, Di, Do, Du; + + Aba = state[0]; + Abe = state[1]; + Abi = state[2]; + Abo = state[3]; + Abu = state[4]; + Aga = state[5]; + Age = state[6]; + Agi = state[7]; + Ago = state[8]; + Agu = state[9]; + Aka = state[10]; + Ake = state[11]; + Aki = state[12]; + Ako = state[13]; + Aku = state[14]; + Ama = state[15]; + Ame = state[16]; + Ami = state[17]; + Amo = state[18]; + Amu = state[19]; + Asa = state[20]; + Ase = state[21]; + Asi = state[22]; + Aso = state[23]; + Asu = state[24]; + + for (round = 0; round < 24; round += 2) + { + /* Round (round + 0): Axx -> Exx */ + + Ba = Aba ^ Aga ^ Aka ^ Ama ^ Asa; + Be = Abe ^ Age ^ Ake ^ Ame ^ Ase; + Bi = Abi ^ Agi ^ Aki ^ Ami ^ Asi; + Bo = Abo ^ Ago ^ Ako ^ Amo ^ Aso; + Bu = Abu ^ Agu ^ Aku ^ Amu ^ Asu; + + Da = Bu ^ rol(Be, 1); + De = Ba ^ rol(Bi, 1); + Di = Be ^ rol(Bo, 1); + Do = Bi ^ rol(Bu, 1); + Du = Bo ^ rol(Ba, 1); + + Ba = Aba ^ Da; + Be = rol(Age ^ De, 44); + Bi = rol(Aki ^ Di, 43); + Bo = rol(Amo ^ Do, 21); + Bu = rol(Asu ^ Du, 14); + Eba = Ba ^ (~Be & Bi) ^ round_constants[round]; + Ebe = Be ^ (~Bi & Bo); + Ebi = Bi ^ (~Bo & Bu); + Ebo = Bo ^ (~Bu & Ba); + Ebu = Bu ^ (~Ba & Be); + + Ba = rol(Abo ^ Do, 28); + Be = rol(Agu ^ Du, 20); + Bi = rol(Aka ^ Da, 3); + Bo = rol(Ame ^ De, 45); + Bu = rol(Asi ^ Di, 61); + Ega = Ba ^ (~Be & Bi); + Ege = Be ^ (~Bi & Bo); + Egi = Bi ^ (~Bo & Bu); + Ego = Bo ^ (~Bu & Ba); + Egu = Bu ^ (~Ba & Be); + + Ba = rol(Abe ^ De, 1); + Be = rol(Agi ^ Di, 6); + Bi = rol(Ako ^ Do, 25); + Bo = rol(Amu ^ Du, 8); + Bu = rol(Asa ^ Da, 18); + Eka = Ba ^ (~Be & Bi); + Eke = Be ^ (~Bi & Bo); + Eki = Bi ^ (~Bo & Bu); + Eko = Bo ^ (~Bu & Ba); + Eku = Bu ^ (~Ba & Be); + + Ba = rol(Abu ^ Du, 27); + Be = rol(Aga ^ Da, 36); + Bi = rol(Ake ^ De, 10); + Bo = rol(Ami ^ Di, 15); + Bu = rol(Aso ^ Do, 56); + Ema = Ba ^ (~Be & Bi); + Eme = Be ^ (~Bi & Bo); + Emi = Bi ^ (~Bo & Bu); + Emo = Bo ^ (~Bu & Ba); + Emu = Bu ^ (~Ba & Be); + + Ba = rol(Abi ^ Di, 62); + Be = rol(Ago ^ Do, 55); + Bi = rol(Aku ^ Du, 39); + Bo = rol(Ama ^ Da, 41); + Bu = rol(Ase ^ De, 2); + Esa = Ba ^ (~Be & Bi); + Ese = Be ^ (~Bi & Bo); + Esi = Bi ^ (~Bo & Bu); + Eso = Bo ^ (~Bu & Ba); + Esu = Bu ^ (~Ba & Be); + + + /* Round (round + 1): Exx -> Axx */ + + Ba = Eba ^ Ega ^ Eka ^ Ema ^ Esa; + Be = Ebe ^ Ege ^ Eke ^ Eme ^ Ese; + Bi = Ebi ^ Egi ^ Eki ^ Emi ^ Esi; + Bo = Ebo ^ Ego ^ Eko ^ Emo ^ Eso; + Bu = Ebu ^ Egu ^ Eku ^ Emu ^ Esu; + + Da = Bu ^ rol(Be, 1); + De = Ba ^ rol(Bi, 1); + Di = Be ^ rol(Bo, 1); + Do = Bi ^ rol(Bu, 1); + Du = Bo ^ rol(Ba, 1); + + Ba = Eba ^ Da; + Be = rol(Ege ^ De, 44); + Bi = rol(Eki ^ Di, 43); + Bo = rol(Emo ^ Do, 21); + Bu = rol(Esu ^ Du, 14); + Aba = Ba ^ (~Be & Bi) ^ round_constants[round + 1]; + Abe = Be ^ (~Bi & Bo); + Abi = Bi ^ (~Bo & Bu); + Abo = Bo ^ (~Bu & Ba); + Abu = Bu ^ (~Ba & Be); + + Ba = rol(Ebo ^ Do, 28); + Be = rol(Egu ^ Du, 20); + Bi = rol(Eka ^ Da, 3); + Bo = rol(Eme ^ De, 45); + Bu = rol(Esi ^ Di, 61); + Aga = Ba ^ (~Be & Bi); + Age = Be ^ (~Bi & Bo); + Agi = Bi ^ (~Bo & Bu); + Ago = Bo ^ (~Bu & Ba); + Agu = Bu ^ (~Ba & Be); + + Ba = rol(Ebe ^ De, 1); + Be = rol(Egi ^ Di, 6); + Bi = rol(Eko ^ Do, 25); + Bo = rol(Emu ^ Du, 8); + Bu = rol(Esa ^ Da, 18); + Aka = Ba ^ (~Be & Bi); + Ake = Be ^ (~Bi & Bo); + Aki = Bi ^ (~Bo & Bu); + Ako = Bo ^ (~Bu & Ba); + Aku = Bu ^ (~Ba & Be); + + Ba = rol(Ebu ^ Du, 27); + Be = rol(Ega ^ Da, 36); + Bi = rol(Eke ^ De, 10); + Bo = rol(Emi ^ Di, 15); + Bu = rol(Eso ^ Do, 56); + Ama = Ba ^ (~Be & Bi); + Ame = Be ^ (~Bi & Bo); + Ami = Bi ^ (~Bo & Bu); + Amo = Bo ^ (~Bu & Ba); + Amu = Bu ^ (~Ba & Be); + + Ba = rol(Ebi ^ Di, 62); + Be = rol(Ego ^ Do, 55); + Bi = rol(Eku ^ Du, 39); + Bo = rol(Ema ^ Da, 41); + Bu = rol(Ese ^ De, 2); + Asa = Ba ^ (~Be & Bi); + Ase = Be ^ (~Bi & Bo); + Asi = Bi ^ (~Bo & Bu); + Aso = Bo ^ (~Bu & Ba); + Asu = Bu ^ (~Ba & Be); + } + + state[0] = Aba; + state[1] = Abe; + state[2] = Abi; + state[3] = Abo; + state[4] = Abu; + state[5] = Aga; + state[6] = Age; + state[7] = Agi; + state[8] = Ago; + state[9] = Agu; + state[10] = Aka; + state[11] = Ake; + state[12] = Aki; + state[13] = Ako; + state[14] = Aku; + state[15] = Ama; + state[16] = Ame; + state[17] = Ami; + state[18] = Amo; + state[19] = Amu; + state[20] = Asa; + state[21] = Ase; + state[22] = Asi; + state[23] = Aso; + state[24] = Asu; +} diff --git a/contrib/ethereum/libethash/keccakf800.c b/contrib/ethereum/libethash/keccakf800.c new file mode 100644 index 00000000..aa7cceef --- /dev/null +++ b/contrib/ethereum/libethash/keccakf800.c @@ -0,0 +1,253 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#include + +static uint32_t rol(uint32_t x, unsigned s) +{ + return (x << s) | (x >> (32 - s)); +} + +static const uint32_t round_constants[22] = { + 0x00000001, + 0x00008082, + 0x0000808A, + 0x80008000, + 0x0000808B, + 0x80000001, + 0x80008081, + 0x00008009, + 0x0000008A, + 0x00000088, + 0x80008009, + 0x8000000A, + 0x8000808B, + 0x0000008B, + 0x00008089, + 0x00008003, + 0x00008002, + 0x00000080, + 0x0000800A, + 0x8000000A, + 0x80008081, + 0x00008080, +}; + +void ethash_keccakf800(uint32_t state[25]) +{ + /* The implementation directly translated from ethash_keccakf1600. */ + + int round; + + uint32_t Aba, Abe, Abi, Abo, Abu; + uint32_t Aga, Age, Agi, Ago, Agu; + uint32_t Aka, Ake, Aki, Ako, Aku; + uint32_t Ama, Ame, Ami, Amo, Amu; + uint32_t Asa, Ase, Asi, Aso, Asu; + + uint32_t Eba, Ebe, Ebi, Ebo, Ebu; + uint32_t Ega, Ege, Egi, Ego, Egu; + uint32_t Eka, Eke, Eki, Eko, Eku; + uint32_t Ema, Eme, Emi, Emo, Emu; + uint32_t Esa, Ese, Esi, Eso, Esu; + + uint32_t Ba, Be, Bi, Bo, Bu; + + uint32_t Da, De, Di, Do, Du; + + Aba = state[0]; + Abe = state[1]; + Abi = state[2]; + Abo = state[3]; + Abu = state[4]; + Aga = state[5]; + Age = state[6]; + Agi = state[7]; + Ago = state[8]; + Agu = state[9]; + Aka = state[10]; + Ake = state[11]; + Aki = state[12]; + Ako = state[13]; + Aku = state[14]; + Ama = state[15]; + Ame = state[16]; + Ami = state[17]; + Amo = state[18]; + Amu = state[19]; + Asa = state[20]; + Ase = state[21]; + Asi = state[22]; + Aso = state[23]; + Asu = state[24]; + + for (round = 0; round < 22; round += 2) + { + /* Round (round + 0): Axx -> Exx */ + + Ba = Aba ^ Aga ^ Aka ^ Ama ^ Asa; + Be = Abe ^ Age ^ Ake ^ Ame ^ Ase; + Bi = Abi ^ Agi ^ Aki ^ Ami ^ Asi; + Bo = Abo ^ Ago ^ Ako ^ Amo ^ Aso; + Bu = Abu ^ Agu ^ Aku ^ Amu ^ Asu; + + Da = Bu ^ rol(Be, 1); + De = Ba ^ rol(Bi, 1); + Di = Be ^ rol(Bo, 1); + Do = Bi ^ rol(Bu, 1); + Du = Bo ^ rol(Ba, 1); + + Ba = Aba ^ Da; + Be = rol(Age ^ De, 12); + Bi = rol(Aki ^ Di, 11); + Bo = rol(Amo ^ Do, 21); + Bu = rol(Asu ^ Du, 14); + Eba = Ba ^ (~Be & Bi) ^ round_constants[round]; + Ebe = Be ^ (~Bi & Bo); + Ebi = Bi ^ (~Bo & Bu); + Ebo = Bo ^ (~Bu & Ba); + Ebu = Bu ^ (~Ba & Be); + + Ba = rol(Abo ^ Do, 28); + Be = rol(Agu ^ Du, 20); + Bi = rol(Aka ^ Da, 3); + Bo = rol(Ame ^ De, 13); + Bu = rol(Asi ^ Di, 29); + Ega = Ba ^ (~Be & Bi); + Ege = Be ^ (~Bi & Bo); + Egi = Bi ^ (~Bo & Bu); + Ego = Bo ^ (~Bu & Ba); + Egu = Bu ^ (~Ba & Be); + + Ba = rol(Abe ^ De, 1); + Be = rol(Agi ^ Di, 6); + Bi = rol(Ako ^ Do, 25); + Bo = rol(Amu ^ Du, 8); + Bu = rol(Asa ^ Da, 18); + Eka = Ba ^ (~Be & Bi); + Eke = Be ^ (~Bi & Bo); + Eki = Bi ^ (~Bo & Bu); + Eko = Bo ^ (~Bu & Ba); + Eku = Bu ^ (~Ba & Be); + + Ba = rol(Abu ^ Du, 27); + Be = rol(Aga ^ Da, 4); + Bi = rol(Ake ^ De, 10); + Bo = rol(Ami ^ Di, 15); + Bu = rol(Aso ^ Do, 24); + Ema = Ba ^ (~Be & Bi); + Eme = Be ^ (~Bi & Bo); + Emi = Bi ^ (~Bo & Bu); + Emo = Bo ^ (~Bu & Ba); + Emu = Bu ^ (~Ba & Be); + + Ba = rol(Abi ^ Di, 30); + Be = rol(Ago ^ Do, 23); + Bi = rol(Aku ^ Du, 7); + Bo = rol(Ama ^ Da, 9); + Bu = rol(Ase ^ De, 2); + Esa = Ba ^ (~Be & Bi); + Ese = Be ^ (~Bi & Bo); + Esi = Bi ^ (~Bo & Bu); + Eso = Bo ^ (~Bu & Ba); + Esu = Bu ^ (~Ba & Be); + + + /* Round (round + 1): Exx -> Axx */ + + Ba = Eba ^ Ega ^ Eka ^ Ema ^ Esa; + Be = Ebe ^ Ege ^ Eke ^ Eme ^ Ese; + Bi = Ebi ^ Egi ^ Eki ^ Emi ^ Esi; + Bo = Ebo ^ Ego ^ Eko ^ Emo ^ Eso; + Bu = Ebu ^ Egu ^ Eku ^ Emu ^ Esu; + + Da = Bu ^ rol(Be, 1); + De = Ba ^ rol(Bi, 1); + Di = Be ^ rol(Bo, 1); + Do = Bi ^ rol(Bu, 1); + Du = Bo ^ rol(Ba, 1); + + Ba = Eba ^ Da; + Be = rol(Ege ^ De, 12); + Bi = rol(Eki ^ Di, 11); + Bo = rol(Emo ^ Do, 21); + Bu = rol(Esu ^ Du, 14); + Aba = Ba ^ (~Be & Bi) ^ round_constants[round + 1]; + Abe = Be ^ (~Bi & Bo); + Abi = Bi ^ (~Bo & Bu); + Abo = Bo ^ (~Bu & Ba); + Abu = Bu ^ (~Ba & Be); + + Ba = rol(Ebo ^ Do, 28); + Be = rol(Egu ^ Du, 20); + Bi = rol(Eka ^ Da, 3); + Bo = rol(Eme ^ De, 13); + Bu = rol(Esi ^ Di, 29); + Aga = Ba ^ (~Be & Bi); + Age = Be ^ (~Bi & Bo); + Agi = Bi ^ (~Bo & Bu); + Ago = Bo ^ (~Bu & Ba); + Agu = Bu ^ (~Ba & Be); + + Ba = rol(Ebe ^ De, 1); + Be = rol(Egi ^ Di, 6); + Bi = rol(Eko ^ Do, 25); + Bo = rol(Emu ^ Du, 8); + Bu = rol(Esa ^ Da, 18); + Aka = Ba ^ (~Be & Bi); + Ake = Be ^ (~Bi & Bo); + Aki = Bi ^ (~Bo & Bu); + Ako = Bo ^ (~Bu & Ba); + Aku = Bu ^ (~Ba & Be); + + Ba = rol(Ebu ^ Du, 27); + Be = rol(Ega ^ Da, 4); + Bi = rol(Eke ^ De, 10); + Bo = rol(Emi ^ Di, 15); + Bu = rol(Eso ^ Do, 24); + Ama = Ba ^ (~Be & Bi); + Ame = Be ^ (~Bi & Bo); + Ami = Bi ^ (~Bo & Bu); + Amo = Bo ^ (~Bu & Ba); + Amu = Bu ^ (~Ba & Be); + + Ba = rol(Ebi ^ Di, 30); + Be = rol(Ego ^ Do, 23); + Bi = rol(Eku ^ Du, 7); + Bo = rol(Ema ^ Da, 9); + Bu = rol(Ese ^ De, 2); + Asa = Ba ^ (~Be & Bi); + Ase = Be ^ (~Bi & Bo); + Asi = Bi ^ (~Bo & Bu); + Aso = Bo ^ (~Bu & Ba); + Asu = Bu ^ (~Ba & Be); + } + + state[0] = Aba; + state[1] = Abe; + state[2] = Abi; + state[3] = Abo; + state[4] = Abu; + state[5] = Aga; + state[6] = Age; + state[7] = Agi; + state[8] = Ago; + state[9] = Agu; + state[10] = Aka; + state[11] = Ake; + state[12] = Aki; + state[13] = Ako; + state[14] = Aku; + state[15] = Ama; + state[16] = Ame; + state[17] = Ami; + state[18] = Amo; + state[19] = Amu; + state[20] = Asa; + state[21] = Ase; + state[22] = Asi; + state[23] = Aso; + state[24] = Asu; +} diff --git a/contrib/ethereum/libethash/kiss99.hpp b/contrib/ethereum/libethash/kiss99.hpp new file mode 100644 index 00000000..8550b82e --- /dev/null +++ b/contrib/ethereum/libethash/kiss99.hpp @@ -0,0 +1,64 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#pragma once + +#include "support/attributes.h" +#include + +/** + * KISS PRNG by the spec from 1999. + * + * The implementation of KISS pseudo-random number generator + * by the specification published on 21 Jan 1999 in + * http://www.cse.yorku.ca/~oz/marsaglia-rng.html. + * The KISS is not versioned so here we are using `kiss99` prefix to indicate + * the version from 1999. + * + * The specification uses `unsigned long` type with the intention for 32-bit + * values. Because in GCC/clang for 64-bit architectures `unsigned long` is + * 64-bit size type, here the explicit `uint32_t` type is used. + * + * @defgroup kiss99 KISS99 + * @{ + */ + +/** + * The KISS generator. + */ +class kiss99 +{ + uint32_t z = 362436069; + uint32_t w = 521288629; + uint32_t jsr = 123456789; + uint32_t jcong = 380116160; + +public: + /** Creates KISS generator state with default values provided by the specification. */ + kiss99() noexcept = default; + + /** Creates KISS generator state with provided init values.*/ + kiss99(uint32_t z, uint32_t w, uint32_t jsr, uint32_t jcong) noexcept + : z{z}, w{w}, jsr{jsr}, jcong{jcong} + {} + + /** Generates next number from the KISS generator. */ + NO_SANITIZE("unsigned-integer-overflow") + uint32_t operator()() noexcept + { + z = 36969 * (z & 0xffff) + (z >> 16); + w = 18000 * (w & 0xffff) + (w >> 16); + + jcong = 69069 * jcong + 1234567; + + jsr ^= (jsr << 17); + jsr ^= (jsr >> 13); + jsr ^= (jsr << 5); + + return (((z << 16) + w) ^ jcong) + jsr; + } +}; + +/** @} */ diff --git a/contrib/ethereum/libethash/managed.cpp b/contrib/ethereum/libethash/managed.cpp new file mode 100644 index 00000000..900da7e7 --- /dev/null +++ b/contrib/ethereum/libethash/managed.cpp @@ -0,0 +1,100 @@ +// ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. +// Copyright 2018 Pawel Bylica. +// Licensed under the Apache License, Version 2.0. See the LICENSE file. + +#include "ethash-internal.hpp" + +#include +#include + +#if !defined(__has_cpp_attribute) +#define __has_cpp_attribute(x) 0 +#endif + +#if __has_cpp_attribute(gnu::noinline) +#define ATTRIBUTE_NOINLINE [[gnu::noinline]] +#elif _MSC_VER +#define ATTRIBUTE_NOINLINE __declspec(noinline) +#else +#define ATTRIBUTE_NOINLINE +#endif + +namespace ethash +{ +namespace +{ +std::mutex shared_context_mutex; +std::shared_ptr shared_context; +thread_local std::shared_ptr thread_local_context; + +std::mutex shared_context_full_mutex; +std::shared_ptr shared_context_full; +thread_local std::shared_ptr thread_local_context_full; + +/// Update thread local epoch context. +/// +/// This function is on the slow path. It's separated to allow inlining the fast +/// path. +/// +/// @todo: Redesign to guarantee deallocation before new allocation. +ATTRIBUTE_NOINLINE +void update_local_context(int epoch_number) +{ + // Release the shared pointer of the obsoleted context. + thread_local_context.reset(); + + // Local context invalid, check the shared context. + std::lock_guard lock{shared_context_mutex}; + + if (!shared_context || shared_context->epoch_number != epoch_number) + { + // Release the shared pointer of the obsoleted context. + shared_context.reset(); + + // Build new context. + shared_context = create_epoch_context(epoch_number); + } + + thread_local_context = shared_context; +} + +ATTRIBUTE_NOINLINE +void update_local_context_full(int epoch_number) +{ + // Release the shared pointer of the obsoleted context. + thread_local_context_full.reset(); + + // Local context invalid, check the shared context. + std::lock_guard lock{shared_context_full_mutex}; + + if (!shared_context_full || shared_context_full->epoch_number != epoch_number) + { + // Release the shared pointer of the obsoleted context. + shared_context_full.reset(); + + // Build new context. + shared_context_full = create_epoch_context_full(epoch_number); + } + + thread_local_context_full = shared_context_full; +} +} // namespace + +const epoch_context& get_global_epoch_context(int epoch_number) +{ + // Check if local context matches epoch number. + if (!thread_local_context || thread_local_context->epoch_number != epoch_number) + update_local_context(epoch_number); + + return *thread_local_context; +} + +const epoch_context_full& get_global_epoch_context_full(int epoch_number) +{ + // Check if local context matches epoch number. + if (!thread_local_context_full || thread_local_context_full->epoch_number != epoch_number) + update_local_context_full(epoch_number); + + return *thread_local_context_full; +} +} // namespace ethash diff --git a/contrib/ethereum/libethash/primes.c b/contrib/ethereum/libethash/primes.c new file mode 100644 index 00000000..2d58874b --- /dev/null +++ b/contrib/ethereum/libethash/primes.c @@ -0,0 +1,43 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#include "primes.h" + +/** Checks if the number is prime. Requires the number to be > 2 and odd. */ +static int is_odd_prime(int number) +{ + int d; + + /* Check factors up to sqrt(number). + To avoid computing sqrt, compare d*d <= number with 64-bit precision. */ + for (d = 3; (int64_t)d * (int64_t)d <= (int64_t)number; d += 2) + { + if (number % d == 0) + return 0; + } + + return 1; +} + +int ethash_find_largest_prime(int upper_bound) +{ + int n = upper_bound; + + if (n < 2) + return 0; + + if (n == 2) + return 2; + + /* If even number, skip it. */ + if (n % 2 == 0) + --n; + + /* Test descending odd numbers. */ + while (!is_odd_prime(n)) + n -= 2; + + return n; +} diff --git a/contrib/ethereum/libethash/primes.h b/contrib/ethereum/libethash/primes.h new file mode 100644 index 00000000..cf923b01 --- /dev/null +++ b/contrib/ethereum/libethash/primes.h @@ -0,0 +1,25 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Finds the largest prime number not greater than the provided upper bound. + * + * @param upper_bound The upper bound. SHOULD be greater than 1. + * @return The largest prime number `p` such `p <= upper_bound`. + * In case `upper_bound <= 1`, returns 0. + */ +int ethash_find_largest_prime(int upper_bound) NOEXCEPT; + +#ifdef __cplusplus +} +#endif diff --git a/contrib/ethereum/libethash/progpow.cpp b/contrib/ethereum/libethash/progpow.cpp new file mode 100644 index 00000000..fd709e8f --- /dev/null +++ b/contrib/ethereum/libethash/progpow.cpp @@ -0,0 +1,360 @@ +// ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. +// Copyright 2018 Pawel Bylica. +// Licensed under the Apache License, Version 2.0. See the LICENSE file. + +#include + +#include "bit_manipulation.h" +#include "endianness.hpp" +#include "ethash-internal.hpp" +#include "kiss99.hpp" +#include + +#include + +namespace progpow +{ +namespace +{ +/// A variant of Keccak hash function for ProgPoW. +/// +/// This Keccak hash function uses 800-bit permutation (Keccak-f[800]) with 576 bitrate. +/// It take exactly 576 bits of input (split across 3 arguments) and adds no padding. +/// +/// @param header_hash The 256-bit header hash. +/// @param nonce The 64-bit nonce. +/// @param mix_hash Additional 256-bits of data. +/// @return The 256-bit output of the hash function. +hash256 keccak_progpow_256( + const hash256& header_hash, uint64_t nonce, const hash256& mix_hash) noexcept +{ + static constexpr size_t num_words = + sizeof(header_hash.word32s) / sizeof(header_hash.word32s[0]); + + uint32_t state[25] = {}; + + size_t i; + for (i = 0; i < num_words; ++i) + state[i] = le::uint32(header_hash.word32s[i]); + + state[i++] = static_cast(nonce); + state[i++] = static_cast(nonce >> 32); + + for (uint32_t mix_word : mix_hash.word32s) + state[i++] = le::uint32(mix_word); + + ethash_keccakf800(state); + + hash256 output; + for (i = 0; i < num_words; ++i) + output.word32s[i] = le::uint32(state[i]); + return output; +} + +/// The same as keccak_progpow_256() but uses null mix +/// and returns top 64 bits of the output being a big-endian prefix of the 256-bit hash. +inline uint64_t keccak_progpow_64(const hash256& header_hash, uint64_t nonce) noexcept +{ + const hash256 h = keccak_progpow_256(header_hash, nonce, {}); + return be::uint64(h.word64s[0]); +} + + +/// ProgPoW mix RNG state. +/// +/// Encapsulates the state of the random number generator used in computing ProgPoW mix. +/// This includes the state of the KISS99 RNG and the precomputed random permutation of the +/// sequence of mix item indexes. +class mix_rng_state +{ +public: + inline explicit mix_rng_state(uint64_t seed) noexcept; + + uint32_t next_dst() noexcept { return dst_seq[(dst_counter++) % num_regs]; } + uint32_t next_src() noexcept { return src_seq[(src_counter++) % num_regs]; } + + kiss99 rng; + +private: + size_t dst_counter = 0; + std::array dst_seq; + size_t src_counter = 0; + std::array src_seq; +}; + +mix_rng_state::mix_rng_state(uint64_t seed) noexcept +{ + const auto seed_lo = static_cast(seed); + const auto seed_hi = static_cast(seed >> 32); + + const auto z = fnv1a(fnv_offset_basis, seed_lo); + const auto w = fnv1a(z, seed_hi); + const auto jsr = fnv1a(w, seed_lo); + const auto jcong = fnv1a(jsr, seed_hi); + + rng = kiss99{z, w, jsr, jcong}; + + // Create random permutations of mix destinations / sources. + // Uses Fisher-Yates shuffle. + for (uint32_t i = 0; i < num_regs; ++i) + { + dst_seq[i] = i; + src_seq[i] = i; + } + + for (uint32_t i = num_regs; i > 1; --i) + { + std::swap(dst_seq[i - 1], dst_seq[rng() % i]); + std::swap(src_seq[i - 1], src_seq[rng() % i]); + } +} + + +NO_SANITIZE("unsigned-integer-overflow") +inline uint32_t random_math(uint32_t a, uint32_t b, uint32_t selector) noexcept +{ + switch (selector % 11) + { + default: + case 0: + return a + b; + case 1: + return a * b; + case 2: + return mul_hi32(a, b); + case 3: + return std::min(a, b); + case 4: + return rotl32(a, b); + case 5: + return rotr32(a, b); + case 6: + return a & b; + case 7: + return a | b; + case 8: + return a ^ b; + case 9: + return clz32(a) + clz32(b); + case 10: + return popcount32(a) + popcount32(b); + } +} + +/// Merge data from `b` and `a`. +/// Assuming `a` has high entropy, only do ops that retain entropy even if `b` +/// has low entropy (i.e. do not do `a & b`). +NO_SANITIZE("unsigned-integer-overflow") +inline void random_merge(uint32_t& a, uint32_t b, uint32_t selector) noexcept +{ + const auto x = (selector >> 16) % 31 + 1; // Additional non-zero selector from higher bits. + switch (selector % 4) + { + case 0: + a = (a * 33) + b; + break; + case 1: + a = (a ^ b) * 33; + break; + case 2: + a = rotl32(a, x) ^ b; + break; + case 3: + a = rotr32(a, x) ^ b; + break; + } +} + +using lookup_fn = hash2048 (*)(const epoch_context&, uint32_t); + +using mix_array = std::array, num_lanes>; + +void round( + const epoch_context& context, uint32_t r, mix_array& mix, mix_rng_state state, lookup_fn lookup) +{ + const uint32_t num_items = static_cast(context.full_dataset_num_items / 2); + const uint32_t item_index = mix[r % num_lanes][0] % num_items; + const hash2048 item = lookup(context, item_index); + + constexpr size_t num_words_per_lane = sizeof(item) / (sizeof(uint32_t) * num_lanes); + constexpr int max_operations = + num_cache_accesses > num_math_operations ? num_cache_accesses : num_math_operations; + + // Process lanes. + for (int i = 0; i < max_operations; ++i) + { + if (i < num_cache_accesses) // Random access to cached memory. + { + const auto src = state.next_src(); + const auto dst = state.next_dst(); + const auto sel = state.rng(); + + for (size_t l = 0; l < num_lanes; ++l) + { + const size_t offset = mix[l][src] % l1_cache_num_items; + random_merge(mix[l][dst], le::uint32(context.l1_cache[offset]), sel); + } + } + if (i < num_math_operations) // Random math. + { + // Generate 2 unique source indexes. + const auto src_rnd = state.rng() % (num_regs * (num_regs - 1)); + const auto src1 = src_rnd % num_regs; // O <= src1 < num_regs + auto src2 = src_rnd / num_regs; // 0 <= src2 < num_regs - 1 + if (src2 >= src1) + ++src2; + + const auto sel1 = state.rng(); + const auto dst = state.next_dst(); + const auto sel2 = state.rng(); + + for (size_t l = 0; l < num_lanes; ++l) + { + const uint32_t data = random_math(mix[l][src1], mix[l][src2], sel1); + random_merge(mix[l][dst], data, sel2); + } + } + } + + // DAG access pattern. + uint32_t dsts[num_words_per_lane]; + uint32_t sels[num_words_per_lane]; + for (size_t i = 0; i < num_words_per_lane; ++i) + { + dsts[i] = i == 0 ? 0 : state.next_dst(); + sels[i] = state.rng(); + } + + // DAG access. + for (size_t l = 0; l < num_lanes; ++l) + { + const auto offset = ((l ^ r) % num_lanes) * num_words_per_lane; + for (size_t i = 0; i < num_words_per_lane; ++i) + { + const auto word = le::uint32(item.word32s[offset + i]); + random_merge(mix[l][dsts[i]], word, sels[i]); + } + } +} + +mix_array init_mix(uint64_t seed) +{ + const uint32_t z = fnv1a(fnv_offset_basis, static_cast(seed)); + const uint32_t w = fnv1a(z, static_cast(seed >> 32)); + + mix_array mix; + for (uint32_t l = 0; l < mix.size(); ++l) + { + const uint32_t jsr = fnv1a(w, l); + const uint32_t jcong = fnv1a(jsr, l); + kiss99 rng{z, w, jsr, jcong}; + + for (auto& row : mix[l]) + row = rng(); + } + return mix; +} + +hash256 hash_mix( + const epoch_context& context, int block_number, uint64_t seed, lookup_fn lookup) noexcept +{ + auto mix = init_mix(seed); + mix_rng_state state{uint64_t(block_number / period_length)}; + + for (uint32_t i = 0; i < 64; ++i) + round(context, i, mix, state, lookup); + + // Reduce mix data to a single per-lane result. + uint32_t lane_hash[num_lanes]; + for (size_t l = 0; l < num_lanes; ++l) + { + lane_hash[l] = fnv_offset_basis; + for (uint32_t i = 0; i < num_regs; ++i) + lane_hash[l] = fnv1a(lane_hash[l], mix[l][i]); + } + + // Reduce all lanes to a single 256-bit result. + static constexpr size_t num_words = sizeof(hash256) / sizeof(uint32_t); + hash256 mix_hash; + for (uint32_t& w : mix_hash.word32s) + w = fnv_offset_basis; + for (size_t l = 0; l < num_lanes; ++l) + mix_hash.word32s[l % num_words] = fnv1a(mix_hash.word32s[l % num_words], lane_hash[l]); + return le::uint32s(mix_hash); +} +} // namespace + +result hash(const epoch_context& context, int block_number, const hash256& header_hash, + uint64_t nonce) noexcept +{ + const uint64_t seed = keccak_progpow_64(header_hash, nonce); + const hash256 mix_hash = hash_mix(context, block_number, seed, calculate_dataset_item_2048); + const hash256 final_hash = keccak_progpow_256(header_hash, seed, mix_hash); + return {final_hash, mix_hash}; +} + +result hash(const epoch_context_full& context, int block_number, const hash256& header_hash, + uint64_t nonce) noexcept +{ + static const auto lazy_lookup = [](const epoch_context& context, uint32_t index) noexcept + { + auto* full_dataset_1024 = static_cast(context).full_dataset; + auto* full_dataset_2048 = reinterpret_cast(full_dataset_1024); + hash2048& item = full_dataset_2048[index]; + if (item.word64s[0] == 0) + { + // TODO: Copy elision here makes it thread-safe? + item = calculate_dataset_item_2048(context, index); + } + + return item; + }; + + const uint64_t seed = keccak_progpow_64(header_hash, nonce); + const hash256 mix_hash = hash_mix(context, block_number, seed, lazy_lookup); + const hash256 final_hash = keccak_progpow_256(header_hash, seed, mix_hash); + return {final_hash, mix_hash}; +} + +bool verify(const epoch_context& context, int block_number, const hash256& header_hash, + const hash256& mix_hash, uint64_t nonce, const hash256& boundary) noexcept +{ + const uint64_t seed = keccak_progpow_64(header_hash, nonce); + const hash256 final_hash = keccak_progpow_256(header_hash, seed, mix_hash); + if (!is_less_or_equal(final_hash, boundary)) + return false; + + const hash256 expected_mix_hash = + hash_mix(context, block_number, seed, calculate_dataset_item_2048); + return is_equal(expected_mix_hash, mix_hash); +} + +search_result search_light(const epoch_context& context, int block_number, + const hash256& header_hash, const hash256& boundary, uint64_t start_nonce, + size_t iterations) noexcept +{ + const uint64_t end_nonce = start_nonce + iterations; + for (uint64_t nonce = start_nonce; nonce < end_nonce; ++nonce) + { + result r = hash(context, block_number, header_hash, nonce); + if (is_less_or_equal(r.final_hash, boundary)) + return {r, nonce}; + } + return {}; +} + +search_result search(const epoch_context_full& context, int block_number, + const hash256& header_hash, const hash256& boundary, uint64_t start_nonce, + size_t iterations) noexcept +{ + const uint64_t end_nonce = start_nonce + iterations; + for (uint64_t nonce = start_nonce; nonce < end_nonce; ++nonce) + { + result r = hash(context, block_number, header_hash, nonce); + if (is_less_or_equal(r.final_hash, boundary)) + return {r, nonce}; + } + return {}; +} + +} // namespace progpow diff --git a/contrib/ethereum/libethash/support/attributes.h b/contrib/ethereum/libethash/support/attributes.h new file mode 100644 index 00000000..bb62b8d4 --- /dev/null +++ b/contrib/ethereum/libethash/support/attributes.h @@ -0,0 +1,33 @@ +/* ethash: C/C++ implementation of Ethash, the Ethereum Proof of Work algorithm. + * Copyright 2018 Pawel Bylica. + * Licensed under the Apache License, Version 2.0. See the LICENSE file. + */ + +#pragma once + +/** inline */ +#if _MSC_VER || __STDC_VERSION__ +#define INLINE inline +#else +#define INLINE +#endif + +/** [[always_inline]] */ +#if _MSC_VER +#define ALWAYS_INLINE __forceinline +#elif defined(__has_attribute) && __STDC_VERSION__ +#if __has_attribute(always_inline) +#define ALWAYS_INLINE __attribute__((always_inline)) +#endif +#endif +#if !defined(ALWAYS_INLINE) +#define ALWAYS_INLINE +#endif + +/** [[no_sanitize()]] */ +#if __clang__ +#define NO_SANITIZE(sanitizer) \ + __attribute__((no_sanitize(sanitizer))) +#else +#define NO_SANITIZE(sanitizer) +#endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 20901607..dc39942a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -49,6 +49,7 @@ file(GLOB_RECURSE DAEMON daemon/*) file(GLOB_RECURSE P2P p2p/*) file(GLOB_RECURSE RPC rpc/*) +file(GLOB_RECURSE STRATUM stratum/*) file(GLOB_RECURSE SIMPLEWALLET simplewallet/*) file(GLOB_RECURSE CONN_TOOL connectivity_tool/*) file(GLOB_RECURSE WALLET wallet/*) @@ -73,6 +74,7 @@ source_group(currency_protocol FILES ${CURRENCY_PROTOCOL}) source_group(daemon FILES ${DAEMON}) source_group(p2p FILES ${P2P}) source_group(rpc FILES ${RPC}) +source_group(stratum FILES ${STRATUM}) source_group(simplewallet FILES ${SIMPLEWALLET}) source_group(connectivity-tool FILES ${CONN_TOOL}) source_group(wallet FILES ${WALLET}) @@ -106,6 +108,10 @@ add_library(rpc ${RPC}) add_dependencies(rpc version ${PCH_LIB_NAME}) ENABLE_SHARED_PCH(RPC) +add_library(stratum ${STRATUM}) +add_dependencies(stratum version ${PCH_LIB_NAME}) +ENABLE_SHARED_PCH(STRATUM) + add_library(wallet ${WALLET}) add_dependencies(wallet version ${PCH_LIB_NAME}) ENABLE_SHARED_PCH(WALLET) @@ -114,23 +120,23 @@ target_link_libraries(currency_core lmdb) add_executable(daemon ${DAEMON} ${P2P} ${CURRENCY_PROTOCOL}) add_dependencies(daemon version) -target_link_libraries(daemon rpc currency_core crypto common upnpc-static zlibstatic ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) +target_link_libraries(daemon rpc stratum currency_core crypto common upnpc-static zlibstatic ethash ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) ENABLE_SHARED_PCH(DAEMON) ENABLE_SHARED_PCH_EXECUTABLE(daemon) add_executable(connectivity_tool ${CONN_TOOL}) add_dependencies(connectivity_tool version) -target_link_libraries(connectivity_tool currency_core crypto common zlibstatic ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) +target_link_libraries(connectivity_tool currency_core crypto common zlibstatic ethash ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) ENABLE_SHARED_PCH(CONN_TOOL) ENABLE_SHARED_PCH_EXECUTABLE(connectivity_tool) add_executable(simplewallet ${SIMPLEWALLET}) add_dependencies(simplewallet version) -target_link_libraries(simplewallet wallet rpc currency_core crypto common zlibstatic ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) +target_link_libraries(simplewallet wallet rpc currency_core crypto common zlibstatic ethash ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) ENABLE_SHARED_PCH(SIMPLEWALLET) ENABLE_SHARED_PCH_EXECUTABLE(simplewallet) -set_property(TARGET common crypto currency_core rpc wallet PROPERTY FOLDER "libs") +set_property(TARGET common crypto currency_core rpc stratum wallet PROPERTY FOLDER "libs") set_property(TARGET daemon simplewallet connectivity_tool PROPERTY FOLDER "prog") set_property(TARGET daemon PROPERTY OUTPUT_NAME "zanod") @@ -150,7 +156,7 @@ if(BUILD_GUI) QT5_USE_MODULES(Zano WebEngineWidgets WebChannel) find_package(Qt5PrintSupport REQUIRED) - target_link_libraries(Zano wallet rpc currency_core crypto common zlibstatic Qt5::WebEngineWidgets Qt5::PrintSupport ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) + target_link_libraries(Zano wallet rpc currency_core crypto common zlibstatic ethash Qt5::WebEngineWidgets Qt5::PrintSupport ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) if(APPLE) target_link_libraries(Zano ${COCOA_LIBRARY}) diff --git a/src/crypto/wild_keccak.cpp b/src/crypto/wild_keccak.cpp deleted file mode 100644 index fa49c539..00000000 --- a/src/crypto/wild_keccak.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// keccak.c -// 19-Nov-11 Markku-Juhani O. Saarinen -// A baseline Keccak (3rd round) implementation. - -// Memory-hard extension of keccak for PoW -// Copyright (c) 2014 The Boolberry developers -// Copyright (c) 2019 The Hyle Team -// Distributed under the MIT/X11 software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - - -#include "wild_keccak.h" -#include "include_base_utils.h" -namespace crypto -{ - - const uint64_t keccakf_rndc[24] = - { - 0x0000000000000001, 0x0000000000008082, 0x800000000000808a, - 0x8000000080008000, 0x000000000000808b, 0x0000000080000001, - 0x8000000080008081, 0x8000000000008009, 0x000000000000008a, - 0x0000000000000088, 0x0000000080008009, 0x000000008000000a, - 0x000000008000808b, 0x800000000000008b, 0x8000000000008089, - 0x8000000000008003, 0x8000000000008002, 0x8000000000000080, - 0x000000000000800a, 0x800000008000000a, 0x8000000080008081, - 0x8000000000008080, 0x0000000080000001, 0x8000000080008008 - }; - - const int keccakf_rotc[24] = - { - 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14, - 27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44 - }; - - const int keccakf_piln[24] = - { - 10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4, - 15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1 - }; - - // update the state with given number of rounds - void regular_f::keccakf(uint64_t st[25], int rounds) - { - int i, j, round; - uint64_t t, bc[5]; - - for (round = 0; round < rounds; round++) { - - // Theta - for (i = 0; i < 5; i++) - bc[i] = st[i] ^ st[i + 5] ^ st[i + 10] ^ st[i + 15] ^ st[i + 20]; - - for (i = 0; i < 5; i++) { - t = bc[(i + 4) % 5] ^ ROTL64(bc[(i + 1) % 5], 1); - for (j = 0; j < 25; j += 5) - st[j + i] ^= t; - } - - // Rho Pi - t = st[1]; - for (i = 0; i < 24; i++) { - j = keccakf_piln[i]; - bc[0] = st[j]; - st[j] = ROTL64(t, keccakf_rotc[i]); - t = bc[0]; - } - - // Chi - for (j = 0; j < 25; j += 5) { - for (i = 0; i < 5; i++) - bc[i] = st[j + i]; - for (i = 0; i < 5; i++) - st[j + i] ^= (~bc[(i + 1) % 5]) & bc[(i + 2) % 5]; - } - - // Iota - st[0] ^= keccakf_rndc[round]; - } - } - - bool generate_scratchpad(const crypto::hash& seed_data, std::vector& result_data, uint64_t target_size) - { - result_data.resize(target_size); - result_data[0] = crypto::cn_fast_hash(&seed_data, sizeof(seed_data)); - for (size_t i = 1; i < target_size; i++) - { - result_data[i] = crypto::cn_fast_hash(&result_data[i - 1], sizeof(result_data[i - 1])); - } - return true; - } - - bool generate_scratchpad_light(const crypto::hash& seed_data, std::vector& result_data, uint64_t target_size) - { - CHECK_AND_ASSERT_THROW_MES(target_size % 10 == 0, "wrong target_size = " << target_size); - result_data.reserve(target_size/10); - result_data.push_back(crypto::cn_fast_hash(&seed_data, sizeof(seed_data))); - crypto::hash prev_hash = result_data[0]; - for (size_t i = 1; i < target_size; i++) - { - prev_hash = crypto::cn_fast_hash(&prev_hash, sizeof(prev_hash)); - if (!(i % 10)) - { - result_data.push_back(prev_hash); - } - } - return true; - } - - - bool get_wild_keccak_light(const std::string& bd, crypto::hash& res, const std::vector& scratchpad_light) - { - if (!scratchpad_light.size()) - return false; - auto light_scr_accessor = [&](uint64_t i) - { - //get index of int64 item in scratchpad from i, where is is random number in whole uint64_t range - uint64_t int64_mod_index = i%(scratchpad_light.size() * 10 * 4); - //get related hash index - uint64_t hash_index = int64_mod_index / 4; - //get_in hash index (from 0 to 3) - uint64_t in_hash_index = int64_mod_index % 4; - - //get index of primary hash in scratchpad_light - uint64_t primary_item_index = (hash_index - (hash_index % 10)) / 10; - uint64_t sha_count = hash_index % 10; - crypto::hash res = scratchpad_light[primary_item_index]; - for (uint64_t i = 0; i != sha_count; i++) - { - res = cn_fast_hash(&res, sizeof(res)); - } - return ((uint64_t*)&res)[in_hash_index]; - }; - return get_wild_keccak_light(bd, res, light_scr_accessor); - } -} - diff --git a/src/crypto/wild_keccak.h b/src/crypto/wild_keccak.h deleted file mode 100644 index dc842b02..00000000 --- a/src/crypto/wild_keccak.h +++ /dev/null @@ -1,169 +0,0 @@ -// keccak.h -// 19-Nov-11 Markku-Juhani O. Saarinen - -// Copyright (c) 2014 The Boolberry developers -// Copyright (c) 2019 The Hyle Team -// Distributed under the MIT/X11 software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - - -#pragma once - -#include -#include -#include "crypto.h" - -extern "C" { -//#include "crypto/alt/KeccakNISTInterface.h" - } - -#ifndef KECCAK_ROUNDS -#define KECCAK_ROUNDS 24 -#endif - -#ifndef ROTL64 -#define ROTL64(x, y) (((x) << (y)) | ((x) >> (64 - (y)))) -#endif - - -#define KK_MIXIN_SIZE 24 - -namespace crypto -{ - typedef uint64_t state_t_m[25]; - typedef uint64_t mixin_t[KK_MIXIN_SIZE]; - - template - int wild_keccak2(const uint8_t *in, size_t inlen, uint8_t *md, size_t mdlen, callback_t cb) - { - state_t_m st; - uint8_t temp[144]; - uint64_t rsiz, rsizw; - - rsiz = sizeof(state_t_m) == mdlen ? HASH_DATA_AREA : 200 - 2 * mdlen; - rsizw = rsiz / 8; - memset(&st[0], 0, 25 * sizeof(st[0])); - - - for (; inlen >= rsiz; inlen -= rsiz, in += rsiz) - { - for (size_t i = 0; i < rsizw; i++) - st[i] ^= ((uint64_t *)in)[i]; - - for (int keccak_round = 0; keccak_round != KECCAK_ROUNDS; keccak_round++) - { - f_traits::keccakf(st, keccak_round); - cb(st); - } - } - - // last block and padding - memcpy(temp, in, inlen); - temp[inlen++] = 1; - memset(temp + inlen, 0, rsiz - inlen); - temp[rsiz - 1] |= 0x80; - - for (size_t i = 0; i < rsizw; i++) - st[i] ^= ((uint64_t *)temp)[i]; - - for (int keccak_round = 0; keccak_round != KECCAK_ROUNDS; keccak_round++) - { - f_traits::keccakf(st, keccak_round); - cb(st); - } - - memcpy(md, st, mdlen); - - return 0; - } - - template - int wild_keccak2_dbl(const uint8_t *in, size_t inlen, uint8_t *md, size_t mdlen, callback_t cb) - { - //Satoshi's classic - wild_keccak2(in, inlen, md, mdlen, cb); - wild_keccak2(md, mdlen, md, mdlen, cb); - return 0; - } - - class regular_f - { - public: - static void keccakf(uint64_t st[25], int rounds); - }; - - - - //------------------------------------------------------------------ - inline - bool get_wild_keccak2(const std::string& bd, crypto::hash& res, const uint64_t* int_array_ptr_scratch, uint64_t int64_sz) - { - uint64_t count_access = 0; - crypto::wild_keccak2_dbl(reinterpret_cast(bd.data()), bd.size(), reinterpret_cast(&res), sizeof(res), [&](crypto::state_t_m& st) - { - ++count_access; - if (!int64_sz) - { - return; - } - - for (size_t i = 0; i != sizeof(st) / sizeof(st[0]); i++) - { - size_t depend_index = 0; - if (i == 0) - { - depend_index = sizeof(st) / sizeof(st[0]) - 1; - } - else - { - depend_index = i - 1; - } - st[i] ^= int_array_ptr_scratch[int_array_ptr_scratch[int_array_ptr_scratch[st[depend_index] % int64_sz] % int64_sz] % int64_sz]; - } - }); - return true; - } - //------------------------------------------------------------------ - inline - bool get_wild_keccak2(const std::string& bd, crypto::hash& res, const std::vector& scratchpad, uint64_t sz) - { - - const uint64_t* int_array_ptr = (const uint64_t*)&scratchpad[0]; - size_t int64_sz = sz * 4; - return get_wild_keccak2(bd, res, int_array_ptr, int64_sz); - } - //------------------------------------------------------------------ - template - bool get_wild_keccak_light(const std::string& bd, crypto::hash& res, t_items_accessor cb_get_item) - { - crypto::wild_keccak2_dbl(reinterpret_cast(bd.data()), bd.size(), reinterpret_cast(&res), sizeof(res), [&](crypto::state_t_m& st) - { - for (size_t i = 0; i != sizeof(st) / sizeof(st[0]); i++) - { - size_t depend_index = 0; - if (i == 0) - { - depend_index = sizeof(st) / sizeof(st[0]) - 1; - } - else - { - depend_index = i - 1; - } - st[i] ^= cb_get_item(cb_get_item(cb_get_item(st[depend_index]))); - } - }); - return true; - } - //------------------------------------------------------------------ - bool get_wild_keccak_light(const std::string& bd, crypto::hash& res, const std::vector& scratchpad_light); - //------------------------------------------------------------------ - inline - bool get_wild_keccak2(const std::string& bd, crypto::hash& res, const std::vector& scratchpad) - { - return get_wild_keccak2(bd, res, scratchpad, scratchpad.size()); - } - //------------------------------------------------------------------ - bool generate_scratchpad(const crypto::hash& source_data, std::vector& result_data, uint64_t target_size); - bool generate_scratchpad_light(const crypto::hash& seed_data, std::vector& result_data, uint64_t target_size); -} - diff --git a/src/currency_core/account.cpp b/src/currency_core/account.cpp index 37f5aab9..a291feb8 100644 --- a/src/currency_core/account.cpp +++ b/src/currency_core/account.cpp @@ -98,7 +98,7 @@ namespace currency //cut the last timestamp word from restore_dats std::list words; boost::split(words, restore_data_, boost::is_space()); - CHECK_AND_ASSERT_THROW_MES(words.size() == BRAINWALLET_DEFAULT_WORDS_COUNT, "Words count missmatch: " << words.size()); + CHECK_AND_ASSERT_MES(words.size() == BRAINWALLET_DEFAULT_WORDS_COUNT, false, "Words count missmatch: " << words.size()); std::string timestamp_word = words.back(); words.erase(--words.end()); diff --git a/src/currency_core/basic_pow_helpers.cpp b/src/currency_core/basic_pow_helpers.cpp new file mode 100644 index 00000000..95ed6dfd --- /dev/null +++ b/src/currency_core/basic_pow_helpers.cpp @@ -0,0 +1,74 @@ +// Copyright (c) 2018-2019 Zano Project +// Copyright (c) 2018-2019 Hyle Team +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + + +#include "include_base_utils.h" +using namespace epee; + +#include "basic_pow_helpers.h" +#include "currency_format_utils.h" +#include "serialization/binary_utils.h" +#include "serialization/stl_containers.h" +#include "currency_core/currency_config.h" +#include "crypto/crypto.h" +#include "crypto/hash.h" +#include "common/int-util.h" +#include "ethereum/libethash/ethash/ethash.hpp" +#include "ethereum/libethash/ethash/progpow.hpp" + +namespace currency +{ + + //-------------------------------------------------------------- + //global object +// crypto::ethash::cache_manager cache; +// void ethash_set_use_dag(bool use_dag) +// { +// cache.set_use_dag(use_dag); +// } +// //------------------------------------------------------------------ +// const uint8_t* ethash_get_dag(uint64_t epoch, uint64_t& dag_size) +// { +// return cache.get_dag(epoch, dag_size); +// } + //------------------------------------------------------------------ + int ethash_height_to_epoch(uint64_t height) + { + return height / ETHASH_EPOCH_LENGTH; + } + //-------------------------------------------------------------- + crypto::hash get_block_longhash(uint64_t height, const crypto::hash& block_long_ash, uint64_t nonce) + { + int epoch = ethash_height_to_epoch(height); + const auto& context = progpow::get_global_epoch_context_full(static_cast(epoch)); + auto res_eth = progpow::hash(context, height, *(ethash::hash256*)&block_long_ash, nonce); + crypto::hash result = currency::null_hash; + memcpy(&result.data, &res_eth.final_hash, sizeof(res_eth.final_hash)); + return result; + } + //--------------------------------------------------------------- + void get_block_longhash(const block& b, crypto::hash& res) + { + /* + Since etherium hash has a bit different approach in minig, to adopt our code we made little hack: + etherium hash calculates from block's hash and(!) nonce, both passed into PoW hash function. + To achieve the same effect we make blob of data from block in normal way, but then set to zerro nonce + inside serialized buffer, and then pass this nonce to ethash algo as a second argument, as it expected. + */ + blobdata bd = get_block_hashing_blob(b); + + access_nonce_in_block_blob(bd) = 0; + crypto::hash bl_hash = crypto::cn_fast_hash(bd.data(), bd.size()); + + res = get_block_longhash(get_block_height(b), bl_hash, b.nonce); + } + //--------------------------------------------------------------- + crypto::hash get_block_longhash(const block& b) + { + crypto::hash p = null_hash; + get_block_longhash(b, p); + return p; + } +} \ No newline at end of file diff --git a/src/currency_core/basic_pow_helpers.h b/src/currency_core/basic_pow_helpers.h new file mode 100644 index 00000000..ccc1a132 --- /dev/null +++ b/src/currency_core/basic_pow_helpers.h @@ -0,0 +1,44 @@ +// Copyright (c) 2014-2018 Zano Project +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#pragma once + +#include +#include +#include + +#include "account.h" +#include "include_base_utils.h" + +#include "currency_format_utils_abstract.h" +#include "common/crypto_stream_operators.h" +#include "currency_protocol/currency_protocol_defs.h" +#include "crypto/crypto.h" +#include "crypto/hash.h" +#include "difficulty.h" +//#include "offers_services_helpers.h" +#include "rpc/core_rpc_server_commands_defs.h" +#include "bc_payments_id_service.h" +#include "bc_attachments_helpers_basic.h" +#include "blockchain_storage_basic.h" + +#define CURRENCY_MINER_BLOCK_BLOB_NONCE_OFFSET 1 + +namespace currency +{ + int ethash_height_to_epoch(uint64_t height); + crypto::hash get_block_longhash(uint64_t h, const crypto::hash& block_long_ash, uint64_t nonce); + void get_block_longhash(const block& b, crypto::hash& res); + crypto::hash get_block_longhash(const block& b); + + inline uint64_t& access_nonce_in_block_blob(blobdata& bd) + { + return *reinterpret_cast(&bd[CURRENCY_MINER_BLOCK_BLOB_NONCE_OFFSET]); + } + + inline const uint64_t& access_nonce_in_block_blob(const blobdata& bd) + { + return *reinterpret_cast(&bd[CURRENCY_MINER_BLOCK_BLOB_NONCE_OFFSET]); + } +} \ No newline at end of file diff --git a/src/currency_core/blockchain_storage.cpp b/src/currency_core/blockchain_storage.cpp index 7c2d6cb5..19b29ebb 100644 --- a/src/currency_core/blockchain_storage.cpp +++ b/src/currency_core/blockchain_storage.cpp @@ -31,6 +31,7 @@ #include "miner_common.h" #include "storages/portable_storage_template_helper.h" #include "common/db_backend_lmdb.h" +#include "basic_pow_helpers.h" #include "version.h" #undef LOG_DEFAULT_CHANNEL @@ -99,9 +100,7 @@ blockchain_storage::blockchain_storage(tx_memory_pool& tx_pool) :m_db(std::share m_current_fee_median(0), m_current_fee_median_effective_index(0), m_is_reorganize_in_process(false), - m_deinit_is_done(false), - m_current_scratchpad_seed(currency::null_hash), - m_current_scratchpad_seed_height(0) + m_deinit_is_done(false) { @@ -291,9 +290,6 @@ bool blockchain_storage::init(const std::string& config_folder, const boost::pro initialize_db_solo_options_values(); - get_seed_for_scratchpad(m_db_blocks.size(), m_current_scratchpad_seed); - m_current_scratchpad_seed_height = m_db_blocks.size(); - m_services_mgr.init(config_folder, vm); @@ -1112,16 +1108,16 @@ uint64_t blockchain_storage::get_current_comulative_blocksize_limit() const return m_db_current_block_cumul_sz_limit; } //------------------------------------------------------------------ -bool blockchain_storage::create_block_template(block& b, crypto::hash& seed, +bool blockchain_storage::create_block_template(block& b, const account_public_address& miner_address, wide_difficulty_type& diffic, uint64_t& height, const blobdata& ex_nonce) const { - return create_block_template(b, seed, miner_address, miner_address, diffic, height, ex_nonce, false, pos_entry()); + return create_block_template(b, miner_address, miner_address, diffic, height, ex_nonce, false, pos_entry()); } //------------------------------------------------------------------ -bool blockchain_storage::create_block_template(block& b, crypto::hash& seed, +bool blockchain_storage::create_block_template(block& b, const account_public_address& miner_address, const account_public_address& stakeholder_address, wide_difficulty_type& diffic, @@ -1131,7 +1127,6 @@ bool blockchain_storage::create_block_template(block& b, crypto::hash& seed, const pos_entry& pe, fill_block_template_func_t custom_fill_block_template_func /* = nullptr */) const { - seed = m_current_scratchpad_seed; size_t median_size; uint64_t already_generated_coins; CRITICAL_REGION_BEGIN(m_read_lock); @@ -1456,10 +1451,7 @@ bool blockchain_storage::handle_alternative_block(const block& b, const crypto:: } else { - crypto::hash seed = null_hash; - get_seed_for_scratchpad_alt_chain(abei.height, seed, alt_chain); - - proof_of_work = m_scratchpad.get_pow_hash(abei.bl, seed); + proof_of_work = get_block_longhash(abei.bl); if (!check_hash(proof_of_work, current_diff)) { @@ -1613,7 +1605,7 @@ bool blockchain_storage::pre_validate_relayed_block(block& bl, block_verificatio } else { - proof_hash = m_scratchpad.get_pow_hash(bl, m_current_scratchpad_seed); //get_block_longhash(bl); + proof_hash = get_block_longhash(bl); //get_block_longhash(bl); if (!check_hash(proof_hash, current_diffic)) { @@ -1738,9 +1730,6 @@ bool blockchain_storage::get_main_block_rpc_details(uint64_t i, block_rpc_extend CRITICAL_REGION_LOCAL(m_read_lock); auto core_bei_ptr = m_db_blocks[i]; crypto::hash id = get_block_hash(core_bei_ptr->bl); - crypto::hash pow_seed = null_hash; - get_seed_for_scratchpad(i, pow_seed); - bei.pow_seed = epee::string_tools::pod_to_hex(pow_seed); bei.is_orphan = false; bei.total_fee = 0; bei.total_txs_size = 0; @@ -2763,7 +2752,6 @@ bool blockchain_storage::pop_transaction_from_global_index(const transaction& tx CHECK_AND_ASSERT_MES(back_item->tx_id == tx_id, false, "transactions outs global index consistency broken: tx id missmatch"); CHECK_AND_ASSERT_MES(back_item->out_no == i, false, "transactions outs global index consistency broken: in transaction index missmatch"); m_db_outputs.pop_back_item(ot.amount); - //do not let to exist empty m_outputs entries - this will broke scratchpad selector //if (!it->second.size()) // m_db_outputs.erase(it); } @@ -4301,18 +4289,13 @@ bool blockchain_storage::handle_block_to_main_chain(const block& bl, const crypt } else { - //++++++++++++++++++++++++++++++++++++++++++++++++++++++ - //precaution(do we really need this check?) - check_scratchpad(); - //++++++++++++++++++++++++++++++++++++++++++++++++++++++ - proof_hash = m_scratchpad.get_pow_hash(bl, m_current_scratchpad_seed); + proof_hash = get_block_longhash(bl); if (!check_hash(proof_hash, current_diffic)) { LOG_ERROR("Block with id: " << id << ENDL << "PoW hash: " << proof_hash << ENDL - << "PoW seed: " << m_current_scratchpad_seed << ENDL << "unexpected difficulty: " << current_diffic); bvc.m_verification_failed = true; return false; @@ -4575,28 +4558,16 @@ void blockchain_storage::on_block_added(const block_extended_info& bei, const cr { update_next_comulative_size_limit(); m_timestamps_median_cache.clear(); - check_scratchpad(); m_tx_pool.on_blockchain_inc(bei.height, id); TIME_MEASURE_START_PD(raise_block_core_event); rise_core_event(CORE_EVENT_BLOCK_ADDED, void_struct()); TIME_MEASURE_FINISH_PD(raise_block_core_event); } -//------------------------------------------------------------------ - bool blockchain_storage::check_scratchpad() -{ - if(get_scratchpad_last_update_rebuild_height(m_db_blocks.size()) != m_current_scratchpad_seed_height) - { - get_seed_for_scratchpad(m_db_blocks.size(), m_current_scratchpad_seed); - m_current_scratchpad_seed_height = get_scratchpad_last_update_rebuild_height(m_db_blocks.size()); - } - return true; -} //------------------------------------------------------------------ void blockchain_storage::on_block_removed(const block_extended_info& bei) { m_tx_pool.on_blockchain_dec(m_db_blocks.size() - 1, get_top_block_id()); m_timestamps_median_cache.clear(); - check_scratchpad(); LOG_PRINT_L2("block at height " << bei.height << " was removed from the blockchain"); } //------------------------------------------------------------------ @@ -5330,42 +5301,6 @@ bool blockchain_storage::validate_alt_block_ms_input(const transaction& input_tx return false; } //------------------------------------------------------------------ -bool blockchain_storage::get_seed_for_scratchpad(uint64_t height, crypto::hash& seed)const -{ - CRITICAL_REGION_LOCAL(m_read_lock); - LOG_PRINT_MAGENTA("Get seed for scratchpad [main_chain] on height " << height, LOG_LEVEL_0); - return get_seed_for_scratchpad_cb(height, seed, [&](uint64_t index) -> crypto::hash - { - return get_block_hash(m_db_blocks[index]->bl); - }); -} -//------------------------------------------------------------------ -bool blockchain_storage::get_seed_for_scratchpad_alt_chain(uint64_t height, crypto::hash& seed, const alt_chain_type& alt_chain)const -{ - CRITICAL_REGION_LOCAL(m_read_lock); - //alt_chain: front -> mainchain, back -> alternative head - uint64_t connection_to_main_chain = height; - if (alt_chain.size()) - connection_to_main_chain = alt_chain.front()->second.height; - - return get_seed_for_scratchpad_cb(height, seed, [&](uint64_t index) -> crypto::hash - { - if (index < connection_to_main_chain) - { - //addressed to main chain - return get_block_hash(m_db_blocks[index]->bl); - } - else - { - //addressed to alt chain - uint64_t offset = index - connection_to_main_chain; - CHECK_AND_ASSERT_THROW_MES(offset < alt_chain.size(), "Internal error: failed to validate offset(" << offset << ") < alt_chain.size()("<< alt_chain.size() <<")"); - CHECK_AND_ASSERT_THROW_MES(alt_chain[offset]->second.height == index, "Internal error: failed to validate offset(" << offset << ") < alt_chain.size()(" << alt_chain.size() << ")"); - return get_block_hash(alt_chain[offset]->second.bl); - } - }); -} -//------------------------------------------------------------------ bool blockchain_storage::get_transaction_from_pool_or_db(const crypto::hash& tx_id, std::shared_ptr& tx_ptr, uint64_t min_allowed_block_height /* = 0 */) const { tx_ptr.reset(new transaction()); diff --git a/src/currency_core/blockchain_storage.h b/src/currency_core/blockchain_storage.h index 5312a4c2..adfddb91 100644 --- a/src/currency_core/blockchain_storage.h +++ b/src/currency_core/blockchain_storage.h @@ -39,7 +39,7 @@ #include "dispatch_core_events.h" #include "bc_attachments_service_manager.h" #include "common/median_db_cache.h" -#include "scratchpad_helper.h" + MARK_AS_POD_C11(crypto::key_image); @@ -231,8 +231,8 @@ namespace currency wide_difficulty_type get_cached_next_difficulty(bool pos) const; typedef bool fill_block_template_func_t(block &bl, bool pos, size_t median_size, uint64_t already_generated_coins, size_t &total_size, uint64_t &fee, uint64_t height); - bool create_block_template(block& b, crypto::hash& seed, const account_public_address& miner_address, const account_public_address& stakeholder_address, wide_difficulty_type& di, uint64_t& height, const blobdata& ex_nonce, bool pos, const pos_entry& pe, fill_block_template_func_t custom_fill_block_template_func = nullptr) const; - bool create_block_template(block& b, crypto::hash& seed, const account_public_address& miner_address, wide_difficulty_type& di, uint64_t& height, const blobdata& ex_nonce) const; + bool create_block_template(block& b, const account_public_address& miner_address, const account_public_address& stakeholder_address, wide_difficulty_type& di, uint64_t& height, const blobdata& ex_nonce, bool pos, const pos_entry& pe, fill_block_template_func_t custom_fill_block_template_func = nullptr) const; + bool create_block_template(block& b, const account_public_address& miner_address, wide_difficulty_type& di, uint64_t& height, const blobdata& ex_nonce) const; bool have_block(const crypto::hash& id) const; size_t get_total_transactions()const; @@ -510,10 +510,7 @@ namespace currency //work like a cache to avoid mutable uint64_t m_current_fee_median; mutable uint64_t m_current_fee_median_effective_index; - bool m_is_reorganize_in_process; - mutable scratchpad_light_pool m_scratchpad; //TODO: optimization for using full scratchpad in mainchain - crypto::hash m_current_scratchpad_seed; - uint64_t m_current_scratchpad_seed_height; + bool m_is_reorganize_in_process; mutable std::atomic m_deinit_is_done; @@ -542,10 +539,6 @@ namespace currency bool validate_alt_block_txs(const block& b, const crypto::hash& id, std::set& collected_keyimages, alt_block_extended_info& abei, const alt_chain_type& alt_chain, uint64_t split_height, uint64_t& ki_lookup_time_total) const; bool update_alt_out_indexes_for_tx_in_block(const transaction& tx, alt_block_extended_info& abei)const; bool get_transaction_from_pool_or_db(const crypto::hash& tx_id, std::shared_ptr& tx_ptr, uint64_t min_allowed_block_height = 0) const; - bool get_seed_for_scratchpad(uint64_t height, crypto::hash& seed)const ; - bool get_seed_for_scratchpad_alt_chain(uint64_t height, crypto::hash& seed, const alt_chain_type& alt_chain) const ; - - bool check_scratchpad(); bool prevalidate_miner_transaction(const block& b, uint64_t height, bool pos)const; bool validate_transaction(const block& b, uint64_t height, const transaction& tx)const; @@ -572,7 +565,6 @@ namespace currency uint64_t get_adjusted_time()const; bool complete_timestamps_vector(uint64_t start_height, std::vector& timestamps); bool update_next_comulative_size_limit(); - //bool get_block_for_scratchpad_alt(uint64_t connection_height, uint64_t block_index, std::list& alt_chain, block & b); bool process_blockchain_tx_extra(const transaction& tx); bool unprocess_blockchain_tx_extra(const transaction& tx); bool process_blockchain_tx_attachments(const transaction& tx, uint64_t h, const crypto::hash& bl_id, uint64_t timestamp); diff --git a/src/currency_core/currency_config.h b/src/currency_core/currency_config.h index 2b40c168..18e0a3fa 100644 --- a/src/currency_core/currency_config.h +++ b/src/currency_core/currency_config.h @@ -7,7 +7,7 @@ #pragma once -#define CURRENCY_FORMATION_VERSION 76 +#define CURRENCY_FORMATION_VERSION 78 #define CURRENCY_MAX_BLOCK_NUMBER 500000000 @@ -46,12 +46,6 @@ #define BASE_REWARD_DUST_THRESHOLD ((uint64_t)1000000) // pow(10, 6) - change this will cause hard-fork! #define DEFAULT_DUST_THRESHOLD ((uint64_t)0)//((uint64_t)100000) // pow(10, 5) -#define CURRENCY_SCRATCHPAD_BASE_SIZE 16777210 //count in crypto::hash, to get size in bytes x32 -#define CURRENCY_SCRATCHPAD_REBUILD_INTERVAL 720 //once a day if block goes once in 2 minute -#define CURRENCY_SCRATCHPAD_BASE_INDEX_ID_OFFSET 20 //offset down from last rebuild height to block id, that used for indexing seed blocks in CURRENCY_SCRATCHPAD_SEED_BLOCKS_WINDOW -#define CURRENCY_SCRATCHPAD_SEED_BLOCKS_WINDOW 700 //window for addressing seed block ids -#define CURRENCY_SCRATCHPAD_GENESIS_SEED "4c98962ddce32c7763bb9326933a4692975ca29a76349ae7a139faa3430cc5ab" - #define TX_DEFAULT_FEE ((uint64_t)100000) // pow(10, 5) #define TX_MINIMUM_FEE ((uint64_t)100000) // pow(10, 5) diff --git a/src/currency_core/currency_core.cpp b/src/currency_core/currency_core.cpp index 555df8ae..c4b785f4 100644 --- a/src/currency_core/currency_core.cpp +++ b/src/currency_core/currency_core.cpp @@ -401,14 +401,9 @@ namespace currency return m_mempool.add_tx(tx, tx_hash, blob_size, tvc, kept_by_block); } //----------------------------------------------------------------------------------------------- - bool core::get_block_template(block& b, crypto::hash& seed, const account_public_address& adr, const account_public_address& stakeholder_address, wide_difficulty_type& diffic, uint64_t& height, const blobdata& ex_nonce, bool pos, const pos_entry& pe) - { - return m_blockchain_storage.create_block_template(b, seed, adr, stakeholder_address, diffic, height, ex_nonce, pos, pe); - } bool core::get_block_template(block& b, const account_public_address& adr, const account_public_address& stakeholder_address, wide_difficulty_type& diffic, uint64_t& height, const blobdata& ex_nonce, bool pos, const pos_entry& pe) { - crypto::hash seed_subst = currency::null_hash; - return m_blockchain_storage.create_block_template(b, seed_subst, adr, stakeholder_address, diffic, height, ex_nonce, pos, pe); + return m_blockchain_storage.create_block_template(b, adr, stakeholder_address, diffic, height, ex_nonce, pos, pe); } //----------------------------------------------------------------------------------------------- bool core::find_blockchain_supplement(const std::list& qblock_ids, NOTIFY_RESPONSE_CHAIN_ENTRY::request& resp) const diff --git a/src/currency_core/currency_core.h b/src/currency_core/currency_core.h index 1f178268..84b2e821 100644 --- a/src/currency_core/currency_core.h +++ b/src/currency_core/currency_core.h @@ -51,9 +51,7 @@ namespace currency //-------------------- i_miner_handler ----------------------- virtual bool handle_block_found(const block& b, block_verification_context* p_verification_result = nullptr); - virtual bool get_block_template(block& b, crypto::hash& seed, const account_public_address& adr, const account_public_address& stakeholder_address, wide_difficulty_type& diffic, uint64_t& height, const blobdata& ex_nonce, bool pos = false, const pos_entry& pe = pos_entry()); - - bool get_block_template(block& b, const account_public_address& adr, const account_public_address& stakeholder_address, wide_difficulty_type& diffic, uint64_t& height, const blobdata& ex_nonce, bool pos = false, const pos_entry& pe = pos_entry()); + virtual bool get_block_template(block& b, const account_public_address& adr, const account_public_address& stakeholder_address, wide_difficulty_type& diffic, uint64_t& height, const blobdata& ex_nonce, bool pos = false, const pos_entry& pe = pos_entry()); miner& get_miner(){ return m_miner; } static void init_options(boost::program_options::options_description& desc); diff --git a/src/currency_core/currency_format_utils.cpp b/src/currency_core/currency_format_utils.cpp index a4166763..cdf7d7e9 100644 --- a/src/currency_core/currency_format_utils.cpp +++ b/src/currency_core/currency_format_utils.cpp @@ -1212,7 +1212,7 @@ namespace currency //--------------------------------------------------------------- std::string get_word_from_timstamp(uint64_t timestamp) { - uint64_t date_offset = timestamp ? timestamp - WALLET_BRAIN_DATE_OFFSET : 0; + uint64_t date_offset = timestamp > WALLET_BRAIN_DATE_OFFSET ? timestamp - WALLET_BRAIN_DATE_OFFSET : 0; uint64_t weeks_count = date_offset / WALLET_BRAIN_DATE_QUANTUM; CHECK_AND_ASSERT_THROW_MES(weeks_count < std::numeric_limits::max(), "internal error: unable to converto to uint32, val = " << weeks_count); uint32_t weeks_count_32 = static_cast(weeks_count); @@ -1664,24 +1664,7 @@ namespace currency } return true; } -// //-------------------------------------------------------------- -// crypto::hash get_block_longhash(uint64_t height, const crypto::hash& block_long_ash, uint64_t nonce) -// { -// //TODO: add wild keccak 2 -// return null_hash;//TODO; -// } -// //--------------------------------------------------------------- -// void get_block_longhash(const block& b, crypto::hash& res) -// { -// //TODO: add wild keccak 2 -// } -// //--------------------------------------------------------------- -// crypto::hash get_block_longhash(const block& b) -// { -// crypto::hash p = null_hash; -// get_block_longhash(b, p); -// return p; -// } + //--------------------------------------------------------------- uint64_t get_alias_coast_from_fee(const std::string& alias, uint64_t median_fee) { @@ -2405,21 +2388,6 @@ namespace currency return CURRENCY_TESTNET_CONST_REWARD; } //----------------------------------------------------------------------------------------------- - uint64_t get_scratchpad_last_update_rebuild_height(uint64_t h) - { - return h - (h%CURRENCY_SCRATCHPAD_REBUILD_INTERVAL); - } - //----------------------------------------------------------------------------------------------- - uint64_t get_scratchpad_size_for_height(uint64_t h) - { - if (h < CURRENCY_BLOCKS_PER_DAY * 7) - { - return 100; - } - //let's have ~250MB/year if block interval is 2 minutes - return CURRENCY_SCRATCHPAD_BASE_SIZE + get_scratchpad_last_update_rebuild_height(h)*30; - } - //----------------------------------------------------------------------------------------------- bool get_block_reward(bool is_pos, size_t median_size, size_t current_block_size, uint64_t already_generated_coins, uint64_t &reward, uint64_t height) { uint64_t base_reward = get_base_block_reward(is_pos, already_generated_coins, height); diff --git a/src/currency_core/currency_format_utils.h b/src/currency_core/currency_format_utils.h index 14fb9970..1fe1c618 100644 --- a/src/currency_core/currency_format_utils.h +++ b/src/currency_core/currency_format_utils.h @@ -316,11 +316,6 @@ namespace currency bool parse_amount(uint64_t& amount, const std::string& str_amount); - -// crypto::hash get_block_longhash(uint64_t h, const crypto::hash& block_long_ash, uint64_t nonce); -// void get_block_longhash(const block& b, crypto::hash& res); -// crypto::hash get_block_longhash(const block& b); - bool unserialize_block_complete_entry(const COMMAND_RPC_GET_BLOCKS_FAST::response& serialized, COMMAND_RPC_GET_BLOCKS_DIRECT::response& unserialized); @@ -410,8 +405,6 @@ namespace currency size_t get_max_tx_size(); bool get_block_reward(bool is_pos, size_t median_size, size_t current_block_size, uint64_t already_generated_coins, uint64_t &reward, uint64_t height); uint64_t get_base_block_reward(bool is_pos, uint64_t already_generated_coins, uint64_t height); - uint64_t get_scratchpad_last_update_rebuild_height(uint64_t h); - uint64_t get_scratchpad_size_for_height(uint64_t h); bool is_payment_id_size_ok(const payment_id_t& payment_id); std::string get_account_address_as_str(const account_public_address& addr); std::string get_account_address_and_payment_id_as_str(const account_public_address& addr, const payment_id_t& payment_id); @@ -542,41 +535,6 @@ namespace currency } return false; } - //--------------------------------------------------------------- - template - bool get_seed_for_scratchpad_cb(uint64_t height, crypto::hash& seed, block_chain_accessor_t cb) - { - //CHECK_AND_ASSERT_THROW_MES(m_db_blocks.size() > height, "Internal error: m_db_blocks.size()=" << m_db_blocks.size() << " > height=" << height); - uint64_t last_upd_h = get_scratchpad_last_update_rebuild_height(height); - std::vector seed_data; - if (last_upd_h == 0) - { - crypto::hash genesis_seed = null_hash; - bool r = epee::string_tools::hex_to_pod(CURRENCY_SCRATCHPAD_GENESIS_SEED, genesis_seed); - CHECK_AND_ASSERT_THROW_MES(r, "Unable to parse CURRENCY_SCRATCHPAD_GENESIS_SEED " << CURRENCY_SCRATCHPAD_GENESIS_SEED); - LOG_PRINT_MAGENTA("[SCRATCHPAD] GENESIS SEED SELECTED: " << genesis_seed, LOG_LEVEL_0); - seed = genesis_seed; - return true; - } - uint64_t low_bound_window = 0; - CHECK_AND_ASSERT_THROW_MES(last_upd_h >= CURRENCY_SCRATCHPAD_SEED_BLOCKS_WINDOW, "Internal error: last_upd_h(" << last_upd_h << ") < CURRENCY_SCRATCHPAD_SEED_BLOCKS_WINDOW(" << CURRENCY_SCRATCHPAD_SEED_BLOCKS_WINDOW << ")"); - low_bound_window = last_upd_h - CURRENCY_SCRATCHPAD_SEED_BLOCKS_WINDOW; - - crypto::hash selector_id = cb(last_upd_h - CURRENCY_SCRATCHPAD_BASE_INDEX_ID_OFFSET); - - const uint64_t* pselectors = (const uint64_t*)&selector_id; - std::stringstream ss; - for (size_t i = 0; i != 4; i++) - { - seed_data.push_back(cb(low_bound_window + pselectors[i] % CURRENCY_SCRATCHPAD_SEED_BLOCKS_WINDOW)); - ss << "[" << std::setw(8) << std::hex << pselectors[i] << "->" << low_bound_window + pselectors[i] % CURRENCY_SCRATCHPAD_SEED_BLOCKS_WINDOW << "]" << seed_data.back() << ENDL; - } - seed = crypto::cn_fast_hash(&seed_data[0], sizeof(seed_data[0]) * seed_data.size()); - - LOG_PRINT_MAGENTA("[SCRATCHPAD] SEED SELECTED: h = " << last_upd_h << ", selector: " << selector_id << ENDL << ss.str() << "SEED: " << seed, LOG_LEVEL_0); - - return true; - } //--------------------------------------------------------------- // 62387455827 -> 455827 + 7000000 + 80000000 + 300000000 + 2000000000 + 60000000000, where 455827 <= dust_threshold diff --git a/src/currency_core/difficulty.cpp b/src/currency_core/difficulty.cpp index 518b59dd..21d7d339 100644 --- a/src/currency_core/difficulty.cpp +++ b/src/currency_core/difficulty.cpp @@ -114,12 +114,12 @@ namespace currency { return false; // usual slow check boost::multiprecision::uint512_t hashVal = 0; - for (int i = 1; i < 4; i++) - { // highest word is zero - hashVal |= swap64le(((const uint64_t *)&h)[3 - i]); - hashVal << 64; + for(int i = 0; i < 4; i++) + { + hashVal <<= 64; + hashVal |= swap64le(((const uint64_t *) &h)[3-i]); } - return (hashVal * difficulty > max256bit); + return (hashVal * difficulty <= max256bit); } uint64_t difficulty_to_boundary(wide_difficulty_type difficulty) diff --git a/src/currency_core/miner.cpp b/src/currency_core/miner.cpp index 1a451d83..afb77055 100644 --- a/src/currency_core/miner.cpp +++ b/src/currency_core/miner.cpp @@ -20,6 +20,7 @@ #include "string_coding.h" #include "version.h" #include "storages/portable_storage_template_helper.h" +#include "basic_pow_helpers.h" using namespace epee; @@ -64,16 +65,14 @@ namespace currency stop(); } //----------------------------------------------------------------------------------------------------- - bool miner::set_block_template(const block& bl, const wide_difficulty_type& di, uint64_t height, const crypto::hash& seed) + bool miner::set_block_template(const block& bl, const wide_difficulty_type& di, uint64_t height) { CRITICAL_REGION_LOCAL(m_template_lock); m_template = bl; m_diffic = di; m_height = height; - m_seed = seed; ++m_template_no; m_starter_nonce = crypto::rand(); - m_scratchpad.generate(m_seed, height); return true; } //----------------------------------------------------------------------------------------------------- @@ -96,13 +95,12 @@ namespace currency { extra_nonce += std::string("|") + m_extra_messages[m_config.current_extra_message_index]; } - crypto::hash seed = null_hash; - if(!m_phandler->get_block_template(bl, seed, m_mine_address, m_mine_address, di, height, extra_nonce)) + if(!m_phandler->get_block_template(bl, m_mine_address, m_mine_address, di, height, extra_nonce)) { LOG_ERROR("Failed to get_block_template()"); return false; } - set_block_template(bl, di, height, seed); + set_block_template(bl, di, height); return true; } //----------------------------------------------------------------------------------------------------- @@ -309,8 +307,8 @@ namespace currency wide_difficulty_type local_diff = 0; uint32_t local_template_ver = 0; blobdata local_blob_data; - crypto::hash local_seed = null_hash; uint64_t local_height = 0; + crypto::hash local_blob_data_hash = null_hash; //uint64_t local_template_height = 0; block b; @@ -327,14 +325,15 @@ namespace currency { CRITICAL_REGION_BEGIN(m_template_lock); b = m_template; + b.nonce = 0; local_diff = m_diffic; - local_seed = m_seed; local_height = m_height; CRITICAL_REGION_END(); //local_template_height = get_block_height(b); local_template_ver = m_template_no; nonce = m_starter_nonce + th_local_index; local_blob_data = get_block_hashing_blob(b); + local_blob_data_hash = crypto::cn_fast_hash(local_blob_data.data(), local_blob_data.size()); } if(!local_template_ver)//no any set_block_template call @@ -343,14 +342,15 @@ namespace currency epee::misc_utils::sleep_no_w(1000); continue; } - b.nonce = nonce; - access_nonce_in_block_blob(local_blob_data) = b.nonce; - crypto::hash h = m_scratchpad.get_pow_hash_from_blob(local_blob_data, local_height, local_seed); + //b.nonce = nonce; + //access_nonce_in_block_blob(local_blob_data) = b.nonce; + crypto::hash h = get_block_longhash(local_height, local_blob_data_hash, nonce); if(check_hash(h, local_diff)) { + b.nonce = nonce; ++m_config.current_extra_message_index; - LOG_PRINT_GREEN("Found block for difficulty: " << local_diff, LOG_LEVEL_0); + LOG_PRINT_GREEN("Found block for difficulty: " << local_diff << ", height: " << local_height << ", PoW hash: " << h << ", local_blob_data_hash: " << local_blob_data_hash << ", nonce: " << std::hex << nonce, LOG_LEVEL_0); if(!m_phandler->handle_block_found(b)) { --m_config.current_extra_message_index; diff --git a/src/currency_core/miner.h b/src/currency_core/miner.h index 21799172..1e9d030e 100644 --- a/src/currency_core/miner.h +++ b/src/currency_core/miner.h @@ -14,26 +14,17 @@ #include "difficulty.h" #include "math_helper.h" #include "blockchain_storage.h" +#include "basic_pow_helpers.h" + -#define CURRENCY_MINER_BLOCK_BLOB_NONCE_OFFSET 1 namespace currency { - inline uint64_t& access_nonce_in_block_blob(blobdata& bd) - { - return *reinterpret_cast(&bd[CURRENCY_MINER_BLOCK_BLOB_NONCE_OFFSET]); - } - - inline const uint64_t& access_nonce_in_block_blob(const blobdata& bd) - { - return *reinterpret_cast(&bd[CURRENCY_MINER_BLOCK_BLOB_NONCE_OFFSET]); - } - struct i_miner_handler { virtual bool handle_block_found(const block& b, block_verification_context* p_verification_result = nullptr) = 0; - virtual bool get_block_template(block& b, crypto::hash& seed, const account_public_address& adr, const account_public_address& stakeholder_address, wide_difficulty_type& diffic, uint64_t& height, const blobdata& ex_nonce, bool pos = false, const pos_entry& pe = pos_entry()) = 0; + virtual bool get_block_template(block& b, const account_public_address& adr, const account_public_address& stakeholder_address, wide_difficulty_type& diffic, uint64_t& height, const blobdata& ex_nonce, bool pos = false, const pos_entry& pe = pos_entry()) = 0; protected: ~i_miner_handler(){}; }; @@ -63,17 +54,17 @@ namespace currency void do_print_hashrate(bool do_hr); inline - static bool find_nonce_for_given_block(block& bl, const wide_difficulty_type& diffic, uint64_t height, const crypto::hash& seed, scratchpad_keeper& sk) + static bool find_nonce_for_given_block(block& bl, const wide_difficulty_type& diffic, uint64_t height) { + bl.nonce = 0; blobdata bd = get_block_hashing_blob(bl); - uint64_t& nonce_ref = access_nonce_in_block_blob(bd); - nonce_ref = 0; + crypto::hash bd_hash = crypto::cn_fast_hash(bd.data(), bd.size()); + //uint64_t& nonce_ref = access_nonce_in_block_blob(bd); + //nonce_ref = 0; for(; bl.nonce != std::numeric_limits::max(); bl.nonce++) { - nonce_ref = bl.nonce; - - crypto::hash h = sk.get_pow_hash_from_blob(bd, height, seed); + crypto::hash h = get_block_longhash(height, bd_hash, bl.nonce); if(check_hash(h, diffic)) { LOG_PRINT_L0("Found nonce for block: " << get_block_hash(bl) << "[" << height << "]: PoW:" << h << "(diff:" << diffic << "), ts: " << bl.timestamp); @@ -84,7 +75,7 @@ namespace currency } private: - bool set_block_template(const block& bl, const wide_difficulty_type& diffic, uint64_t height, const crypto::hash& seed); + bool set_block_template(const block& bl, const wide_difficulty_type& diffic, uint64_t height); bool worker_thread(); bool request_block_template(); void merge_hr(); @@ -106,8 +97,6 @@ namespace currency std::atomic m_starter_nonce; wide_difficulty_type m_diffic; std::atomic m_height; - scratchpad_keeper m_scratchpad; - crypto::hash m_seed; volatile uint32_t m_thread_index; volatile uint32_t m_threads_total; std::atomic m_pausers_count; diff --git a/src/currency_core/miner_common.h b/src/currency_core/miner_common.h index 4c49e173..9c6db391 100644 --- a/src/currency_core/miner_common.h +++ b/src/currency_core/miner_common.h @@ -6,25 +6,3 @@ #pragma once -#define SCRATCHPAD_DEFAULT_FILENAME "scratchpad.bin" -#define WILD_KECCAK_ADDENDUMS_ARRAY_SIZE 10 - -#pragma pack (push, 1) - -struct export_scratchpad_hi -{ - crypto::hash prevhash; - uint64_t height; -}; -struct export_addendums_array_entry -{ - export_scratchpad_hi prev_hi; - uint64_t add_size; -}; -struct export_scratchpad_file_header -{ - export_scratchpad_hi current_hi; - export_addendums_array_entry add_arr[WILD_KECCAK_ADDENDUMS_ARRAY_SIZE]; - uint64_t scratchpad_size; -}; -#pragma pack(pop) diff --git a/src/currency_core/scratchpad_helper.cpp b/src/currency_core/scratchpad_helper.cpp deleted file mode 100644 index b52e967a..00000000 --- a/src/currency_core/scratchpad_helper.cpp +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) 2018-2019 Zano Project - -// Distributed under the MIT/X11 software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - - -#include "scratchpad_helper.h" -#include "currency_format_utils.h" - - - -namespace currency -{ - scratchpad_keeper::scratchpad_keeper():m_seed(null_hash) - { - - } - //------------------------------------------------------------------------------------ - bool scratchpad_keeper::generate(const crypto::hash& scr_seed, uint64_t height) - { - bool r = false; - CRITICAL_REGION_BEGIN(m_lock); - r = crypto::generate_scratchpad(scr_seed, m_scratchpad, get_scratchpad_size_for_height(height)); - if (r) - m_seed = scr_seed; - CRITICAL_REGION_END(); - return r; - } - //------------------------------------------------------------------------------------ - crypto::hash scratchpad_keeper::get_pow_hash_from_blob(const blobdata& bd, uint64_t height, const crypto::hash& scr_seed) - { - CRITICAL_REGION_LOCAL(m_lock); - crypto::hash res_hash = null_hash; - if (scr_seed != m_seed || get_scratchpad_size_for_height(height) != this->size()) - { - bool r = generate(scr_seed, height); - CHECK_AND_ASSERT_THROW_MES(r, "Unable to generate scratchpad"); - } - CHECK_AND_ASSERT_THROW_MES(get_scratchpad_size_for_height(height) == this->size(), "Fatal error on hash calculation: scratchpad_size=" << m_scratchpad.size() << " at height=" << height << ", scr_seed=" << scr_seed << ", m_seed=" << m_seed); - CHECK_AND_ASSERT_THROW_MES(scr_seed == m_seed, "Fatal error on hash calculation: scratchpad_seed missmatch scr_seed=" << scr_seed << ", m_seed=" << m_seed); - - bool res = get_wild_keccak2(bd, res_hash, m_scratchpad); - CHECK_AND_ASSERT_THROW_MES(res, "Fatal error on hash calculation: scratchpad_size=" << m_scratchpad.size()); - return res_hash; - } - //------------------------------------------------------------------------------------ - - //------------------------------------------------------------------------------------ - uint64_t scratchpad_keeper::size() - { - return m_scratchpad.size(); - } - //------------------------------------------------------------------------------------ - crypto::hash scratchpad_light_pool::get_pow_hash_from_blob(const blobdata& bd, uint64_t height, const crypto::hash& seed) - { - CRITICAL_REGION_LOCAL(m_lock); - std::shared_ptr> pscr_light; - if (!m_scratchpad_pools.get(seed, pscr_light)) - { - LOG_PRINT_MAGENTA("Generating scratchpad light for " << seed << "["<< height <<"]", LOG_LEVEL_0); - pscr_light.reset(new std::vector()); - bool r = crypto::generate_scratchpad_light(seed, *pscr_light, currency::get_scratchpad_size_for_height(height)); - CHECK_AND_ASSERT_THROW_MES(r, "Failed to generate_scratchpad_light"); - m_scratchpad_pools.set(seed, pscr_light); - LOG_PRINT_MAGENTA("Generated ok", LOG_LEVEL_0); - } - CHECK_AND_ASSERT_THROW_MES(pscr_light->size()*10 == currency::get_scratchpad_size_for_height(height), - "Wrong size of cached scratchpad = " << pscr_light->size() << ", expected " << currency::get_scratchpad_size_for_height(height) << " for height " << height); - crypto::hash res = currency::null_hash; - bool r = crypto::get_wild_keccak_light(bd, res, *pscr_light); - CHECK_AND_ASSERT_THROW_MES(r, "Failed to get_wild_keccak_light"); - return res; - } - //------------------------------------------------------------------------------------ -} - diff --git a/src/currency_core/scratchpad_helper.h b/src/currency_core/scratchpad_helper.h deleted file mode 100644 index 515acd56..00000000 --- a/src/currency_core/scratchpad_helper.h +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2014-2018 Zano Project -// Distributed under the MIT/X11 software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -#pragma once -#include "crypto/wild_keccak.h" -#include "currency_protocol/blobdatatype.h" -#include "currency_core/currency_basic.h" -#include "cache_helper.h" -#include "currency_core/currency_format_utils.h" -#include "currency_core/currency_format_utils_blocks.h" - -namespace currency -{ - template - class scratchpad_keeper_base - { - public: - crypto::hash get_pow_hash(const block& b, const crypto::hash& scr_seed) - { - blobdata bl = get_block_hashing_blob(b); - return static_cast(this)->get_pow_hash_from_blob(bl, get_block_height(b), scr_seed); - } - }; - - - class scratchpad_keeper: public scratchpad_keeper_base - { - public: - scratchpad_keeper(); - bool generate(const crypto::hash& seed, uint64_t height); - crypto::hash get_pow_hash_from_blob(const blobdata& bd, uint64_t height, const crypto::hash& seed); - uint64_t size(); - private: - scratchpad_keeper(const scratchpad_keeper&) {} - crypto::hash m_seed; - std::vector m_scratchpad; - std::recursive_mutex m_lock; - }; - - - class scratchpad_light_pool : public scratchpad_keeper_base - { - public: - scratchpad_light_pool() {} - crypto::hash get_pow_hash_from_blob(const blobdata& bd, uint64_t height, const crypto::hash& seed); - private: - //map of seed to - epee::misc_utils::cache_base>, 4> m_scratchpad_pools; - std::recursive_mutex m_lock; - }; - -} \ No newline at end of file diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp index 6adef318..8272a08d 100644 --- a/src/daemon/daemon.cpp +++ b/src/daemon/daemon.cpp @@ -20,6 +20,7 @@ using namespace epee; #include "currency_core/checkpoints_create.h" #include "currency_core/currency_core.h" #include "rpc/core_rpc_server.h" +#include "stratum/stratum_server.h" #include "currency_protocol/currency_protocol_handler.h" #include "daemon_commands_handler.h" #include "common/miniupnp_helper.h" @@ -85,6 +86,7 @@ int main(int argc, char* argv[]) nodetool::node_server >::init_options(desc_cmd_sett); currency::miner::init_options(desc_cmd_sett); bc_services::bc_offers_service::init_options(desc_cmd_sett); + currency::stratum_server::init_options(desc_cmd_sett); po::options_description desc_options("Allowed options"); @@ -146,8 +148,8 @@ int main(int argc, char* argv[]) } - - + // stratum server is enabled if any of its options present + bool stratum_enabled = currency::stratum_server::should_start(vm); LOG_PRINT("Module folder: " << argv[0], LOG_LEVEL_0); //create objects and link them @@ -162,6 +164,9 @@ int main(int argc, char* argv[]) daemon_cmmands_handler dch(p2psrv, rpc_server); tools::miniupnp_helper upnp_helper; //ccore.get_blockchain_storage().get_attachment_services_manager().add_service(&offers_service); + std::shared_ptr stratum_server_ptr; + if (stratum_enabled) + stratum_server_ptr = std::make_shared(&ccore); if (command_line::get_arg(vm, command_line::arg_show_rpc_autodoc)) { @@ -206,6 +211,15 @@ int main(int argc, char* argv[]) res = ccore.init(vm); CHECK_AND_ASSERT_MES(res, 1, "Failed to initialize core"); LOG_PRINT_L0("Core initialized OK"); + + if (stratum_enabled) + { + LOG_PRINT_L0("Initializing stratum server..."); + res = stratum_server_ptr->init(vm); + CHECK_AND_ASSERT_MES(res, 1, "Failed to initialize stratum server."); + } + + auto& bcs = ccore.get_blockchain_storage(); if (!offers_service.is_disabled() && bcs.get_current_blockchain_size() > 1 && bcs.get_top_block_id() != offers_service.get_last_seen_block_id()) @@ -231,16 +245,35 @@ int main(int argc, char* argv[]) CHECK_AND_ASSERT_MES(res, 1, "Failed to initialize core rpc server."); LOG_PRINT_L0("Core rpc server started ok"); + //start stratum only after core got initialized + if (stratum_enabled) + { + LOG_PRINT_L0("Starting stratum server..."); + res = stratum_server_ptr->run(false); + CHECK_AND_ASSERT_MES(res, 1, "Failed to start stratum server."); + LOG_PRINT_L0("Stratum server started ok"); + } - tools::signal_handler::install([&dch, &p2psrv] { + tools::signal_handler::install([&dch, &p2psrv, &stratum_server_ptr] { dch.stop_handling(); p2psrv.send_stop_signal(); + if (stratum_server_ptr) + stratum_server_ptr->send_stop_signal(); }); LOG_PRINT_L0("Starting p2p net loop..."); p2psrv.run(); LOG_PRINT_L0("p2p net loop stopped"); + //stop components + if (stratum_enabled) + { + LOG_PRINT_L0("Stopping stratum server..."); + stratum_server_ptr->send_stop_signal(); + stratum_server_ptr->timed_wait_server_stop(1000); + LOG_PRINT_L0("Stratum server stopped"); + } + LOG_PRINT_L0("Stopping core rpc server..."); rpc_server.send_stop_signal(); rpc_server.timed_wait_server_stop(5000); @@ -253,6 +286,9 @@ int main(int argc, char* argv[]) LOG_PRINT_L0("Deinitializing market..."); (static_cast(offers_service)).deinit(); + LOG_PRINT_L0("Deinitializing stratum server ..."); + stratum_server_ptr.reset(); + LOG_PRINT_L0("Deinitializing rpc server ..."); rpc_server.deinit(); LOG_PRINT_L0("Deinitializing currency_protocol..."); diff --git a/src/gui/qt-daemon/application/mainwindow.cpp b/src/gui/qt-daemon/application/mainwindow.cpp index 32a4c764..b06714e1 100644 --- a/src/gui/qt-daemon/application/mainwindow.cpp +++ b/src/gui/qt-daemon/application/mainwindow.cpp @@ -17,7 +17,7 @@ arg_type var_name = AUTO_VAL_INIT(var_name); \ view::api_response default_ar = AUTO_VAL_INIT(default_ar); \ if (!epee::serialization::load_t_from_json(var_name, param.toStdString())) \ -{ \ +{ \ default_ar.error_code = API_RETURN_CODE_BAD_ARG; \ return MAKE_RESPONSE(default_ar); \ } @@ -32,6 +32,20 @@ if (!epee::serialization::load_t_from_json(var_name, param.toStdString())) \ #define LOG_API_PARAMS(log_level) LOG_PRINT_BLUE(LOCAL_FUNCTION_DEF__ << "(" << param.toStdString() << ")", log_level) +#define CATCH_ENTRY_FAIL_API_RESPONCE() } \ + catch (const std::exception& ex) \ + { \ + LOG_ERROR("Exception catched, ERROR:" << ex.what()); \ + PREPARE_RESPONSE(view::api_void, err_resp); \ + err_resp.error_code = API_RETURN_CODE_INTERNAL_ERROR; \ + return MAKE_RESPONSE(err_resp); \ + } \ + catch(...) \ + { \ + PREPARE_RESPONSE(view::api_void, err_resp); \ + err_resp.error_code = API_RETURN_CODE_INTERNAL_ERROR; \ + return MAKE_RESPONSE(err_resp); \ + } #include "mainwindow.h" // @@ -107,7 +121,6 @@ MainWindow::MainWindow(): //workaround for macos broken tolower from std, very dirty hack bc_services::set_external_to_low_converter(convert_to_lower_via_qt); #endif - } MainWindow::~MainWindow() @@ -120,7 +133,9 @@ MainWindow::~MainWindow() void MainWindow::on_load_finished(bool ok) { + TRY_ENTRY(); LOG_PRINT("MainWindow::on_load_finished(ok = " << (ok ? "true" : "false") << ")", LOG_LEVEL_0); + CATCH_ENTRY2(void()); } @@ -128,26 +143,34 @@ void MainWindow::on_load_finished(bool ok) //------------- QString MainWindow::get_default_user_dir(const QString& param) { + TRY_ENTRY(); return tools::get_default_user_dir().c_str(); + CATCH_ENTRY_FAIL_API_RESPONCE(); } bool MainWindow::toggle_mining() { + TRY_ENTRY(); m_backend.toggle_pos_mining(); return true; + CATCH_ENTRY2(false); } QString MainWindow::get_exchange_last_top(const QString& params) { + TRY_ENTRY(); return QString(); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_tx_pool_info() { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_RESPONSE(currency::COMMAND_RPC_GET_POOL_INFO::response, ar); ar.error_code = m_backend.get_tx_pool_info(ar.response_data); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } // bool MainWindow::store_config() // { @@ -156,26 +179,33 @@ QString MainWindow::get_tx_pool_info() QString MainWindow::get_default_fee() { + TRY_ENTRY(); return QString(std::to_string(m_backend.get_default_fee()).c_str()); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_options() { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_RESPONSE(view::gui_options, ar); m_backend.get_gui_options(ar.response_data); ar.error_code = API_RETURN_CODE_OK; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } void MainWindow::tray_quit_requested() { + TRY_ENTRY(); LOG_PRINT_MAGENTA("[GUI]->[HTML] tray_quit_requested", LOG_LEVEL_0); emit quit_requested("{}"); + CATCH_ENTRY2(void()); } void MainWindow::closeEvent(QCloseEvent *event) { + TRY_ENTRY(); LOG_PRINT_L0("[GUI] CLOSE EVENT"); CHECK_AND_ASSERT_MES(m_gui_deinitialize_done_1 == m_backend_stopped_2, void(), "m_gui_deinitialize_done_1 != m_backend_stopped_2, m_gui_deinitialize_done_1 = " << m_gui_deinitialize_done_1 << "m_backend_stopped_2 = " << m_backend_stopped_2); @@ -201,10 +231,12 @@ void MainWindow::closeEvent(QCloseEvent *event) emit quit_requested("{}"); event->ignore(); } + CATCH_ENTRY2(void()); } std::string state_to_text(int s) { + TRY_ENTRY(); std::string res = epee::string_tools::int_to_hex(s); res += "("; if (s & Qt::WindowMinimized) @@ -218,10 +250,12 @@ std::string state_to_text(int s) res += ")"; return res; + CATCH_ENTRY2(""); } void MainWindow::changeEvent(QEvent *e) { + TRY_ENTRY(); switch (e->type()) { case QEvent::WindowStateChange: @@ -263,28 +297,32 @@ void MainWindow::changeEvent(QEvent *e) } QWidget::changeEvent(e); + CATCH_ENTRY2(void()); } bool MainWindow::store_app_config() { + TRY_ENTRY(); std::string conf_path = m_backend.get_config_folder() + "/" + GUI_INTERNAL_CONFIG; return tools::serialize_obj_to_file(m_config, conf_path); + CATCH_ENTRY2(false); } bool MainWindow::load_app_config() { + TRY_ENTRY(); std::string conf_path = m_backend.get_config_folder() + "/" + GUI_INTERNAL_CONFIG; return tools::unserialize_obj_from_file(m_config, conf_path); + CATCH_ENTRY2(false); } bool MainWindow::init(const std::string& htmlPath) { + TRY_ENTRY(); //QtWebEngine::initialize(); init_tray_icon(htmlPath); set_html_path(htmlPath); - - m_backend.subscribe_to_core_events(this); bool r = QSslSocket::supportsSsl(); @@ -304,17 +342,21 @@ bool MainWindow::init(const std::string& htmlPath) m_view->setContextMenuPolicy(Qt::ContextMenuPolicy::NoContextMenu); return true; + CATCH_ENTRY2(false); } void MainWindow::on_menu_show() { + TRY_ENTRY(); qDebug() << "Context menu: show()"; this->show(); this->activateWindow(); + CATCH_ENTRY2(void()); } void MainWindow::init_tray_icon(const std::string& htmlPath) { + TRY_ENTRY(); if (!QSystemTrayIcon::isSystemTrayAvailable()) { LOG_PRINT_L0("System tray is unavailable"); @@ -356,10 +398,12 @@ void MainWindow::init_tray_icon(const std::string& htmlPath) connect(m_tray_icon.get(), SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconActivated(QSystemTrayIcon::ActivationReason))); m_tray_icon->show(); + CATCH_ENTRY2(void()); } void MainWindow::bool_toggle_icon(const QString& param) { + TRY_ENTRY(); std::string path; if (param == "blocked") @@ -370,17 +414,21 @@ void MainWindow::bool_toggle_icon(const QString& param) QIcon qi(path.c_str()); qi.setIsMask(true); m_tray_icon->setIcon(qi); + CATCH_ENTRY2(void()); } QString MainWindow::get_log_file() { + TRY_ENTRY(); std::string buff; epee::file_io_utils::load_last_n_from_file_to_string(log_space::log_singletone::get_actual_log_file_path(), 1000000, buff); return QString::fromStdString(buff); + CATCH_ENTRY2(""); } void MainWindow::store_window_pos() { + TRY_ENTRY(); QPoint pos = this->pos(); QSize sz = this->size(); m_config.m_window_position.first = pos.x(); @@ -388,9 +436,11 @@ void MainWindow::store_window_pos() m_config.m_window_size.first = sz.height(); m_config.m_window_size.second = sz.width(); + CATCH_ENTRY2(void()); } void MainWindow::store_pos(bool consider_showed) { + TRY_ENTRY(); m_config.is_maximazed = this->isMaximized(); //here position supposed to be filled from last unserialize or filled on maximize handler if (!m_config.is_maximazed) @@ -398,9 +448,11 @@ void MainWindow::store_pos(bool consider_showed) if (consider_showed) m_config.is_showed = this->isVisible(); + CATCH_ENTRY2(void()); } void MainWindow::restore_pos(bool consider_showed) { + TRY_ENTRY(); if (m_config.is_maximazed) { this->setWindowState(windowState() | Qt::WindowMaximized); @@ -426,9 +478,11 @@ void MainWindow::restore_pos(bool consider_showed) this->showMinimized(); } + CATCH_ENTRY2(void()); } void MainWindow::trayIconActivated(QSystemTrayIcon::ActivationReason reason) { + TRY_ENTRY(); if (reason == QSystemTrayIcon::ActivationReason::Trigger) { if ( !(this->windowState() & Qt::WindowMinimized)) @@ -443,46 +497,58 @@ void MainWindow::trayIconActivated(QSystemTrayIcon::ActivationReason reason) } + CATCH_ENTRY2(void()); } void MainWindow::load_file(const QString &fileName) { + TRY_ENTRY(); LOG_PRINT_L0("Loading html from path: " << fileName.toStdString()); m_view->load(QUrl::fromLocalFile(QFileInfo(fileName).absoluteFilePath())); + CATCH_ENTRY2(void()); } QString MainWindow::set_clipboard(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); QClipboard *clipboard = QApplication::clipboard(); clipboard->setText(param); - return "OK"; + return API_RETURN_CODE_OK; + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::get_clipboard() { + TRY_ENTRY(); LOG_API_TIMING(); QClipboard *clipboard = QApplication::clipboard(); return clipboard->text(); + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::on_request_quit() { + TRY_ENTRY(); LOG_PRINT_MAGENTA("[HTML]->[GUI] on_request_quit", LOG_LEVEL_0); m_gui_deinitialize_done_1 = true; m_backend.send_stop_signal(); - return "OK"; + return API_RETURN_CODE_OK; + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } bool MainWindow::do_close() { + TRY_ENTRY(); this->close(); return true; + CATCH_ENTRY2(false); } bool MainWindow::show_inital() { + TRY_ENTRY(); if (load_app_config()) restore_pos(true); else @@ -497,10 +563,12 @@ bool MainWindow::show_inital() m_config.is_showed = true; } return true; + CATCH_ENTRY2(false); } bool MainWindow::on_backend_stopped() { + TRY_ENTRY(); LOG_PRINT_L0("[BACKEND]->[GUI] on_backend_stopped"); m_backend_stopped_2 = true; //m_deinitialize_done = true; @@ -510,10 +578,12 @@ bool MainWindow::on_backend_stopped() /*bool r = */QMetaObject::invokeMethod(this, "do_close", Qt::QueuedConnection); // } return true; + CATCH_ENTRY2(false); } bool MainWindow::update_daemon_status(const view::daemon_status_info& info) { + TRY_ENTRY(); //this->update_daemon_state(info); std::string json_str; epee::serialization::store_t_to_json(info, json_str); @@ -527,26 +597,34 @@ bool MainWindow::update_daemon_status(const view::daemon_status_info& info) QMetaObject::invokeMethod(this, "update_daemon_state", Qt::QueuedConnection, Q_ARG(QString, json_str.c_str())); m_last_update_daemon_status_json = json_str; return true; + CATCH_ENTRY2(false); } bool MainWindow::show_msg_box(const std::string& message) { + TRY_ENTRY(); QMessageBox::information(this, "Error", message.c_str(), QMessageBox::Ok); return true; + CATCH_ENTRY2(false); } bool MainWindow::init_backend(int argc, char* argv[]) { + TRY_ENTRY(); return m_backend.init(argc, argv, this); + CATCH_ENTRY2(false); } QString MainWindow::is_remnotenode_mode_preconfigured() { - return "FALSE"; + TRY_ENTRY(); + return API_RETURN_CODE_FALSE; + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::start_backend(const QString& params) { + TRY_ENTRY(); view::start_backend_params sbp = AUTO_VAL_INIT(sbp); view::api_response ar = AUTO_VAL_INIT(ar); @@ -564,28 +642,34 @@ QString MainWindow::start_backend(const QString& params) } ar.error_code = API_RETURN_CODE_OK; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } bool MainWindow::update_wallet_status(const view::wallet_status_info& wsi) { + TRY_ENTRY(); m_wallet_states->operator [](wsi.wallet_id) = wsi.wallet_state; std::string json_str; epee::serialization::store_t_to_json(wsi, json_str); LOG_PRINT_L0(get_wallet_log_prefix(wsi.wallet_id) + "SENDING SIGNAL -> [update_wallet_status]:" << std::endl << json_str ); QMetaObject::invokeMethod(this, "update_wallet_status", Qt::QueuedConnection, Q_ARG(QString, json_str.c_str())); return true; + CATCH_ENTRY2(false); } bool MainWindow::set_options(const view::gui_options& opt) { + TRY_ENTRY(); std::string json_str; epee::serialization::store_t_to_json(opt, json_str); LOG_PRINT_L0("SENDING SIGNAL -> [set_options]:" << std::endl << json_str); QMetaObject::invokeMethod(this, "set_options", Qt::QueuedConnection, Q_ARG(QString, json_str.c_str())); return true; + CATCH_ENTRY2(false); } bool MainWindow::nativeEventFilter(const QByteArray &eventType, void *message, long *result) { + TRY_ENTRY(); #ifdef WIN32 MSG *msg = static_cast< MSG * >(message); if (msg->message == WM_QUERYENDSESSION) @@ -595,22 +679,26 @@ bool MainWindow::nativeEventFilter(const QByteArray &eventType, void *message, l } #endif return false; + CATCH_ENTRY2(false); } bool MainWindow::update_wallets_info(const view::wallets_summary_info& wsi) { + TRY_ENTRY(); std::string json_str; epee::serialization::store_t_to_json(wsi, json_str); LOG_PRINT_L0("SENDING SIGNAL -> [update_wallets_info]"<< std::endl << json_str ); QMetaObject::invokeMethod(this, "update_wallets_info", Qt::QueuedConnection, Q_ARG(QString, json_str.c_str())); return true; + CATCH_ENTRY2(false); } bool MainWindow::money_transfer(const view::transfer_event_info& tei) { + TRY_ENTRY(); std::string json_str; epee::serialization::store_t_to_json(tei, json_str); @@ -650,10 +738,12 @@ bool MainWindow::money_transfer(const view::transfer_event_info& tei) show_notification(title, msg); return true; + CATCH_ENTRY2(false); } bool MainWindow::money_transfer_cancel(const view::transfer_event_info& tei) { + TRY_ENTRY(); std::string json_str; epee::serialization::store_t_to_json(tei, json_str); @@ -663,17 +753,21 @@ bool MainWindow::money_transfer_cancel(const view::transfer_event_info& tei) return true; + CATCH_ENTRY2(false); } bool MainWindow::wallet_sync_progress(const view::wallet_sync_progres_param& p) { + TRY_ENTRY(); LOG_PRINT_L2(get_wallet_log_prefix(p.wallet_id) + "SENDING SIGNAL -> [wallet_sync_progress]" << " wallet_id: " << p.wallet_id << ": " << p.progress << "%"); //this->wallet_sync_progress(epee::serialization::store_t_to_json(p).c_str()); QMetaObject::invokeMethod(this, "wallet_sync_progress", Qt::QueuedConnection, Q_ARG(QString, epee::serialization::store_t_to_json(p).c_str())); return true; + CATCH_ENTRY2(false); } bool MainWindow::set_html_path(const std::string& path) { + TRY_ENTRY(); //init_tray_icon(path); #ifdef _MSC_VER load_file(std::string(path + "/index.html").c_str()); @@ -682,38 +776,48 @@ bool MainWindow::set_html_path(const std::string& path) load_file(QString((std::string("") + path + "/index.html").c_str())); #endif return true; + CATCH_ENTRY2(false); } bool MainWindow::pos_block_found(const currency::block& block_found) { + TRY_ENTRY(); std::stringstream ss; ss << "Found Block h = " << currency::get_block_height(block_found); LOG_PRINT_L0("SENDING SIGNAL -> [update_pos_mining_text]"); //this->update_pos_mining_text(ss.str().c_str()); QMetaObject::invokeMethod(this, "update_pos_mining_text", Qt::QueuedConnection, Q_ARG(QString, ss.str().c_str())); return true; + CATCH_ENTRY2(false); } QString MainWindow::get_version() { + TRY_ENTRY(); return PROJECT_VERSION_LONG; + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_os_version() { + TRY_ENTRY(); return tools::get_os_version_string().c_str(); + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::get_alias_coast(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::struct_with_one_t_type, lvl); view::get_alias_coast_response resp; resp.error_code = m_backend.get_alias_coast(lvl.v, resp.coast); return epee::serialization::store_t_to_json(resp).c_str(); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::set_localization_strings(const QString param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::set_localization_request, lr); view::api_response resp; @@ -733,10 +837,12 @@ QString MainWindow::set_localization_strings(const QString param) LOG_PRINT_L0("New localization set, language title: " << lr.language_title << ", strings " << lr.strings.size()); } return epee::serialization::store_t_to_json(resp).c_str(); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::request_alias_registration(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); //return que_call2("request_alias_registration", param, [this](const view::request_alias_param& tp, view::api_response& ar){ PREPARE_ARG_FROM_JSON(view::request_alias_param, tp); @@ -754,9 +860,11 @@ QString MainWindow::request_alias_registration(const QString& param) ar.response_data.tx_blob_size = currency::get_object_blobsize(res_tx); ar.error_code = API_RETURN_CODE_OK; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::request_alias_update(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::request_alias_param, tp); PREPARE_RESPONSE(view::transfer_response, ar); @@ -773,9 +881,11 @@ QString MainWindow::request_alias_update(const QString& param) ar.response_data.tx_blob_size = currency::get_object_blobsize(res_tx); ar.error_code = API_RETURN_CODE_OK; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::transfer(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); //return que_call2("transfer", json_transfer_object, [this](const view::transfer_params& tp, view::api_response& ar){ PREPARE_ARG_FROM_JSON(view::transfer_params, tp); @@ -796,11 +906,14 @@ QString MainWindow::transfer(const QString& param) ar.response_data.tx_hash = string_tools::pod_to_hex(currency::get_transaction_hash(res_tx)); ar.response_data.tx_blob_size = currency::get_object_blobsize(res_tx); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } void MainWindow::message_box(const QString& msg) { + TRY_ENTRY(); show_msg_box(msg.toStdString()); + CATCH_ENTRY2(void()); } struct serialize_variant_visitor : public boost::static_visitor @@ -815,12 +928,15 @@ struct serialize_variant_visitor : public boost::static_visitor template std::string serialize_variant(const t_variant& v) { + TRY_ENTRY(); return boost::apply_visitor(serialize_variant_visitor(), v); + CATCH_ENTRY2(""); } void MainWindow::on_core_event(const std::string event_name, const currency::core_event_v& e) { + TRY_ENTRY(); //at the moment we don't forward CORE_EVENT_BLOCK_ADDEDevent to GUI if (CORE_EVENT_BLOCK_ADDED == event_name) return; @@ -828,10 +944,12 @@ void MainWindow::on_core_event(const std::string event_name, const currency::cor m_events.m_que.push_back(currency::core_event()); m_events.m_que.back().details = currency::core_event_v(e); m_events.m_que.back().method = event_name; + CATCH_ENTRY2(void()); } std::string get_events_que_json_string(const std::list& eq, std::string& methods_list) { + TRY_ENTRY(); //t the moment portable_storage is not supporting polymorphic objects lists, so //there is no hope to make serialization with variant list, lets handle it manual std::stringstream ss; @@ -851,10 +969,12 @@ std::string get_events_que_json_string(const std::list& eq } ss << "]}"; return ss.str(); + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } void MainWindow::on_complete_events() { + TRY_ENTRY(); if (m_events.m_que.size()) { std::string methods_list; @@ -874,14 +994,18 @@ void MainWindow::on_complete_events() m_events.m_que.clear(); } + CATCH_ENTRY2(void()); } void MainWindow::on_clear_events() { + TRY_ENTRY(); m_events.m_que.clear(); + CATCH_ENTRY2(void()); } QString MainWindow::get_secure_app_data(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); view::password_data pwd = AUTO_VAL_INIT(pwd); @@ -917,10 +1041,12 @@ QString MainWindow::get_secure_app_data(const QString& param) } return app_data_buff.substr(sizeof(app_data_file_binary_header)).c_str(); + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::store_app_data(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); view::api_response ar; ar.error_code = API_RETURN_CODE_FAIL; @@ -940,9 +1066,11 @@ QString MainWindow::store_app_data(const QString& param) //ar.error_code = store_to_file((m_backend.get_config_folder() + "/" + GUI_CONFIG_FILENAME).c_str(), param).toStdString(); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::is_file_exist(const QString& path) { + TRY_ENTRY(); try{ bool r = file_io_utils::is_file_exist(path.toStdWString()); if (r) @@ -960,9 +1088,11 @@ QString MainWindow::is_file_exist(const QString& path) { return API_RETURN_CODE_ALREADY_EXISTS; } + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::store_to_file(const QString& path, const QString& buff) { + TRY_ENTRY(); try{ bool r = file_io_utils::save_string_to_file_throw(path.toStdWString(), buff.toStdString()); if (r) @@ -982,18 +1112,22 @@ QString MainWindow::store_to_file(const QString& path, const QString& buff) } + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::get_app_data() { + TRY_ENTRY(); LOG_API_TIMING(); std::string app_data_buff; file_io_utils::load_file_to_string(m_backend.get_config_folder() + "/" + GUI_CONFIG_FILENAME, app_data_buff); return app_data_buff.c_str(); + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::store_secure_app_data(const QString& param, const QString& pass) { + TRY_ENTRY(); LOG_API_TIMING(); if (!tools::create_directories_if_necessary(m_backend.get_config_folder())) { @@ -1018,10 +1152,12 @@ QString MainWindow::store_secure_app_data(const QString& param, const QString& p ar.error_code = API_RETURN_CODE_FAIL; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::have_secure_app_data() { + TRY_ENTRY(); LOG_API_TIMING(); view::api_response ar = AUTO_VAL_INIT(ar); @@ -1032,9 +1168,11 @@ QString MainWindow::have_secure_app_data() ar.error_code = API_RETURN_CODE_FALSE; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::drop_secure_app_data() { + TRY_ENTRY(); LOG_API_TIMING(); view::api_response ar = AUTO_VAL_INIT(ar); @@ -1044,9 +1182,11 @@ QString MainWindow::drop_secure_app_data() else ar.error_code = API_RETURN_CODE_FALSE; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_all_aliases() { + TRY_ENTRY(); LOG_API_TIMING(); //PREPARE_ARG_FROM_JSON(view::struct_with_one_t_type, param); PREPARE_RESPONSE(view::alias_set, rsp); @@ -1055,30 +1195,38 @@ QString MainWindow::get_all_aliases() QString res = MAKE_RESPONSE(rsp); LOG_PRINT_GREEN("GET_ALL_ALIASES: res: " << rsp.error_code << ", count: " << rsp.response_data.aliases.size() << ", string buff size: " << res.size(), LOG_LEVEL_1); return res; + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_alias_info_by_address(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_RESPONSE(currency::alias_rpc_details, rsp); rsp.error_code = m_backend.get_alias_info_by_address(param.toStdString(), rsp.response_data); return MAKE_RESPONSE(rsp); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_alias_info_by_name(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_RESPONSE(currency::alias_rpc_details, rsp); rsp.error_code = m_backend.get_alias_info_by_name(param.toStdString(), rsp.response_data); return MAKE_RESPONSE(rsp); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::validate_address(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); view::address_validation_response ar = AUTO_VAL_INIT(ar); ar.error_code = m_backend.validate_address(param.toStdString(), ar.payment_id); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::set_log_level(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::struct_with_one_t_type, lvl); epee::log_space::get_set_log_detalisation_level(true, lvl.v); @@ -1086,14 +1234,17 @@ QString MainWindow::set_log_level(const QString& param) LOG_PRINT("[LOG LEVEL]: set to " << lvl.v, LOG_LEVEL_MIN); return MAKE_RESPONSE(default_ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_log_level(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_RESPONSE(view::struct_with_one_t_type, ar); ar.response_data.v = epee::log_space::get_set_log_detalisation_level(); ar.error_code = API_RETURN_CODE_OK; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } // QString MainWindow::dump_all_offers() @@ -1127,12 +1278,15 @@ QString MainWindow::get_log_level(const QString& param) QString MainWindow::webkit_launched_script() { + TRY_ENTRY(); m_last_update_daemon_status_json.clear(); return ""; + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } //////////////////// QString MainWindow::show_openfile_dialog(const QString& param) { + TRY_ENTRY(); view::system_filedialog_request ofdr = AUTO_VAL_INIT(ofdr); view::system_filedialog_response ofdres = AUTO_VAL_INIT(ofdres); if (!epee::serialization::load_t_from_json(ofdr, param.toStdString())) @@ -1154,11 +1308,13 @@ QString MainWindow::show_openfile_dialog(const QString& param) ofdres.error_code = API_RETURN_CODE_OK; ofdres.path = path.toStdString(); return MAKE_RESPONSE(ofdres); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::show_savefile_dialog(const QString& param) { + TRY_ENTRY(); PREPARE_ARG_FROM_JSON(view::system_filedialog_request, ofdr); view::system_filedialog_response ofdres = AUTO_VAL_INIT(ofdres); @@ -1175,10 +1331,12 @@ QString MainWindow::show_savefile_dialog(const QString& param) ofdres.error_code = API_RETURN_CODE_OK; ofdres.path = path.toStdString(); return MAKE_RESPONSE(ofdres); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::close_wallet(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); //return que_call2("close_wallet", param, [this](const view::wallet_id_obj& owd, view::api_response& ar){ PREPARE_ARG_FROM_JSON(view::wallet_id_obj, owd); @@ -1186,25 +1344,30 @@ QString MainWindow::close_wallet(const QString& param) ar.error_code = m_backend.close_wallet(owd.wallet_id); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_contracts(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::wallet_id_obj, owd); PREPARE_RESPONSE(view::contracts_array, ar); ar.error_code = m_backend.get_contracts(owd.wallet_id, ar.response_data.contracts); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::create_proposal(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::create_proposal_param, cpp); PREPARE_RESPONSE(view::contracts_array, ar); ar.error_code = m_backend.create_proposal(cpp.wallet_id, cpp.details, cpp.payment_id, cpp.expiration_period, cpp.fee, cpp.b_fee); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } @@ -1212,16 +1375,19 @@ QString MainWindow::create_proposal(const QString& param) QString MainWindow::accept_proposal(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::wallet_and_contract_id_param, waip); PREPARE_RESPONSE(view::api_void, ar); ar.error_code = m_backend.accept_proposal(waip.wallet_id, waip.contract_id); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::release_contract(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::accept_proposal_param, rcp); PREPARE_RESPONSE(view::api_void, ar); @@ -1229,10 +1395,12 @@ QString MainWindow::release_contract(const QString& param) ar.error_code = m_backend.release_contract(rcp.wallet_id, rcp.contract_id, rcp.release_type); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::request_cancel_contract(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::crequest_cancel_contract_param, rcp); PREPARE_RESPONSE(view::api_void, ar); @@ -1240,10 +1408,12 @@ QString MainWindow::request_cancel_contract(const QString& param) ar.error_code = m_backend.request_cancel_contract(rcp.wallet_id, rcp.contract_id, rcp.fee, rcp.expiration_period); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::accept_cancel_contract(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::wallet_and_contract_id_param, wci); PREPARE_RESPONSE(view::api_void, ar); @@ -1251,31 +1421,36 @@ QString MainWindow::accept_cancel_contract(const QString& param) ar.error_code = m_backend.accept_cancel_contract(wci.wallet_id, wci.contract_id); return MAKE_RESPONSE(ar); - + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::generate_wallet(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); //return que_call2("generate_wallet", param, [this](const view::open_wallet_request& owd, view::api_response& ar){ PREPARE_ARG_FROM_JSON(view::open_wallet_request, owd); PREPARE_RESPONSE(view::open_wallet_response, ar); ar.error_code = m_backend.generate_wallet(epee::string_encoding::utf8_to_wstring(owd.path), owd.pass, ar.response_data); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::restore_wallet(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); //return que_call2("restore_wallet", param, [this](const view::restore_wallet_request& owd, view::api_response& ar){ PREPARE_ARG_FROM_JSON(view::restore_wallet_request, owd); PREPARE_RESPONSE(view::open_wallet_response, ar); ar.error_code = m_backend.restore_wallet(epee::string_encoding::utf8_to_wstring(owd.path), owd.pass, owd.restore_key, ar.response_data); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::open_wallet(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); //return que_call2("open_wallet", param, [this](const view::open_wallet_request& owd, view::api_response& ar){ @@ -1283,42 +1458,51 @@ QString MainWindow::open_wallet(const QString& param) PREPARE_RESPONSE(view::open_wallet_response, ar); ar.error_code = m_backend.open_wallet(epee::string_encoding::utf8_to_wstring(owd.path), owd.pass, ar.response_data); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_my_offers(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); //return que_call2("open_wallet", param, [this](const view::open_wallet_request& owd, view::api_response& ar){ PREPARE_ARG_FROM_JSON(bc_services::core_offers_filter, f); PREPARE_RESPONSE(currency::COMMAND_RPC_GET_ALL_OFFERS::response, ar); ar.error_code = m_backend.get_my_offers(f, ar.response_data.offers); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_fav_offers(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::get_fav_offers_request, f); PREPARE_RESPONSE(currency::COMMAND_RPC_GET_ALL_OFFERS::response, ar); ar.error_code = m_backend.get_fav_offers(f.ids, f.filter, ar.response_data.offers); return MAKE_RESPONSE(ar); - + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::is_pos_allowed() { + TRY_ENTRY(); LOG_API_TIMING(); return m_backend.is_pos_allowed().c_str(); + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::run_wallet(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::wallet_id_obj, wio); default_ar.error_code = m_backend.run_wallet(wio.wallet_id); return MAKE_RESPONSE(default_ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::resync_wallet(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); //return que_call2("get_wallet_info", param, [this](const view::wallet_id_obj& a, view::api_response& ar){ PREPARE_ARG_FROM_JSON(view::wallet_id_obj, a); @@ -1326,31 +1510,24 @@ QString MainWindow::resync_wallet(const QString& param) ar.error_code = m_backend.resync_wallet(a.wallet_id); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } -// QString MainWindow::get_all_offers(const QString& param) -// { -// LOG_API_TIMING(); -// //return que_call2("get_all_offers", param, [this](const view::api_void& a, view::api_response& ar){ -// // PREPARE_ARG_FROM_JSON(view::api_void, a); -// PREPARE_RESPONSE(currency::COMMAND_RPC_GET_ALL_OFFERS::response, ar); -// ar.error_code = m_backend.get_all_offers(ar.response_data); -// return MAKE_RESPONSE(ar); -// } - - QString MainWindow::get_offers_ex(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); //return que_call2("get_offers_ex", param, [this](const bc_services::core_offers_filter& f, view::api_response& ar){ PREPARE_ARG_FROM_JSON(bc_services::core_offers_filter, f); PREPARE_RESPONSE(currency::COMMAND_RPC_GET_ALL_OFFERS::response, ar); ar.error_code = m_backend.get_offers_ex(f, ar.response_data.offers, ar.response_data.total_offers); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::push_offer(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); LOG_API_PARAMS(LOG_LEVEL_2); //return que_call2("push_offer", param, [this](const view::push_offer_param& a, view::api_response& ar){ @@ -1369,10 +1546,12 @@ QString MainWindow::push_offer(const QString& param) ar.response_data.tx_blob_size = currency::get_object_blobsize(res_tx); ar.error_code = API_RETURN_CODE_OK; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::cancel_offer(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); LOG_API_PARAMS(LOG_LEVEL_2); // return que_call2("cancel_offer", param, [this](const view::cancel_offer_param& a, view::api_response& ar){ @@ -1390,10 +1569,12 @@ QString MainWindow::cancel_offer(const QString& param) ar.response_data.tx_blob_size = currency::get_object_blobsize(res_tx); ar.error_code = API_RETURN_CODE_OK; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::push_update_offer(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); LOG_API_PARAMS(LOG_LEVEL_2); //return que_call2("cancel_offer", param, [this](const bc_services::update_offer_details& a, view::api_response& ar){ @@ -1411,20 +1592,24 @@ QString MainWindow::push_update_offer(const QString& param) ar.response_data.tx_blob_size = currency::get_object_blobsize(res_tx); ar.error_code = API_RETURN_CODE_OK; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_recent_transfers(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::get_recent_transfers_request, a); PREPARE_RESPONSE(view::transfers_array, ar); ar.error_code = m_backend.get_recent_transfers(a.wallet_id, a.offest, a.count, ar.response_data); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_mining_history(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); //return prepare_call("get_mining_history", param, [this](const view::wallet_id_obj& a, view::api_response& ar) { PREPARE_ARG_FROM_JSON(view::wallet_id_obj, a); @@ -1436,62 +1621,78 @@ QString MainWindow::get_mining_history(const QString& param) ar.error_code = API_RETURN_CODE_OK; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::start_pos_mining(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::wallet_id_obj, wo); default_ar.error_code = m_backend.start_pos_mining(wo.wallet_id); return MAKE_RESPONSE(default_ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::stop_pos_mining(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::wallet_id_obj, wo); default_ar.error_code = m_backend.stop_pos_mining(wo.wallet_id); return MAKE_RESPONSE(default_ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_smart_wallet_info(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::wallet_id_obj, wo); PREPARE_RESPONSE(view::get_restore_info_response, ar); ar.error_code = m_backend.get_wallet_restore_info(wo.wallet_id, ar.response_data.restore_key); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::get_mining_estimate(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::request_mining_estimate, me); PREPARE_RESPONSE(view::response_mining_estimate, ar); ar.error_code = m_backend.get_mining_estimate(me.amount_coins, me.time, ar.response_data.final_amount, ar.response_data.all_coins_and_pos_diff_rate, ar.response_data.days_estimate); return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::backup_wallet_keys(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::backup_keys_request, me); default_ar.error_code = m_backend.backup_wallet(me.wallet_id, epee::string_encoding::utf8_to_wstring(me.path)); return MAKE_RESPONSE(default_ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::reset_wallet_password(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::reset_pass_request, me); default_ar.error_code = m_backend.reset_wallet_password(me.wallet_id, me.pass); return MAKE_RESPONSE(default_ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::is_wallet_password_valid(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::reset_pass_request, me); default_ar.error_code = m_backend.is_wallet_password_valid(me.wallet_id, me.pass); return MAKE_RESPONSE(default_ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::is_autostart_enabled() { + TRY_ENTRY(); LOG_API_TIMING(); view::api_response ar; @@ -1501,10 +1702,12 @@ QString MainWindow::is_autostart_enabled() ar.error_code = API_RETURN_CODE_FALSE; return MAKE_RESPONSE(ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::toggle_autostart(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::struct_with_one_t_type, as); @@ -1514,16 +1717,20 @@ QString MainWindow::toggle_autostart(const QString& param) default_ar.error_code = API_RETURN_CODE_FAIL; return MAKE_RESPONSE(default_ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::check_available_sources(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::api_request_t >, sources); return m_backend.check_available_sources(sources.wallet_id, sources.req_data).c_str(); + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::open_url_in_browser(const QString& param) { + TRY_ENTRY(); QString prefix = "https://"; if (!QDesktopServices::openUrl(QUrl(prefix + param))) { @@ -1532,20 +1739,26 @@ QString MainWindow::open_url_in_browser(const QString& param) } LOG_PRINT_L0("[Open URL]: " << param.toStdString()); return API_RETURN_CODE_OK; + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } QString MainWindow::is_valid_restore_wallet_text(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); return m_backend.is_valid_brain_restore_data(param.toStdString()).c_str(); + CATCH_ENTRY2(API_RETURN_CODE_INTERNAL_ERROR); } void MainWindow::contextMenuEvent(QContextMenuEvent * event) { + TRY_ENTRY(); + CATCH_ENTRY2(void()); } QString MainWindow::print_text(const QString& param) { + TRY_ENTRY(); LOG_API_TIMING(); PREPARE_ARG_FROM_JSON(view::print_text_param, ptp); @@ -1572,20 +1785,24 @@ QString MainWindow::print_text(const QString& param) default_ar.error_code = API_RETURN_CODE_OK; LOG_PRINT_L0("[PRINT_TEXT] default_ar.error_code = " << default_ar.error_code); return MAKE_RESPONSE(default_ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } QString MainWindow::print_log(const QString& param) { + TRY_ENTRY(); PREPARE_ARG_FROM_JSON(view::print_log_params, plp); LOG_PRINT("[GUI_LOG]" << plp.msg, plp.log_level); default_ar.error_code = API_RETURN_CODE_OK; return MAKE_RESPONSE(default_ar); + CATCH_ENTRY_FAIL_API_RESPONCE(); } void MainWindow::show_notification(const std::string& title, const std::string& message) { + TRY_ENTRY(); LOG_PRINT_L1("system notification: \"" << title << "\", \"" << message << "\""); // it's expected that title and message are utf-8 encoded! @@ -1598,6 +1815,7 @@ void MainWindow::show_notification(const std::string& title, const std::string& // use native notification system on macOS notification_helper::show(title, message); #endif + CATCH_ENTRY2(void()); } diff --git a/src/gui/qt-daemon/html/assets/i18n/en.json b/src/gui/qt-daemon/html/assets/i18n/en.json index adc97576..cbb4ee07 100644 --- a/src/gui/qt-daemon/html/assets/i18n/en.json +++ b/src/gui/qt-daemon/html/assets/i18n/en.json @@ -15,7 +15,7 @@ "BACK": "Go back" }, "BREADCRUMBS": { - "ADD_WALLET": "Add new wallet", + "ADD_WALLET": "Add wallet", "CREATE_WALLET": "Create new wallet", "SAVE_PHRASE": "Save your seed phrase", "OPEN_WALLET": "Open existing wallet", @@ -30,7 +30,7 @@ }, "SIDEBAR": { "TITLE": "Wallets", - "ADD_NEW": "+ Add new", + "ADD_NEW": "+ Add", "ACCOUNT": { "STAKING": "Staking", "MESSAGES": "New offers/Messages", @@ -68,6 +68,7 @@ "FORM_ERRORS": { "NAME_REQUIRED": "Name is required.", "NAME_DUPLICATE": "Name is duplicate.", + "MAX_LENGTH": "Maximum name length reached.", "CONFIRM_NOT_MATCH": "Confirm password not match." } }, @@ -80,7 +81,8 @@ "FILE_NOT_FOUND2": "

It might have been renamed or moved.
To open it, use the \"Open wallet\" button.", "FORM_ERRORS": { "NAME_REQUIRED": "Name is required.", - "NAME_DUPLICATE": "Name is duplicate." + "NAME_DUPLICATE": "Name is duplicate.", + "MAX_LENGTH": "Maximum name length reached." } }, "RESTORE_WALLET": { @@ -95,6 +97,7 @@ "FORM_ERRORS": { "NAME_REQUIRED": "Name is required.", "NAME_DUPLICATE": "Name is duplicate.", + "MAX_LENGTH": "Maximum name length reached.", "CONFIRM_NOT_MATCH": "Confirm password not match.", "KEY_REQUIRED": "Key is required.", "KEY_NOT_VALID": "Key not valid." @@ -104,11 +107,24 @@ "TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your wallet.", "BUTTON_CREATE_ACCOUNT" : "Create wallet" }, + "PROGRESS": { + "ADD_WALLET": "Add wallet", + "SELECT_LOCATION": "Select wallet location", + "CREATE_WALLET": "Create new wallet", + "RESTORE_WALLET": "Restore from backup" + }, "SETTINGS": { "TITLE": "Settings", "DARK_THEME": "Dark theme", "WHITE_THEME": "White theme", "GRAY_THEME": "Grey theme", + "APP_LOCK": { + "TITLE": "Lock app after:", + "TIME1": "5 min", + "TIME2": "15 min", + "TIME3": "1 hour", + "TIME4": "Never" + }, "MASTER_PASSWORD": { "TITLE": "Update master password", "OLD": "Old password", @@ -145,10 +161,11 @@ "LABEL_SEED_PHRASE": "Seed phrase", "SEED_PHRASE_HINT": "Click to reveal the seed phrase", "BUTTON_SAVE": "Save", - "BUTTON_REMOVE": "Remove wallet", + "BUTTON_REMOVE": "Close wallet", "FORM_ERRORS": { "NAME_REQUIRED": "Name is required.", - "NAME_DUPLICATE": "Name is duplicate." + "NAME_DUPLICATE": "Name is duplicate.", + "MAX_LENGTH": "Maximum name length reached." } }, "ASSIGN_ALIAS": { @@ -170,7 +187,8 @@ "NAME_WRONG": "Alias has wrong name", "NAME_LENGTH": "The alias must be 6-25 characters long", "NAME_EXISTS": "Alias name already exists", - "NO_MONEY": "You do not have enough funds to assign this alias" + "NO_MONEY": "You do not have enough funds to assign this alias", + "MAX_LENGTH": "Maximum comment length reached" }, "ONE_ALIAS": "You can create only one alias per wallet", "REQUEST_ADD_REG": "The alias will be assigned within 10 minutes" @@ -185,7 +203,8 @@ "PLACEHOLDER": "Enter comment" }, "FORM_ERRORS": { - "NO_MONEY": "You do not have enough funds to change the comment to this alias" + "NO_MONEY": "You do not have enough funds to change the comment to this alias", + "MAX_LENGTH": "Maximum comment length reached" }, "COST": "Cost to edit alias {{value}} {{currency}}", "BUTTON_EDIT": "Edit", @@ -202,7 +221,7 @@ }, "ADDRESS": { "LABEL": "The account to which the alias will be transferred", - "PLACEHOLDER": "Enter account number" + "PLACEHOLDER": "Enter wallet address" }, "FORM_ERRORS": { "WRONG_ADDRESS": "No wallet with this account exists", @@ -234,7 +253,7 @@ }, "HISTORY": { "STATUS": "Status", - "STATUS_TOOLTIP": "Approved {{current}}/{{total}}", + "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}", "SEND": "Send", "RECEIVED": "Received", "DATE": "Date", @@ -336,6 +355,7 @@ "AMOUNT": "Amount", "YOUR_DEPOSIT": "Your deposit", "SELLER_DEPOSIT": "Seller deposit", + "BUYER_DEPOSIT": "Buyer deposit", "SAME_AMOUNT": "Same amount", "COMMENT": "Comment", "DETAILS": "Additional details", @@ -347,6 +367,7 @@ "SELLER_NOT_VALID": "Seller not valid.", "AMOUNT_REQUIRED": "Amount is required.", "YOUR_DEPOSIT_REQUIRED": "Your deposit is required.", + "YOUR_DEPOSIT_TOO_SMALL": "Your deposit should be equal or greater than amount.", "SELLER_DEPOSIT_REQUIRED": "Seller deposit is required.", "SELLER_SAME": "The seller's and buyer's accounts are identical. The seller and buyer must use different wallet for the contract.", "COMMENT_MAXIMUM": "Maximum field length reached." @@ -393,7 +414,13 @@ "BUTTON_RECEIVED": "Item received (Transfer payment and return pledge to seller)", "BUTTON_CANCEL_BUYER": "Cancel contract (Return pledge)", "BUTTON_NOT_CANCEL": "Do not cancel (Item shipped)", - "BUTTON_CANCEL_SELLER": "Cancel contract (Return pledge)" + "BUTTON_CANCEL_SELLER": "Cancel contract (Return pledge)", + "HOUR": "hour", + "HOURS": "hours", + "CANCEL": "Cancel", + "NULLIFY_QUESTION": "Are you sure you want to nullify your pledge and the seller's pledge?", + "BUTTON_NULLIFY_SHORT": "Nullify", + "WAITING_TIME_QUESTION": "Are you sure you want to cancel the contract?" }, "MESSAGES": { "ADDRESS": "Address", @@ -427,7 +454,7 @@ "CORE_BUSY": "Internal error (core is busy)", "DAEMON_BUSY": "Internal error: deamon is busy", "NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your wallet", - "NOT_ENOUGH_OUTPUTS_TO_MIX": "For the sake of security, mixed transaction will take several days", + "NOT_ENOUGH_OUTPUTS_TO_MIX": "Mix-in number is too big for current blockchain state. There are not enough unspent outputs to mix with", "TRANSACTION_IS_TO_BIG": "Transaction exceeds network limit, send required amount with multiple transactions", "TRANSFER_ATTEMPT": "There is no connection to Zano network", "ACCESS_DENIED": "Access denied", diff --git a/src/gui/qt-daemon/html/assets/scss/base/_base.scss b/src/gui/qt-daemon/html/assets/scss/base/_base.scss index 8ff9cdda..2ce32768 100644 --- a/src/gui/qt-daemon/html/assets/scss/base/_base.scss +++ b/src/gui/qt-daemon/html/assets/scss/base/_base.scss @@ -1,3 +1,16 @@ +.app-content { + + .preloader { + + .loading-bar { + + @include themify($themes) { + background-color: themed(progressBarFullBackgroundColor); + } + } + } +} + button { border: none; font-family: OpenSans, sans-serif; @@ -24,6 +37,12 @@ button { &.blue-button:not(:disabled) { + &.error-text { + @include themify($themes) { + color: themed(redTextColor); + } + } + @include themify($themes) { background-color: themed(blueButtonBackgroundColor); color: themed(alternativeTextColor); @@ -143,7 +162,7 @@ button { height: 100%; min-height: 7.5rem; max-height: 7.5rem; - overflow: hidden; + overflow: auto; resize: none; @include themify($themes) { @@ -165,6 +184,12 @@ button { } } +.error-text { + @include themify($themes) { + color: themed(redTextColor); + } +} + input[type='radio'].style-radio { & + label { @@ -508,6 +533,11 @@ input[type='checkbox'].style-checkbox { } } +.account-tooltip { + word-break: break-word; + max-width: 18rem; +} + .ngx-contextmenu { .dropdown-menu { @@ -546,6 +576,69 @@ input[type='checkbox'].style-checkbox { } } +.ng-select { + + &.lock-selection-select { + width: 100%; + + .ng-select-container { + border: none; + border-radius: 0; + cursor: pointer; + font-size: 1.4rem; + outline: none; + padding: 0 1rem; + height: 4.2rem; + + @include themify($themes) { + background-color: themed(inputBackgroundColor); + color: themed(mainTextColor); + } + + .ng-value-container { + padding: 0; + } + } + + .ng-dropdown-panel { + border: none; + + @include themify($themes) { + background-color: themed(inputBackgroundColor); + } + + .ng-dropdown-panel-items { + + .ng-option { + font-size: 1.4rem; + padding: 1rem; + + @include themify($themes) { + background-color: themed(inputBackgroundColor); + color: themed(mainTextColor); + } + + &.ng-option-marked { + + @include themify($themes) { + background-color: themed(selectHoverColor); + color: themed(mainTextColor); + } + } + + &.ng-option-selected { + + @include themify($themes) { + background-color: themed(selectSelectedColor); + color: themed(mainTextColor); + } + } + } + } + } + } +} + app-modal-container { .modal { @@ -635,3 +728,27 @@ app-transaction-details { } } } + +app-progress-container { + + .progress-bar-container { + + @include themify($themes) { + color: themed(mainTextColor); + } + + .progress-bar { + + @include themify($themes) { + background-color: themed(progressBarBackgroundColor); + } + + .progress-bar-full { + + @include themify($themes) { + background-color: themed(progressBarFullBackgroundColor); + } + } + } + } +} diff --git a/src/gui/qt-daemon/html/assets/scss/base/_theme.scss b/src/gui/qt-daemon/html/assets/scss/base/_theme.scss index 8d6344e9..457870de 100644 --- a/src/gui/qt-daemon/html/assets/scss/base/_theme.scss +++ b/src/gui/qt-daemon/html/assets/scss/base/_theme.scss @@ -22,6 +22,8 @@ $themes: ( turquoiseButtonHoverColor: #52d9ea, transparentButtonBorderColor: #2b3644, inputBackgroundColor: #171e27, + selectHoverColor: rgba(58, 72, 90, 0.5), + selectSelectedColor: rgba(43, 54, 68, 0.5), switchBackgroundColor: #000000, accountBackgroundColor: rgba(43, 54, 68, 0.5), accountHoverBackgroundColor: rgba(58, 72, 90, 0.5), @@ -66,6 +68,8 @@ $themes: ( turquoiseButtonHoverColor: #43cee0, transparentButtonBorderColor: #2f3438, inputBackgroundColor: #292d31, + selectHoverColor: rgba(70, 76, 81, 0.5), + selectSelectedColor: rgba(37, 40, 43, 0.5), switchBackgroundColor: #000000, accountBackgroundColor: rgba(37, 40, 43, 0.5), accountHoverBackgroundColor: rgba(70, 76, 81, 0.5), @@ -110,6 +114,8 @@ $themes: ( turquoiseButtonHoverColor: #2bbdcf, transparentButtonBorderColor: #ebebeb, inputBackgroundColor: #e6e6e6, + selectHoverColor: rgba(240, 240, 240, 0.5), + selectSelectedColor: rgba(224, 224, 224, 0.5), switchBackgroundColor: #e0e0e0, accountBackgroundColor: rgba(30, 136, 229, 1), accountHoverBackgroundColor: rgba(240, 240, 240, 0.5), diff --git a/src/gui/qt-daemon/html/assets/scss/layout/_main.scss b/src/gui/qt-daemon/html/assets/scss/layout/_main.scss index d9ec9e6e..527258cb 100644 --- a/src/gui/qt-daemon/html/assets/scss/layout/_main.scss +++ b/src/gui/qt-daemon/html/assets/scss/layout/_main.scss @@ -68,6 +68,11 @@ app-wallet-details { app-settings { .content { + height: 100%; + overflow-y: auto; + display: flex; + justify-content: space-between; + flex-direction: column; .theme-selection { @@ -75,6 +80,37 @@ app-settings { color: themed(optionalTextColor); } } + + .scale-selection { + + .button-block { + + @include themify($themes) { + background-color: themed(tabInactiveBackgroundColor); + } + + .label { + + @include themify($themes) { + color: themed(optionalTextColor); + } + } + + &.active { + + @include themify($themes) { + background-color: themed(blueTextColor); + } + + .label { + + @include themify($themes) { + color: themed(blueTextColor); + } + } + } + } + } } } diff --git a/src/gui/qt-daemon/html/assets/scss/layout/_sidebar.scss b/src/gui/qt-daemon/html/assets/scss/layout/_sidebar.scss index 2bcdbc17..b6865498 100644 --- a/src/gui/qt-daemon/html/assets/scss/layout/_sidebar.scss +++ b/src/gui/qt-daemon/html/assets/scss/layout/_sidebar.scss @@ -138,16 +138,37 @@ app-sidebar { border-bottom: 0.2rem solid themed(sidebarBorderColor); } - button { + .wrap-button { - @include themify($themes) { - color: themed(mainTextColor); - } - - .icon { + button { @include themify($themes) { - background-color: themed(blueTextColor); + color: themed(mainTextColor); + } + + .icon { + + @include themify($themes) { + background-color: themed(blueTextColor); + } + } + } + + &.active { + + button { + + @include themify($themes) { + background-color: themed(accountBackgroundColor)!important; + color: themed(accountMainTextColor)!important; + } + + .icon { + + @include themify($themes) { + background-color: themed(accountIndicatorBackgroundColor)!important; + } + } } } } diff --git a/src/gui/qt-daemon/html/assets/scss/modules/_head.scss b/src/gui/qt-daemon/html/assets/scss/modules/_head.scss index 518dd1f6..a03e41b0 100644 --- a/src/gui/qt-daemon/html/assets/scss/modules/_head.scss +++ b/src/gui/qt-daemon/html/assets/scss/modules/_head.scss @@ -19,6 +19,7 @@ position: relative; cursor: pointer; margin-right: 20px; + outline-style: none; &:after { diff --git a/src/gui/qt-daemon/html/loading.png b/src/gui/qt-daemon/html/loading.png deleted file mode 100644 index 694d2330..00000000 Binary files a/src/gui/qt-daemon/html/loading.png and /dev/null differ diff --git a/src/gui/qt-daemon/html/main.js b/src/gui/qt-daemon/html/main.js index 2c7cd240..5b6fe0e4 100644 --- a/src/gui/qt-daemon/html/main.js +++ b/src/gui/qt-daemon/html/main.js @@ -21,6 +21,54 @@ webpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext; module.exports = webpackEmptyAsyncContext; webpackEmptyAsyncContext.id = "./src/$$_lazy_route_resource lazy recursive"; +/***/ }), + +/***/ "./src/app/_helpers/directives/input-disable-selection/input-disable-selection.directive.ts": +/*!**************************************************************************************************!*\ + !*** ./src/app/_helpers/directives/input-disable-selection/input-disable-selection.directive.ts ***! + \**************************************************************************************************/ +/*! exports provided: InputDisableSelectionDirective */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputDisableSelectionDirective", function() { return InputDisableSelectionDirective; }); +/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js"); +var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; + +var InputDisableSelectionDirective = /** @class */ (function () { + function InputDisableSelectionDirective() { + } + InputDisableSelectionDirective.prototype.handleInput = function (event) { + if (event.target.readOnly) { + event.preventDefault(); + } + }; + __decorate([ + Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["HostListener"])('mousedown', ['$event']), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Event]), + __metadata("design:returntype", void 0) + ], InputDisableSelectionDirective.prototype, "handleInput", null); + InputDisableSelectionDirective = __decorate([ + Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Directive"])({ + selector: 'input' + }), + __metadata("design:paramtypes", []) + ], InputDisableSelectionDirective); + return InputDisableSelectionDirective; +}()); + + + /***/ }), /***/ "./src/app/_helpers/directives/input-validate/input-validate.directive.ts": @@ -152,7 +200,7 @@ module.exports = "
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {{ label | translate }}\r\n \r\n
\r\n
\r\n" + +/***/ }), + +/***/ "./src/app/_helpers/directives/progress-container/progress-container.component.scss": +/*!******************************************************************************************!*\ + !*** ./src/app/_helpers/directives/progress-container/progress-container.component.scss ***! + \******************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = ".progress-bar-container {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: 0 3rem;\n width: 100%;\n height: 3rem; }\n .progress-bar-container .progress-bar {\n position: absolute;\n top: -0.7rem;\n left: 0;\n margin: 0 3rem;\n width: calc(100% - 6rem);\n height: 0.7rem; }\n .progress-bar-container .progress-bar .progress-bar-full {\n height: 0.7rem; }\n .progress-bar-container .progress-labels {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 1.2rem;\n height: 100%; }\n .progress-bar-container .progress-labels span {\n flex: 1 0 0;\n text-align: center; }\n .progress-bar-container .progress-labels span:first-child {\n text-align: left; }\n .progress-bar-container .progress-labels span:last-child {\n text-align: right; }\n .progress-bar-container .progress-time {\n position: absolute;\n top: -3rem;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n font-size: 1.2rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9wcm9ncmVzcy1jb250YWluZXIvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXF9oZWxwZXJzXFxkaXJlY3RpdmVzXFxwcm9ncmVzcy1jb250YWluZXJcXHByb2dyZXNzLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQjtFQUNsQixTQUFTO0VBQ1QsT0FBTztFQUNQLGVBQWU7RUFDZixXQUFXO0VBQ1gsWUFBWSxFQUFBO0VBTmQ7SUFTSSxrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLE9BQU87SUFDUCxjQUFjO0lBQ2Qsd0JBQXdCO0lBQ3hCLGNBQWMsRUFBQTtFQWRsQjtNQWlCTSxjQUFjLEVBQUE7RUFqQnBCO0lBc0JJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCO0lBQzlCLGlCQUFpQjtJQUNqQixZQUFZLEVBQUE7RUExQmhCO01BNkJNLFdBQVc7TUFDWCxrQkFBa0IsRUFBQTtFQTlCeEI7UUFpQ1EsZ0JBQWdCLEVBQUE7RUFqQ3hCO1FBcUNRLGlCQUFpQixFQUFBO0VBckN6QjtJQTJDSSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLFNBQVM7SUFDVCxtQ0FBMkI7WUFBM0IsMkJBQTJCO0lBQzNCLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9wcm9ncmVzcy1jb250YWluZXIvcHJvZ3Jlc3MtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAzcmVtO1xyXG5cclxuICAucHJvZ3Jlc3MtYmFyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTAuN3JlbTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBtYXJnaW46IDAgM3JlbTtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2cmVtKTtcclxuICAgIGhlaWdodDogMC43cmVtO1xyXG5cclxuICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcbiAgICAgIGhlaWdodDogMC43cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2dyZXNzLWxhYmVscyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIHNwYW4ge1xyXG4gICAgICBmbGV4OiAxIDAgMDtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2dyZXNzLXRpbWUge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAtM3JlbTtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gIH1cclxufVxyXG4iXX0= */" + +/***/ }), + +/***/ "./src/app/_helpers/directives/progress-container/progress-container.component.ts": +/*!****************************************************************************************!*\ + !*** ./src/app/_helpers/directives/progress-container/progress-container.component.ts ***! + \****************************************************************************************/ +/*! exports provided: ProgressContainerComponent */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProgressContainerComponent", function() { return ProgressContainerComponent; }); +/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js"); +var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (undefined && undefined.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; + +var ProgressContainerComponent = /** @class */ (function () { + function ProgressContainerComponent() { + } + ProgressContainerComponent.prototype.ngOnInit = function () { }; + __decorate([ + Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"])(), + __metadata("design:type", String) + ], ProgressContainerComponent.prototype, "width", void 0); + __decorate([ + Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Input"])(), + __metadata("design:type", Array) + ], ProgressContainerComponent.prototype, "labels", void 0); + ProgressContainerComponent = __decorate([ + Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"])({ + selector: 'app-progress-container', + template: __webpack_require__(/*! ./progress-container.component.html */ "./src/app/_helpers/directives/progress-container/progress-container.component.html"), + styles: [__webpack_require__(/*! ./progress-container.component.scss */ "./src/app/_helpers/directives/progress-container/progress-container.component.scss")] + }), + __metadata("design:paramtypes", []) + ], ProgressContainerComponent); + return ProgressContainerComponent; +}()); + + + /***/ }), /***/ "./src/app/_helpers/directives/staking-switch/staking-switch.component.html": @@ -250,7 +368,7 @@ module.exports = "
\r\n
\r\n this.history[0].timestamp) { + if (this.history.length && items[i].timestamp >= this.history[0].timestamp) { this.history.unshift(this.prepareHistoryItem(items[i])); } else { @@ -1004,7 +1122,7 @@ var ContractStatusMessagesPipe = /** @class */ (function () { state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.EXPIRED'); break; } - return state.part1 + ' ' + state.part2; + return state.part1 + (state.part2.length ? '. ' + state.part2 : ''); }; ContractStatusMessagesPipe.prototype.getStateBuyer = function (stateNum) { var state = { part1: '', part2: '' }; @@ -1054,7 +1172,7 @@ var ContractStatusMessagesPipe = /** @class */ (function () { state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.EXPIRED'); break; } - return state.part1 + ' ' + state.part2; + return state.part1 + (state.part2.length ? '. ' + state.part2 : ''); }; ContractStatusMessagesPipe.prototype.transform = function (item, args) { if (item.is_a) { @@ -1598,7 +1716,7 @@ var BackendService = /** @class */ (function () { } }; BackendService.prototype.bigNumberParser = function (key, val) { - if (val.constructor.name === 'BigNumber' && ['balance', 'unlocked_balance', 'amount', 'fee', 'b_fee', 'to_pay', 'a_pledge', 'b_pledge', 'coast'].indexOf(key) === -1) { + if (val.constructor.name === 'BigNumber' && ['balance', 'unlocked_balance', 'amount', 'fee', 'b_fee', 'to_pay', 'a_pledge', 'b_pledge', 'coast', 'a'].indexOf(key) === -1) { return val.toNumber(); } if (key === 'rcv' || key === 'spn') { @@ -1991,6 +2109,11 @@ var BackendService = /** @class */ (function () { BackendService.prototype.getPoolInfo = function (callback) { this.runCommand('get_tx_pool_info', {}, callback); }; + BackendService.prototype.getVersion = function (callback) { + this.runCommand('get_version', {}, function (status, version) { + callback(version); + }); + }; BackendService = __decorate([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Injectable"])(), __metadata("design:paramtypes", [_ngx_translate_core__WEBPACK_IMPORTED_MODULE_2__["TranslateService"], _variables_service__WEBPACK_IMPORTED_MODULE_3__["VariablesService"], _modal_service__WEBPACK_IMPORTED_MODULE_4__["ModalService"], _pipes_money_to_int_pipe__WEBPACK_IMPORTED_MODULE_5__["MoneyToIntPipe"]]) @@ -2028,11 +2151,7 @@ var BackendService = /** @class */ (function () { this.runCommand('reset_wallet_password', {wallet_id: wallet_id, pass: pass}, callback); }, - getVersion: function (callback) { - this.runCommand('get_version', {}, function (status, version) { - callback(version) - }) - }, + getOsVersion: function (callback) { this.runCommand('get_os_version', {}, function (status, version) { @@ -2227,7 +2346,9 @@ var VariablesService = /** @class */ (function () { this.default_fee = '0.010000000000'; this.default_fee_big = new bignumber_js__WEBPACK_IMPORTED_MODULE_5__["BigNumber"]('10000000000'); this.settings = { + appLockTime: 15, theme: '', + scale: 10, language: 'en', default_path: '/', viewedContracts: [], @@ -2237,12 +2358,13 @@ var VariablesService = /** @class */ (function () { this.aliases = []; this.aliasesChecked = {}; this.enableAliasSearch = false; + this.maxWalletNameLength = 25; + this.maxCommentLength = 255; this.getHeightAppEvent = new rxjs__WEBPACK_IMPORTED_MODULE_1__["BehaviorSubject"](null); this.getRefreshStackingEvent = new rxjs__WEBPACK_IMPORTED_MODULE_1__["BehaviorSubject"](null); this.getAliasChangedEvent = new rxjs__WEBPACK_IMPORTED_MODULE_1__["BehaviorSubject"](null); this.idle = new idlejs_dist__WEBPACK_IMPORTED_MODULE_2__["Idle"]() .whenNotInteractive() - .within(15) .do(function () { _this.ngZone.run(function () { _this.idle.stop(); @@ -2280,11 +2402,14 @@ var VariablesService = /** @class */ (function () { return null; }; VariablesService.prototype.startCountdown = function () { - this.idle.start(); + this.idle.within(this.settings.appLockTime).start(); }; VariablesService.prototype.stopCountdown = function () { this.idle.stop(); }; + VariablesService.prototype.restartCountdown = function () { + this.idle.within(this.settings.appLockTime).restart(); + }; VariablesService.prototype.onContextMenu = function ($event) { $event.target['contextSelectionStart'] = $event.target['selectionStart']; $event.target['contextSelectionEnd'] = $event.target['selectionEnd']; @@ -2307,6 +2432,21 @@ var VariablesService = /** @class */ (function () { $event.preventDefault(); $event.stopPropagation(); }; + VariablesService.prototype.onContextMenuPasteSelect = function ($event) { + $event.target['contextSelectionStart'] = $event.target['selectionStart']; + $event.target['contextSelectionEnd'] = $event.target['selectionEnd']; + console.warn($event.target); + console.warn($event.target['disabled']); + if ($event.target && ($event.target['nodeName'].toUpperCase() === 'TEXTAREA' || $event.target['nodeName'].toUpperCase() === 'INPUT') && !$event.target['readOnly']) { + this.contextMenuService.show.next({ + contextMenu: this.pasteSelectContextMenu, + event: $event, + item: $event.target, + }); + $event.preventDefault(); + $event.stopPropagation(); + } + }; VariablesService = __decorate([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Injectable"])({ providedIn: 'root' @@ -2506,7 +2646,7 @@ var AppRoutingModule = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n {{ 'CONTEXT_MENU.COPY' | translate }}\r\n {{ 'CONTEXT_MENU.PASTE' | translate }}\r\n {{ 'CONTEXT_MENU.SELECT' | translate }}\r\n\r\n\r\n\r\n {{ 'CONTEXT_MENU.COPY' | translate }}\r\n\r\n" +module.exports = "\r\n\r\n
\r\n \r\n
\r\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\r\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }}\r\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }}\r\n \r\n
\r\n
\r\n\r\n\r\n {{ 'CONTEXT_MENU.COPY' | translate }}\r\n {{ 'CONTEXT_MENU.PASTE' | translate }}\r\n {{ 'CONTEXT_MENU.SELECT' | translate }}\r\n\r\n\r\n\r\n {{ 'CONTEXT_MENU.COPY' | translate }}\r\n\r\n\r\n\r\n {{ 'CONTEXT_MENU.PASTE' | translate }}\r\n {{ 'CONTEXT_MENU.SELECT' | translate }}\r\n\r\n" /***/ }), @@ -2517,7 +2657,7 @@ module.exports = " /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "/*\r\n* Implementation of themes\r\n*/\n.app-content {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n width: 100%; }\n\r\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX21peGlucy5zY3NzIiwic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGFwcC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RUE7O0NDNUVDO0FDQUQ7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNsQixXQUFXLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAbWl4aW4gdGV4dC10cnVuY2F0ZSB7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcbkBtaXhpbiB0ZXh0V3JhcCB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgbGluZS1icmVhazogc3RyaWN0O1xyXG4gIC13ZWJraXQtaHlwaGVuczogYXV0bztcclxuICAtbXMtaHlwaGVuczogYXV0bztcclxuICBoeXBoZW5zOiBhdXRvO1xyXG59XHJcbkBtaXhpbiBjb3ZlckJveCB7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdHRvcDogMDtcclxuXHRsZWZ0OiAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdGhlaWdodDogMTAwJTtcclxufVxyXG5AbWl4aW4gYWJzICgkdG9wOiBhdXRvLCAkcmlnaHQ6IGF1dG8sICRib3R0b206IGF1dG8sICRsZWZ0OiBhdXRvKSB7XHJcbiAgdG9wOiAkdG9wO1xyXG4gIHJpZ2h0OiAkcmlnaHQ7XHJcbiAgYm90dG9tOiAkYm90dG9tO1xyXG4gIGxlZnQ6ICRsZWZ0O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxufVxyXG5AbWl4aW4gY292ZXJJbWcge1xyXG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcblx0LXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdC1vLWJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0YmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlO1xyXG59XHJcbkBtaXhpbiB2YWxpbmdCb3gge1xyXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR0b3A6ICA1MCU7XHJcblx0bGVmdDogNTAlO1xyXG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG59XHJcbkBtaXhpbiB1blNlbGVjdCB7XHJcblx0LXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xyXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xyXG4gIHVzZXItc2VsZWN0OiBub25lO1xyXG59XHJcbkBtaXhpbiBtYXgxMTk5IHsgLy8gbWFrZXQgMTE3MVxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4MTE3MCB7IC8vIG1ha2V0cyA5OTJcclxuICBAbWVkaWEgKG1heC13aWR0aDogMTE3MHB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDk5MSB7IC8vIG1ha2V0cyA3NjJcclxuICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4NzYxIHsgLy8gbWFrZXRzIDU3NlxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjFweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg1NzUgeyAvLyBtYWtldHMgNDAwXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1vYmlsZSB7XHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDM5OXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIGljb0NlbnRlciB7XHJcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcclxufVxyXG5AbWl4aW4gcHNldWRvICgkZGlzcGxheTogYmxvY2ssICRwb3M6IGFic29sdXRlLCAkY29udGVudDogJycpe1xyXG4gIGNvbnRlbnQ6ICRjb250ZW50O1xyXG4gIGRpc3BsYXk6ICRkaXNwbGF5O1xyXG4gIHBvc2l0aW9uOiAkcG9zO1xyXG59XHJcblxyXG4vKlxyXG4qIEltcGxlbWVudGF0aW9uIG9mIHRoZW1lc1xyXG4qL1xyXG5AbWl4aW4gdGhlbWlmeSgkdGhlbWVzOiAkdGhlbWVzKSB7XHJcbiAgQGVhY2ggJHRoZW1lLCAkbWFwIGluICR0aGVtZXMge1xyXG4gICAgLnRoZW1lLSN7JHRoZW1lfSAmIHtcclxuICAgICAgJHRoZW1lLW1hcDogKCkgIWdsb2JhbDtcclxuICAgICAgQGVhY2ggJGtleSwgJHN1Ym1hcCBpbiAkbWFwIHtcclxuICAgICAgICAkdmFsdWU6IG1hcC1nZXQobWFwLWdldCgkdGhlbWVzLCAkdGhlbWUpLCAnI3ska2V5fScpO1xyXG4gICAgICAgICR0aGVtZS1tYXA6IG1hcC1tZXJnZSgkdGhlbWUtbWFwLCAoJGtleTogJHZhbHVlKSkgIWdsb2JhbDtcclxuICAgICAgfVxyXG4gICAgICBAY29udGVudDtcclxuICAgICAgJHRoZW1lLW1hcDogbnVsbCAhZ2xvYmFsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGZ1bmN0aW9uIHRoZW1lZCgka2V5KSB7XHJcbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZS1tYXAsICRrZXkpO1xyXG59XHJcbiIsIi8qXHJcbiogSW1wbGVtZW50YXRpb24gb2YgdGhlbWVzXHJcbiovXG4uYXBwLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdy14OiBvdmVybGF5O1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIHdpZHRoOiAxMDAlOyB9XG4iLCJAaW1wb3J0ICd+c3JjL2Fzc2V0cy9zY3NzL2Jhc2UvbWl4aW5zJztcclxuXHJcbi5hcHAtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBvdmVyZmxvdy14OiBvdmVybGF5O1xyXG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG4iXX0= */" +module.exports = "/*\r\n* Implementation of themes\r\n*/\n.app-content {\n display: flex;\n overflow-x: overlay;\n overflow-y: hidden;\n width: 100%; }\n.app-content .preloader {\n align-self: center;\n color: #fff;\n font-size: 2rem;\n margin: 0 auto;\n text-align: center;\n width: 50%; }\n.app-content .preloader .loading-bar {\n display: block;\n -webkit-animation: move 5s linear infinite;\n animation: move 5s linear infinite;\n background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.125, rgba(0, 0, 0, 0.15)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.1)), color-stop(0.375, rgba(0, 0, 0, 0.1)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.15)), color-stop(0.625, rgba(0, 0, 0, 0.15)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.1)), color-stop(0.875, rgba(0, 0, 0, 0.1)), color-stop(0.875, transparent), to(transparent)), -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.125, rgba(0, 0, 0, 0.3)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.25)), color-stop(0.375, rgba(0, 0, 0, 0.25)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.3)), color-stop(0.625, rgba(0, 0, 0, 0.3)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.25)), color-stop(0.875, rgba(0, 0, 0, 0.25)), color-stop(0.875, transparent), to(transparent));\n background-size: 10rem 10rem;\n margin-top: 2rem;\n width: 100%;\n height: 1rem; }\n@-webkit-keyframes move {\n 0% {\n background-position: 100% -10rem; }\n 100% {\n background-position: 100% 10rem; } }\n@keyframes move {\n 0% {\n background-position: 100% -10rem; }\n 100% {\n background-position: 100% 10rem; } }\n\r\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGJhc2VcXF9taXhpbnMuc2NzcyIsInNyYy9hcHAvYXBwLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcYXBwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThFQTs7Q0M1RUM7QUNBRDtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLFdBQVcsRUFBQTtBQUpiO0lBT0ksa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxlQUFlO0lBQ2YsY0FBYztJQUNkLGtCQUFrQjtJQUNsQixVQUFVLEVBQUE7QUFaZDtNQWVNLGNBQWM7TUFDZCwwQ0FBa0M7Y0FBbEMsa0NBQWtDO01BQ2xDLCtsQ0FzQkc7TUFDSCw0QkFBNEI7TUFDNUIsZ0JBQWdCO01BQ2hCLFdBQVc7TUFDWCxZQUFZLEVBQUE7QUFJaEI7RUFDRTtJQUNFLGdDQUFnQyxFQUFBO0VBRWxDO0lBQ0UsK0JBQStCLEVBQUEsRUFBQTtBQUxuQztFQUNFO0lBQ0UsZ0NBQWdDLEVBQUE7RUFFbEM7SUFDRSwrQkFBK0IsRUFBQSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvYXBwLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQG1peGluIHRleHQtdHJ1bmNhdGUge1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5AbWl4aW4gdGV4dFdyYXAge1xyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gIGxpbmUtYnJlYWs6IHN0cmljdDtcclxuICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XHJcbiAgLW1zLWh5cGhlbnM6IGF1dG87XHJcbiAgaHlwaGVuczogYXV0bztcclxufVxyXG5AbWl4aW4gY292ZXJCb3gge1xyXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR0b3A6IDA7XHJcblx0bGVmdDogMDtcclxuXHR3aWR0aDogMTAwJTtcclxuXHRoZWlnaHQ6IDEwMCU7XHJcbn1cclxuQG1peGluIGFicyAoJHRvcDogYXV0bywgJHJpZ2h0OiBhdXRvLCAkYm90dG9tOiBhdXRvLCAkbGVmdDogYXV0bykge1xyXG4gIHRvcDogJHRvcDtcclxuICByaWdodDogJHJpZ2h0O1xyXG4gIGJvdHRvbTogJGJvdHRvbTtcclxuICBsZWZ0OiAkbGVmdDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbn1cclxuQG1peGluIGNvdmVySW1nIHtcclxuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG5cdC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHQtby1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTtcclxufVxyXG5AbWl4aW4gdmFsaW5nQm94IHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAgNTAlO1xyXG5cdGxlZnQ6IDUwJTtcclxuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxufVxyXG5AbWl4aW4gdW5TZWxlY3Qge1xyXG5cdC13ZWJraXQtdG91Y2gtY29sbG91dDogbm9uZTtcclxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcclxuICB1c2VyLXNlbGVjdDogbm9uZTtcclxufVxyXG5AbWl4aW4gbWF4MTE5OSB7IC8vIG1ha2V0IDExNzFcclxuICBAbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDExNzAgeyAvLyBtYWtldHMgOTkyXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDExNzBweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg5OTEgeyAvLyBtYWtldHMgNzYyXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDc2MSB7IC8vIG1ha2V0cyA1NzZcclxuICBAbWVkaWEgKG1heC13aWR0aDogNzYxcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4NTc1IHsgLy8gbWFrZXRzIDQwMFxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtb2JpbGUge1xyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAzOTlweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBpY29DZW50ZXIge1xyXG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XHJcbn1cclxuQG1peGluIHBzZXVkbyAoJGRpc3BsYXk6IGJsb2NrLCAkcG9zOiBhYnNvbHV0ZSwgJGNvbnRlbnQ6ICcnKXtcclxuICBjb250ZW50OiAkY29udGVudDtcclxuICBkaXNwbGF5OiAkZGlzcGxheTtcclxuICBwb3NpdGlvbjogJHBvcztcclxufVxyXG5cclxuLypcclxuKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGVtZXNcclxuKi9cclxuQG1peGluIHRoZW1pZnkoJHRoZW1lczogJHRoZW1lcykge1xyXG4gIEBlYWNoICR0aGVtZSwgJG1hcCBpbiAkdGhlbWVzIHtcclxuICAgIC50aGVtZS0jeyR0aGVtZX0gJiB7XHJcbiAgICAgICR0aGVtZS1tYXA6ICgpICFnbG9iYWw7XHJcbiAgICAgIEBlYWNoICRrZXksICRzdWJtYXAgaW4gJG1hcCB7XHJcbiAgICAgICAgJHZhbHVlOiBtYXAtZ2V0KG1hcC1nZXQoJHRoZW1lcywgJHRoZW1lKSwgJyN7JGtleX0nKTtcclxuICAgICAgICAkdGhlbWUtbWFwOiBtYXAtbWVyZ2UoJHRoZW1lLW1hcCwgKCRrZXk6ICR2YWx1ZSkpICFnbG9iYWw7XHJcbiAgICAgIH1cclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgICR0aGVtZS1tYXA6IG51bGwgIWdsb2JhbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBmdW5jdGlvbiB0aGVtZWQoJGtleSkge1xyXG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUtbWFwLCAka2V5KTtcclxufVxyXG4iLCIvKlxyXG4qIEltcGxlbWVudGF0aW9uIG9mIHRoZW1lc1xyXG4qL1xuLmFwcC1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgb3ZlcmZsb3cteDogb3ZlcmxheTtcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICB3aWR0aDogMTAwJTsgfVxuICAuYXBwLWNvbnRlbnQgLnByZWxvYWRlciB7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDUwJTsgfVxuICAgIC5hcHAtY29udGVudCAucHJlbG9hZGVyIC5sb2FkaW5nLWJhciB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGFuaW1hdGlvbjogbW92ZSA1cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAxMDAlIDEwMCUsIGNvbG9yLXN0b3AoMC4xMjUsIHJnYmEoMCwgMCwgMCwgMC4xNSkpLCBjb2xvci1zdG9wKDAuMTI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC4yNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuMjUsIHJnYmEoMCwgMCwgMCwgMC4xKSksIGNvbG9yLXN0b3AoMC4zNzUsIHJnYmEoMCwgMCwgMCwgMC4xKSksIGNvbG9yLXN0b3AoMC4zNzUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHJnYmEoMCwgMCwgMCwgMC4xNSkpLCBjb2xvci1zdG9wKDAuNjI1LCByZ2JhKDAsIDAsIDAsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjYyNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjc1LCByZ2JhKDAsIDAsIDAsIDAuMSkpLCBjb2xvci1zdG9wKDAuODc1LCByZ2JhKDAsIDAsIDAsIDAuMSkpLCBjb2xvci1zdG9wKDAuODc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSksIC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjEyNSwgcmdiYSgwLCAwLCAwLCAwLjMpKSwgY29sb3Itc3RvcCgwLjEyNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjI1LCByZ2JhKDAsIDAsIDAsIDAuMjUpKSwgY29sb3Itc3RvcCgwLjM3NSwgcmdiYSgwLCAwLCAwLCAwLjI1KSksIGNvbG9yLXN0b3AoMC4zNzUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHJnYmEoMCwgMCwgMCwgMC4zKSksIGNvbG9yLXN0b3AoMC42MjUsIHJnYmEoMCwgMCwgMCwgMC4zKSksIGNvbG9yLXN0b3AoMC42MjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC43NSwgcmdiYSgwLCAwLCAwLCAwLjI1KSksIGNvbG9yLXN0b3AoMC44NzUsIHJnYmEoMCwgMCwgMCwgMC4yNSkpLCBjb2xvci1zdG9wKDAuODc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwcmVtIDEwcmVtO1xuICAgICAgbWFyZ2luLXRvcDogMnJlbTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxcmVtOyB9XG5cbkBrZXlmcmFtZXMgbW92ZSB7XG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIC0xMHJlbTsgfVxuICAxMDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDEwcmVtOyB9IH1cbiIsIkBpbXBvcnQgJ35zcmMvYXNzZXRzL3Njc3MvYmFzZS9taXhpbnMnO1xyXG5cclxuLmFwcC1jb250ZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIG92ZXJmbG93LXg6IG92ZXJsYXk7XHJcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICAucHJlbG9hZGVyIHtcclxuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcclxuICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgZm9udC1zaXplOiAycmVtO1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB3aWR0aDogNTAlO1xyXG5cclxuICAgIC5sb2FkaW5nLWJhciB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBhbmltYXRpb246IG1vdmUgNXMgbGluZWFyIGluZmluaXRlO1xyXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOlxyXG4gICAgICAgIC13ZWJraXQtZ3JhZGllbnQoXHJcbiAgICAgICAgICAgIGxpbmVhciwgMCAwLCAxMDAlIDEwMCUsXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjEyNSwgcmdiYSgwLCAwLCAwLCAuMTUpKSwgY29sb3Itc3RvcCguMTI1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjI1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC4yNTAsIHJnYmEoMCwgMCwgMCwgLjEwKSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjM3NSwgcmdiYSgwLCAwLCAwLCAuMTApKSwgY29sb3Itc3RvcCguMzc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjUwMCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC41MDAsIHJnYmEoMCwgMCwgMCwgLjE1KSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjYyNSwgcmdiYSgwLCAwLCAwLCAuMTUpKSwgY29sb3Itc3RvcCguNjI1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjc1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC43NTAsIHJnYmEoMCwgMCwgMCwgLjEwKSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjg3NSwgcmdiYSgwLCAwLCAwLCAuMTApKSwgY29sb3Itc3RvcCguODc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIHRvKHRyYW5zcGFyZW50KVxyXG4gICAgICAgICksXHJcbiAgICAgICAgLXdlYmtpdC1ncmFkaWVudChcclxuICAgICAgICAgICAgbGluZWFyLCAwIDEwMCUsIDEwMCUgMCxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguMTI1LCByZ2JhKDAsIDAsIDAsIC4zMCkpLCBjb2xvci1zdG9wKC4xMjUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguMjUwLCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjI1MCwgcmdiYSgwLCAwLCAwLCAuMjUpKSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguMzc1LCByZ2JhKDAsIDAsIDAsIC4yNSkpLCBjb2xvci1zdG9wKC4zNzUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguNTAwLCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjUwMCwgcmdiYSgwLCAwLCAwLCAuMzApKSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguNjI1LCByZ2JhKDAsIDAsIDAsIC4zMCkpLCBjb2xvci1zdG9wKC42MjUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguNzUwLCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjc1MCwgcmdiYSgwLCAwLCAwLCAuMjUpKSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguODc1LCByZ2JhKDAsIDAsIDAsIC4yNSkpLCBjb2xvci1zdG9wKC44NzUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgdG8odHJhbnNwYXJlbnQpXHJcbiAgICAgICAgKTtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiAxMHJlbSAxMHJlbTtcclxuICAgICAgbWFyZ2luLXRvcDogMnJlbTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBrZXlmcmFtZXMgbW92ZSB7XHJcbiAgICAwJSB7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgLTEwcmVtO1xyXG4gICAgfVxyXG4gICAgMTAwJSB7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMTByZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" /***/ }), @@ -2610,6 +2750,7 @@ var AppComponent = /** @class */ (function () { _this.ngZone.run(function () { _this.router.navigate(['/']); }); + _this.variablesService.daemon_state = 5; _this.backend.storeSecureAppData(function () { _this.backend.storeAppData(function () { var recursionCloseWallets = function () { @@ -2989,6 +3130,9 @@ var AppComponent = /** @class */ (function () { else { _this.renderer.addClass(document.body, 'theme-' + _this.variablesService.defaultTheme); } + if (_this.variablesService.settings.hasOwnProperty('scale') && [7.5, 10, 12.5, 15].indexOf(_this.variablesService.settings.scale) !== -1) { + _this.renderer.setStyle(document.documentElement, 'font-size', _this.variablesService.settings.scale + 'px'); + } } else { _this.variablesService.settings.theme = _this.variablesService.defaultTheme; @@ -3191,20 +3335,23 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @ngx-translate/core */ "./node_modules/@ngx-translate/core/fesm5/ngx-translate-core.js"); /* harmony import */ var _ngx_translate_http_loader__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @ngx-translate/http-loader */ "./node_modules/@ngx-translate/http-loader/fesm5/ngx-translate-http-loader.js"); /* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm5/forms.js"); -/* harmony import */ var _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./_helpers/services/backend.service */ "./src/app/_helpers/services/backend.service.ts"); -/* harmony import */ var _helpers_services_modal_service__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./_helpers/services/modal.service */ "./src/app/_helpers/services/modal.service.ts"); -/* harmony import */ var _helpers_pipes_money_to_int_pipe__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./_helpers/pipes/money-to-int.pipe */ "./src/app/_helpers/pipes/money-to-int.pipe.ts"); -/* harmony import */ var _helpers_pipes_int_to_money_pipe__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./_helpers/pipes/int-to-money.pipe */ "./src/app/_helpers/pipes/int-to-money.pipe.ts"); -/* harmony import */ var _helpers_pipes_history_type_messages_pipe__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./_helpers/pipes/history-type-messages.pipe */ "./src/app/_helpers/pipes/history-type-messages.pipe.ts"); -/* harmony import */ var _helpers_pipes_contract_status_messages_pipe__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./_helpers/pipes/contract-status-messages.pipe */ "./src/app/_helpers/pipes/contract-status-messages.pipe.ts"); -/* harmony import */ var _helpers_pipes_contract_time_left_pipe__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./_helpers/pipes/contract-time-left.pipe */ "./src/app/_helpers/pipes/contract-time-left.pipe.ts"); -/* harmony import */ var _helpers_directives_tooltip_directive__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./_helpers/directives/tooltip.directive */ "./src/app/_helpers/directives/tooltip.directive.ts"); -/* harmony import */ var _helpers_directives_input_validate_input_validate_directive__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./_helpers/directives/input-validate/input-validate.directive */ "./src/app/_helpers/directives/input-validate/input-validate.directive.ts"); -/* harmony import */ var _helpers_directives_staking_switch_staking_switch_component__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./_helpers/directives/staking-switch/staking-switch.component */ "./src/app/_helpers/directives/staking-switch/staking-switch.component.ts"); -/* harmony import */ var _helpers_directives_modal_container_modal_container_component__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./_helpers/directives/modal-container/modal-container.component */ "./src/app/_helpers/directives/modal-container/modal-container.component.ts"); -/* harmony import */ var _helpers_directives_transaction_details_transaction_details_component__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./_helpers/directives/transaction-details/transaction-details.component */ "./src/app/_helpers/directives/transaction-details/transaction-details.component.ts"); -/* harmony import */ var ngx_contextmenu__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ngx-contextmenu */ "./node_modules/ngx-contextmenu/fesm5/ngx-contextmenu.js"); -/* harmony import */ var angular_highcharts__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! angular-highcharts */ "./node_modules/angular-highcharts/fesm5/angular-highcharts.js"); +/* harmony import */ var _ng_select_ng_select__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @ng-select/ng-select */ "./node_modules/@ng-select/ng-select/fesm5/ng-select.js"); +/* harmony import */ var _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./_helpers/services/backend.service */ "./src/app/_helpers/services/backend.service.ts"); +/* harmony import */ var _helpers_services_modal_service__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./_helpers/services/modal.service */ "./src/app/_helpers/services/modal.service.ts"); +/* harmony import */ var _helpers_pipes_money_to_int_pipe__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./_helpers/pipes/money-to-int.pipe */ "./src/app/_helpers/pipes/money-to-int.pipe.ts"); +/* harmony import */ var _helpers_pipes_int_to_money_pipe__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./_helpers/pipes/int-to-money.pipe */ "./src/app/_helpers/pipes/int-to-money.pipe.ts"); +/* harmony import */ var _helpers_pipes_history_type_messages_pipe__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./_helpers/pipes/history-type-messages.pipe */ "./src/app/_helpers/pipes/history-type-messages.pipe.ts"); +/* harmony import */ var _helpers_pipes_contract_status_messages_pipe__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./_helpers/pipes/contract-status-messages.pipe */ "./src/app/_helpers/pipes/contract-status-messages.pipe.ts"); +/* harmony import */ var _helpers_pipes_contract_time_left_pipe__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./_helpers/pipes/contract-time-left.pipe */ "./src/app/_helpers/pipes/contract-time-left.pipe.ts"); +/* harmony import */ var _helpers_directives_tooltip_directive__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./_helpers/directives/tooltip.directive */ "./src/app/_helpers/directives/tooltip.directive.ts"); +/* harmony import */ var _helpers_directives_input_validate_input_validate_directive__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./_helpers/directives/input-validate/input-validate.directive */ "./src/app/_helpers/directives/input-validate/input-validate.directive.ts"); +/* harmony import */ var _helpers_directives_staking_switch_staking_switch_component__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./_helpers/directives/staking-switch/staking-switch.component */ "./src/app/_helpers/directives/staking-switch/staking-switch.component.ts"); +/* harmony import */ var _helpers_directives_modal_container_modal_container_component__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./_helpers/directives/modal-container/modal-container.component */ "./src/app/_helpers/directives/modal-container/modal-container.component.ts"); +/* harmony import */ var _helpers_directives_transaction_details_transaction_details_component__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./_helpers/directives/transaction-details/transaction-details.component */ "./src/app/_helpers/directives/transaction-details/transaction-details.component.ts"); +/* harmony import */ var ngx_contextmenu__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ngx-contextmenu */ "./node_modules/ngx-contextmenu/fesm5/ngx-contextmenu.js"); +/* harmony import */ var angular_highcharts__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! angular-highcharts */ "./node_modules/angular-highcharts/fesm5/angular-highcharts.js"); +/* harmony import */ var _helpers_directives_progress_container_progress_container_component__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./_helpers/directives/progress-container/progress-container.component */ "./src/app/_helpers/directives/progress-container/progress-container.component.ts"); +/* harmony import */ var _helpers_directives_input_disable_selection_input_disable_selection_directive__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./_helpers/directives/input-disable-selection/input-disable-selection.directive */ "./src/app/_helpers/directives/input-disable-selection/input-disable-selection.directive.ts"); var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -3251,19 +3398,22 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta + function HttpLoaderFactory(httpClient) { return new _ngx_translate_http_loader__WEBPACK_IMPORTED_MODULE_27__["TranslateHttpLoader"](httpClient, './assets/i18n/', '.json'); } + + // import * as more from 'highcharts/highcharts-more.src'; // import * as exporting from 'highcharts/modules/exporting.src'; // import * as highstock from 'highcharts/modules/stock.src'; -angular_highcharts__WEBPACK_IMPORTED_MODULE_42__["Highcharts"].setOptions({ -// global: { -// useUTC: false -// } +angular_highcharts__WEBPACK_IMPORTED_MODULE_43__["Highcharts"].setOptions({ + global: { + useUTC: false + } }); var AppModule = /** @class */ (function () { function AppModule() { @@ -3293,16 +3443,18 @@ var AppModule = /** @class */ (function () { _messages_messages_component__WEBPACK_IMPORTED_MODULE_22__["MessagesComponent"], _staking_staking_component__WEBPACK_IMPORTED_MODULE_24__["StakingComponent"], _typing_message_typing_message_component__WEBPACK_IMPORTED_MODULE_23__["TypingMessageComponent"], - _helpers_pipes_money_to_int_pipe__WEBPACK_IMPORTED_MODULE_31__["MoneyToIntPipe"], - _helpers_pipes_int_to_money_pipe__WEBPACK_IMPORTED_MODULE_32__["IntToMoneyPipe"], - _helpers_directives_staking_switch_staking_switch_component__WEBPACK_IMPORTED_MODULE_38__["StakingSwitchComponent"], - _helpers_pipes_history_type_messages_pipe__WEBPACK_IMPORTED_MODULE_33__["HistoryTypeMessagesPipe"], - _helpers_pipes_contract_status_messages_pipe__WEBPACK_IMPORTED_MODULE_34__["ContractStatusMessagesPipe"], - _helpers_pipes_contract_time_left_pipe__WEBPACK_IMPORTED_MODULE_35__["ContractTimeLeftPipe"], - _helpers_directives_tooltip_directive__WEBPACK_IMPORTED_MODULE_36__["TooltipDirective"], - _helpers_directives_input_validate_input_validate_directive__WEBPACK_IMPORTED_MODULE_37__["InputValidateDirective"], - _helpers_directives_modal_container_modal_container_component__WEBPACK_IMPORTED_MODULE_39__["ModalContainerComponent"], - _helpers_directives_transaction_details_transaction_details_component__WEBPACK_IMPORTED_MODULE_40__["TransactionDetailsComponent"] + _helpers_pipes_money_to_int_pipe__WEBPACK_IMPORTED_MODULE_32__["MoneyToIntPipe"], + _helpers_pipes_int_to_money_pipe__WEBPACK_IMPORTED_MODULE_33__["IntToMoneyPipe"], + _helpers_directives_staking_switch_staking_switch_component__WEBPACK_IMPORTED_MODULE_39__["StakingSwitchComponent"], + _helpers_pipes_history_type_messages_pipe__WEBPACK_IMPORTED_MODULE_34__["HistoryTypeMessagesPipe"], + _helpers_pipes_contract_status_messages_pipe__WEBPACK_IMPORTED_MODULE_35__["ContractStatusMessagesPipe"], + _helpers_pipes_contract_time_left_pipe__WEBPACK_IMPORTED_MODULE_36__["ContractTimeLeftPipe"], + _helpers_directives_tooltip_directive__WEBPACK_IMPORTED_MODULE_37__["TooltipDirective"], + _helpers_directives_input_validate_input_validate_directive__WEBPACK_IMPORTED_MODULE_38__["InputValidateDirective"], + _helpers_directives_modal_container_modal_container_component__WEBPACK_IMPORTED_MODULE_40__["ModalContainerComponent"], + _helpers_directives_transaction_details_transaction_details_component__WEBPACK_IMPORTED_MODULE_41__["TransactionDetailsComponent"], + _helpers_directives_progress_container_progress_container_component__WEBPACK_IMPORTED_MODULE_44__["ProgressContainerComponent"], + _helpers_directives_input_disable_selection_input_disable_selection_directive__WEBPACK_IMPORTED_MODULE_45__["InputDisableSelectionDirective"] ], imports: [ _angular_platform_browser__WEBPACK_IMPORTED_MODULE_0__["BrowserModule"], @@ -3317,17 +3469,18 @@ var AppModule = /** @class */ (function () { }), _angular_forms__WEBPACK_IMPORTED_MODULE_28__["FormsModule"], _angular_forms__WEBPACK_IMPORTED_MODULE_28__["ReactiveFormsModule"], - angular_highcharts__WEBPACK_IMPORTED_MODULE_42__["ChartModule"], - ngx_contextmenu__WEBPACK_IMPORTED_MODULE_41__["ContextMenuModule"].forRoot() + _ng_select_ng_select__WEBPACK_IMPORTED_MODULE_29__["NgSelectModule"], + angular_highcharts__WEBPACK_IMPORTED_MODULE_43__["ChartModule"], + ngx_contextmenu__WEBPACK_IMPORTED_MODULE_42__["ContextMenuModule"].forRoot() ], providers: [ - _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_29__["BackendService"], - _helpers_services_modal_service__WEBPACK_IMPORTED_MODULE_30__["ModalService"], - _helpers_pipes_money_to_int_pipe__WEBPACK_IMPORTED_MODULE_31__["MoneyToIntPipe"], - _helpers_pipes_int_to_money_pipe__WEBPACK_IMPORTED_MODULE_32__["IntToMoneyPipe"], + _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_30__["BackendService"], + _helpers_services_modal_service__WEBPACK_IMPORTED_MODULE_31__["ModalService"], + _helpers_pipes_money_to_int_pipe__WEBPACK_IMPORTED_MODULE_32__["MoneyToIntPipe"], + _helpers_pipes_int_to_money_pipe__WEBPACK_IMPORTED_MODULE_33__["IntToMoneyPipe"], ], entryComponents: [ - _helpers_directives_modal_container_modal_container_component__WEBPACK_IMPORTED_MODULE_39__["ModalContainerComponent"] + _helpers_directives_modal_container_modal_container_component__WEBPACK_IMPORTED_MODULE_40__["ModalContainerComponent"] ], bootstrap: [_app_component__WEBPACK_IMPORTED_MODULE_3__["AppComponent"]] }) @@ -3346,7 +3499,7 @@ var AppModule = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n\r\n
\r\n
\r\n {{ wallet.name }}\r\n {{ 'BREADCRUMBS.ASSIGN_ALIAS' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_REQUIRED' | translate }}\r\n
\r\n
6 && assignForm.get('name').value.length <= 25\">\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_WRONG' | translate }}\r\n
\r\n
25\">\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_LENGTH' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_EXISTS' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
{{ \"ASSIGN_ALIAS.COST\" | translate : {value: alias.price | intToMoney, currency: variablesService.defaultCurrency} }}
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n" +module.exports = "
\r\n\r\n
\r\n
\r\n {{ wallet.name }}\r\n {{ 'BREADCRUMBS.ASSIGN_ALIAS' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_REQUIRED' | translate }}\r\n
\r\n
6 && assignForm.get('name').value.length <= 25\">\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_WRONG' | translate }}\r\n
\r\n
25\">\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_LENGTH' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_EXISTS' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
= variablesService.maxCommentLength\">\r\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.MAX_LENGTH' | translate }}\r\n
\r\n
\r\n\r\n
{{ \"ASSIGN_ALIAS.COST\" | translate : {value: alias.price | intToMoney, currency: variablesService.defaultCurrency} }}
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n" /***/ }), @@ -3357,7 +3510,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-assign {\n margin: 2.4rem 0; }\n .form-assign .alias-name {\n width: 50%; }\n .form-assign .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-assign .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-assign .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n .assign-alias-tooltip {\n font-size: 1.3rem;\n line-height: 2rem;\n padding: 1rem 1.5rem;\n max-width: 46rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXNzaWduLWFsaWFzL0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGFzc2lnbi1hbGlhc1xcYXNzaWduLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTtFQUtsQjtFQUNFLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvYXNzaWduLWFsaWFzL2Fzc2lnbi1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWFzc2lnbiB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuXHJcbiAgLmFsaWFzLW5hbWUge1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICB9XHJcblxyXG4gIC5hbGlhcy1jb3N0IHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbWFyZ2luLXRvcDogMnJlbTtcclxuICB9XHJcblxyXG4gIC53cmFwLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbjogMi41cmVtIC0wLjdyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuICAgICAgd2lkdGg6IDE1cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmFzc2lnbi1hbGlhcy10b29sdGlwIHtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuICBsaW5lLWhlaWdodDogMnJlbTtcclxuICBwYWRkaW5nOiAxcmVtIDEuNXJlbTtcclxuICBtYXgtd2lkdGg6IDQ2cmVtO1xyXG59XHJcbiJdfQ== */" +module.exports = ".form-assign {\n margin: 2.4rem 0; }\n .form-assign .alias-name {\n width: 50%; }\n .form-assign .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-assign .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-assign .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n .assign-alias-tooltip {\n font-size: 1.3rem;\n line-height: 2rem;\n padding: 1rem 1.5rem;\n max-width: 46rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXNzaWduLWFsaWFzL0Q6XFx6YW5vX3phbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxhc3NpZ24tYWxpYXNcXGFzc2lnbi1hbGlhcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFnQixFQUFBO0VBRGxCO0lBSUksVUFBVSxFQUFBO0VBSmQ7SUFRSSxpQkFBaUI7SUFDakIsZ0JBQWdCLEVBQUE7RUFUcEI7SUFhSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLHNCQUFzQixFQUFBO0VBZjFCO01Ba0JNLGdCQUFnQjtNQUNoQixZQUFZLEVBQUE7RUFLbEI7RUFDRSxpQkFBaUI7RUFDakIsaUJBQWlCO0VBQ2pCLG9CQUFvQjtFQUNwQixnQkFBZ0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2Fzc2lnbi1hbGlhcy9hc3NpZ24tYWxpYXMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1hc3NpZ24ge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5hc3NpZ24tYWxpYXMtdG9vbHRpcCB7XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgbGluZS1oZWlnaHQ6IDJyZW07XHJcbiAgcGFkZGluZzogMXJlbSAxLjVyZW07XHJcbiAgbWF4LXdpZHRoOiA0NnJlbTtcclxufVxyXG4iXX0= */" /***/ }), @@ -3403,6 +3556,7 @@ var __metadata = (undefined && undefined.__metadata) || function (k, v) { var AssignAliasComponent = /** @class */ (function () { function AssignAliasComponent(ngZone, location, router, backend, variablesService, modalService, moneyToInt, intToMoney) { + var _this = this; this.ngZone = ngZone; this.location = location; this.router = router; @@ -3413,7 +3567,14 @@ var AssignAliasComponent = /** @class */ (function () { this.intToMoney = intToMoney; this.assignForm = new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormGroup"]({ name: new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControl"]('', [_angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].required, _angular_forms__WEBPACK_IMPORTED_MODULE_1__["Validators"].pattern(/^@?[a-z0-9\.\-]{6,25}$/)]), - comment: new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControl"]('') + comment: new _angular_forms__WEBPACK_IMPORTED_MODULE_1__["FormControl"]('', [function (g) { + if (g.value > _this.variablesService.maxCommentLength) { + return { 'maxLength': true }; + } + else { + return null; + } + }]) }); this.alias = { name: '', @@ -3522,7 +3683,7 @@ var AssignAliasComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n {{ 'CONTRACTS.EMPTY' | translate }}\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ 'CONTRACTS.CONTRACTS' | translate }}{{ 'CONTRACTS.DATE' | translate }}{{ 'CONTRACTS.AMOUNT' | translate }}{{ 'CONTRACTS.STATUS' | translate }}{{ 'CONTRACTS.COMMENTS' | translate }}
\r\n
\r\n \r\n \r\n \r\n {{item.private_detailes.t}}\r\n
\r\n
\r\n
{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}
\r\n
\r\n
{{item.private_detailes.to_pay | intToMoney}} {{variablesService.defaultCurrency}}
\r\n
\r\n
\r\n {{item | contractStatusMessages}}\r\n
\r\n
\r\n
\r\n {{item.private_detailes.c}}\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n" +module.exports = "
\r\n {{ 'CONTRACTS.EMPTY' | translate }}\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{{ 'CONTRACTS.CONTRACTS' | translate }}{{ 'CONTRACTS.DATE' | translate }}{{ 'CONTRACTS.AMOUNT' | translate }}{{ 'CONTRACTS.STATUS' | translate }}{{ 'CONTRACTS.COMMENTS' | translate }}
\r\n
\r\n \r\n \r\n \r\n {{item.private_detailes.t}}\r\n
\r\n
\r\n
{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}
\r\n
\r\n
{{item.private_detailes.to_pay | intToMoney}} {{variablesService.defaultCurrency}}
\r\n
\r\n
\r\n {{item | contractStatusMessages}}\r\n
\r\n
\r\n
\r\n {{item.private_detailes.c}}\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n" /***/ }), @@ -3533,7 +3694,7 @@ module.exports = "
\r\n\r\n
\r\n
\r\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\r\n {{ 'BREADCRUMBS.CREATE_WALLET' | translate }}\r\n
\r\n \r\n \r\n {{ 'COMMON.BACK' | translate }}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'CREATE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n" +module.exports = "
\r\n\r\n
\r\n
\r\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\r\n {{ 'BREADCRUMBS.CREATE_WALLET' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\r\n
\r\n
\r\n
= variablesService.maxWalletNameLength\">\r\n {{ 'CREATE_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'CREATE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n" /***/ }), @@ -3614,7 +3775,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-create {\n margin: 2.4rem 0;\n width: 50%; }\n .form-create .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem; }\n .form-create .wrap-buttons button {\n margin: 0 0.7rem; }\n .form-create .wrap-buttons button.transparent-button {\n flex-basis: 50%; }\n .form-create .wrap-buttons button.select-button {\n flex-basis: 60%; }\n .form-create .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY3JlYXRlLXdhbGxldC9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxjcmVhdGUtd2FsbGV0XFxjcmVhdGUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTtFQUZaO0lBS0ksYUFBYTtJQUNiLHNCQUFzQixFQUFBO0VBTjFCO01BU00sZ0JBQWdCLEVBQUE7RUFUdEI7UUFZUSxlQUFlLEVBQUE7RUFadkI7UUFnQlEsZUFBZSxFQUFBO0VBaEJ2QjtRQW9CUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9jcmVhdGUtd2FsbGV0L2NyZWF0ZS13YWxsZXQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1jcmVhdGUge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG5cclxuICAgICAgJi50cmFuc3BhcmVudC1idXR0b24ge1xyXG4gICAgICAgIGZsZXgtYmFzaXM6IDUwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5zZWxlY3QtYnV0dG9uIHtcclxuICAgICAgICBmbGV4LWJhc2lzOiA2MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuY3JlYXRlLWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMSAxIDUwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */" +module.exports = ":host {\n position: relative; }\n\n.form-create {\n margin: 2.4rem 0;\n width: 50%; }\n\n.form-create .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem; }\n\n.form-create .wrap-buttons button {\n margin: 0 0.7rem; }\n\n.form-create .wrap-buttons button.transparent-button {\n flex-basis: 50%; }\n\n.form-create .wrap-buttons button.select-button {\n flex-basis: 60%; }\n\n.form-create .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY3JlYXRlLXdhbGxldC9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcY3JlYXRlLXdhbGxldFxcY3JlYXRlLXdhbGxldC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGdCQUFnQjtFQUNoQixVQUFVLEVBQUE7O0FBRlo7SUFLSSxhQUFhO0lBQ2Isc0JBQXNCLEVBQUE7O0FBTjFCO01BU00sZ0JBQWdCLEVBQUE7O0FBVHRCO1FBWVEsZUFBZSxFQUFBOztBQVp2QjtRQWdCUSxlQUFlLEVBQUE7O0FBaEJ2QjtRQW9CUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9jcmVhdGUtd2FsbGV0L2NyZWF0ZS13YWxsZXQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4uZm9ybS1jcmVhdGUge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG5cclxuICAgICAgJi50cmFuc3BhcmVudC1idXR0b24ge1xyXG4gICAgICAgIGZsZXgtYmFzaXM6IDUwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5zZWxlY3QtYnV0dG9uIHtcclxuICAgICAgICBmbGV4LWJhc2lzOiA2MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuY3JlYXRlLWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMSAxIDUwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */" /***/ }), @@ -3680,27 +3841,32 @@ var CreateWalletComponent = /** @class */ (function () { id: '' }; this.walletSaved = false; + this.walletSavedName = ''; + this.progressWidth = '9rem'; } CreateWalletComponent.prototype.ngOnInit = function () { }; CreateWalletComponent.prototype.createWallet = function () { var _this = this; this.ngZone.run(function () { + _this.progressWidth = '100%'; _this.router.navigate(['/seed-phrase'], { queryParams: { wallet_id: _this.wallet.id } }); }); }; CreateWalletComponent.prototype.saveWallet = function () { var _this = this; - if (this.createForm.valid) { + if (this.createForm.valid && this.createForm.get('name').value.length <= this.variablesService.maxWalletNameLength) { this.backend.saveFileDialog(this.translate.instant('CREATE_WALLET.TITLE_SAVE'), '*', this.variablesService.settings.default_path, function (file_status, file_data) { if (file_status) { _this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/')); + _this.walletSavedName = file_data.path.substr(file_data.path.lastIndexOf('/') + 1, file_data.path.length - 1); _this.backend.generateWallet(file_data.path, _this.createForm.get('password').value, function (generate_status, generate_data, errorCode) { if (generate_status) { _this.wallet.id = generate_data.wallet_id; _this.variablesService.opening_wallet = new _helpers_models_wallet_model__WEBPACK_IMPORTED_MODULE_6__["Wallet"](generate_data.wallet_id, _this.createForm.get('name').value, _this.createForm.get('password').value, generate_data['wi'].path, generate_data['wi'].address, generate_data['wi'].balance, generate_data['wi'].unlocked_balance, generate_data['wi'].mined_total, generate_data['wi'].tracking_hey); _this.ngZone.run(function () { _this.walletSaved = true; + _this.progressWidth = '50%'; }); } else { @@ -3743,7 +3909,7 @@ var CreateWalletComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n\r\n
\r\n
\r\n {{ wallet.name }}\r\n {{ 'BREADCRUMBS.EDIT_ALIAS' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
0 && notEnoughMoney\">\r\n {{ 'EDIT_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\r\n
\r\n
\r\n\r\n
{{ \"EDIT_ALIAS.COST\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n" +module.exports = "
\r\n\r\n
\r\n
\r\n {{ wallet.name }}\r\n {{ 'BREADCRUMBS.EDIT_ALIAS' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
0 && notEnoughMoney\">\r\n {{ 'EDIT_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\r\n
\r\n
= variablesService.maxCommentLength\">\r\n {{ 'EDIT_ALIAS.FORM_ERRORS.MAX_LENGTH' | translate }}\r\n
\r\n
\r\n\r\n
{{ \"EDIT_ALIAS.COST\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n" /***/ }), @@ -3754,7 +3920,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-edit {\n margin: 2.4rem 0; }\n .form-edit .alias-name {\n width: 50%; }\n .form-edit .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-edit .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-edit .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZWRpdC1hbGlhcy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxlZGl0LWFsaWFzXFxlZGl0LWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL2VkaXQtYWxpYXMvZWRpdC1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWVkaXQge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" +module.exports = ".form-edit {\n margin: 2.4rem 0; }\n .form-edit .alias-name {\n width: 50%; }\n .form-edit .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-edit .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-edit .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZWRpdC1hbGlhcy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcZWRpdC1hbGlhc1xcZWRpdC1hbGlhcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFnQixFQUFBO0VBRGxCO0lBSUksVUFBVSxFQUFBO0VBSmQ7SUFRSSxpQkFBaUI7SUFDakIsZ0JBQWdCLEVBQUE7RUFUcEI7SUFhSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLHNCQUFzQixFQUFBO0VBZjFCO01Ba0JNLGdCQUFnQjtNQUNoQixZQUFZLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9lZGl0LWFsaWFzL2VkaXQtYWxpYXMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1lZGl0IHtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG5cclxuICAuYWxpYXMtbmFtZSB7XHJcbiAgICB3aWR0aDogNTAlO1xyXG4gIH1cclxuXHJcbiAgLmFsaWFzLWNvc3Qge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xyXG4gIH1cclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG4gICAgICB3aWR0aDogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" /***/ }), @@ -3812,7 +3978,7 @@ var EditAliasComponent = /** @class */ (function () { }; EditAliasComponent.prototype.updateAlias = function () { var _this = this; - if (this.requestProcessing || this.notEnoughMoney || this.oldAliasComment === this.alias.comment) { + if (this.requestProcessing || this.notEnoughMoney || this.oldAliasComment === this.alias.comment || this.alias.comment.length > this.variablesService.maxCommentLength) { return; } this.requestProcessing = true; @@ -3868,7 +4034,7 @@ module.exports = "
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'LOGIN.FORM_ERRORS.PASS_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'LOGIN.FORM_ERRORS.CONFIRM_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n {{ 'LOGIN.FORM_ERRORS.MISMATCH' | translate }}\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'LOGIN.FORM_ERRORS.PASS_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n\r\n" +module.exports = "
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'LOGIN.FORM_ERRORS.PASS_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'LOGIN.FORM_ERRORS.CONFIRM_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n {{ 'LOGIN.FORM_ERRORS.MISMATCH' | translate }}\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'LOGIN.FORM_ERRORS.PASS_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n
\r\n" /***/ }), @@ -3982,7 +4148,7 @@ module.exports = "
\r\n\r\n
\r\ /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n :host .content {\n display: flex; }\n :host .content .wrap-login {\n margin: auto;\n width: 100%;\n max-width: 40rem; }\n :host .content .wrap-login .logo {\n background: url('logo.svg') no-repeat center;\n width: 100%;\n height: 20rem; }\n :host .content .wrap-login .form-login {\n display: flex;\n flex-direction: column; }\n :host .content .wrap-login .form-login button {\n margin: 2.5rem auto;\n width: 100%;\n max-width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbG9naW4vRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbG9naW5cXGxvZ2luLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixPQUFPO0VBQ1AsV0FBVztFQUNYLFlBQVksRUFBQTtFQUxkO0lBUUksYUFBYSxFQUFBO0VBUmpCO01BV00sWUFBWTtNQUNaLFdBQVc7TUFDWCxnQkFBZ0IsRUFBQTtFQWJ0QjtRQWdCUSw0Q0FBNkQ7UUFDN0QsV0FBVztRQUNYLGFBQWEsRUFBQTtFQWxCckI7UUFzQlEsYUFBYTtRQUNiLHNCQUFzQixFQUFBO0VBdkI5QjtVQTBCVSxtQkFBbUI7VUFDbkIsV0FBVztVQUNYLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuXHJcbiAgLmNvbnRlbnQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICAud3JhcC1sb2dpbiB7XHJcbiAgICAgIG1hcmdpbjogYXV0bztcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogNDByZW07XHJcblxyXG4gICAgICAubG9nbyB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9sb2dvLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDIwcmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZm9ybS1sb2dpbiB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cclxuICAgICAgICBidXR0b24ge1xyXG4gICAgICAgICAgbWFyZ2luOiAyLjVyZW0gYXV0bztcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiAxNXJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" +module.exports = ":host {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n :host .content {\n display: flex; }\n :host .content .wrap-login {\n margin: auto;\n width: 100%;\n max-width: 40rem; }\n :host .content .wrap-login .logo {\n background: url('logo.svg') no-repeat center;\n width: 100%;\n height: 20rem; }\n :host .content .wrap-login .form-login {\n display: flex;\n flex-direction: column; }\n :host .content .wrap-login .form-login button {\n margin: 2.5rem auto;\n width: 100%;\n max-width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbG9naW4vRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGxvZ2luXFxsb2dpbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGVBQWU7RUFDZixNQUFNO0VBQ04sT0FBTztFQUNQLFdBQVc7RUFDWCxZQUFZLEVBQUE7RUFMZDtJQVFJLGFBQWEsRUFBQTtFQVJqQjtNQVdNLFlBQVk7TUFDWixXQUFXO01BQ1gsZ0JBQWdCLEVBQUE7RUFidEI7UUFnQlEsNENBQTZEO1FBQzdELFdBQVc7UUFDWCxhQUFhLEVBQUE7RUFsQnJCO1FBc0JRLGFBQWE7UUFDYixzQkFBc0IsRUFBQTtFQXZCOUI7VUEwQlUsbUJBQW1CO1VBQ25CLFdBQVc7VUFDWCxnQkFBZ0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gIC5jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcblxyXG4gICAgLndyYXAtbG9naW4ge1xyXG4gICAgICBtYXJnaW46IGF1dG87XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDQwcmVtO1xyXG5cclxuICAgICAgLmxvZ28ge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvbG9nby5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAyMHJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tbG9naW4ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHJcbiAgICAgICAgYnV0dG9uIHtcclxuICAgICAgICAgIG1hcmdpbjogMi41cmVtIGF1dG87XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" /***/ }), @@ -4080,30 +4246,30 @@ var LoginComponent = /** @class */ (function () { var openWallets_1 = 0; var runWallets_1 = 0; data.forEach(function (wallet, wallet_index) { - _this.backend.openWallet(wallet.path, wallet.pass, true, function (open_status, open_data) { - if (open_status) { + _this.backend.openWallet(wallet.path, wallet.pass, true, function (open_status, open_data, open_error) { + if (open_status || open_error === 'FILE_RESTORED') { openWallets_1++; + _this.ngZone.run(function () { + var new_wallet = new _helpers_models_wallet_model__WEBPACK_IMPORTED_MODULE_6__["Wallet"](open_data.wallet_id, wallet.name, wallet.pass, open_data['wi'].path, open_data['wi'].address, open_data['wi'].balance, open_data['wi'].unlocked_balance, open_data['wi'].mined_total, open_data['wi'].tracking_hey); + new_wallet.alias = _this.backend.getWalletAlias(new_wallet.address); + if (open_data.recent_history && open_data.recent_history.history) { + new_wallet.prepareHistory(open_data.recent_history.history); + } + _this.backend.getContracts(open_data.wallet_id, function (contracts_status, contracts_data) { + if (contracts_status && contracts_data.hasOwnProperty('contracts')) { + _this.ngZone.run(function () { + new_wallet.prepareContractsAfterOpen(contracts_data.contracts, _this.variablesService.exp_med_ts, _this.variablesService.height_app, _this.variablesService.settings.viewedContracts, _this.variablesService.settings.notViewedContracts); + }); + } + }); + _this.variablesService.wallets.push(new_wallet); + if (_this.variablesService.wallets.length === 1) { + _this.router.navigate(['/wallet/' + _this.variablesService.wallets[0].wallet_id]); + } + }); _this.backend.runWallet(open_data.wallet_id, function (run_status) { if (run_status) { runWallets_1++; - _this.ngZone.run(function () { - var new_wallet = new _helpers_models_wallet_model__WEBPACK_IMPORTED_MODULE_6__["Wallet"](open_data.wallet_id, wallet.name, wallet.pass, open_data['wi'].path, open_data['wi'].address, open_data['wi'].balance, open_data['wi'].unlocked_balance, open_data['wi'].mined_total, open_data['wi'].tracking_hey); - new_wallet.alias = _this.backend.getWalletAlias(new_wallet.address); - if (open_data.recent_history && open_data.recent_history.history) { - new_wallet.prepareHistory(open_data.recent_history.history); - } - _this.backend.getContracts(open_data.wallet_id, function (contracts_status, contracts_data) { - if (contracts_status && contracts_data.hasOwnProperty('contracts')) { - _this.ngZone.run(function () { - new_wallet.prepareContractsAfterOpen(contracts_data.contracts, _this.variablesService.exp_med_ts, _this.variablesService.height_app, _this.variablesService.settings.viewedContracts, _this.variablesService.settings.notViewedContracts); - }); - } - }); - _this.variablesService.wallets.push(new_wallet); - if (_this.variablesService.wallets.length === 1) { - _this.router.navigate(['/wallet/' + _this.variablesService.wallets[0].wallet_id]); - } - }); } else { if (wallet_index === data.length - 1 && runWallets_1 === 0) { @@ -4111,7 +4277,6 @@ var LoginComponent = /** @class */ (function () { _this.router.navigate(['/']); }); } - // console.log(run_data['error_code']); } }); } @@ -4164,7 +4329,7 @@ var LoginComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n
\r\n

{{ 'MAIN.TITLE' | translate }}

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {{ 'MAIN.HELP' | translate }}\r\n
\r\n
\r\n
\r\n" +module.exports = "
\r\n\r\n
0\">\r\n \r\n
\r\n\r\n
\r\n

{{ 'MAIN.TITLE' | translate }}

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {{ 'MAIN.HELP' | translate }}\r\n
\r\n
\r\n\r\n
\r\n" /***/ }), @@ -4175,7 +4340,7 @@ module.exports = "
\r\n
\r\n /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n flex: 1 0 auto;\n padding: 3rem; }\n\n.content {\n padding: 3rem;\n min-height: 100%; }\n\n.add-wallet .add-wallet-title {\n margin-bottom: 1rem; }\n\n.add-wallet .add-wallet-buttons {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 -0.5rem;\n padding: 1.5rem 0; }\n\n.add-wallet .add-wallet-buttons button {\n flex: 1 0 auto;\n margin: 0 0.5rem; }\n\n.add-wallet .add-wallet-help {\n display: flex;\n cursor: pointer;\n font-size: 1.3rem;\n line-height: 1.4rem; }\n\n.add-wallet .add-wallet-help .icon {\n -webkit-mask: url('howto.svg') no-repeat center;\n mask: url('howto.svg') no-repeat center;\n margin-right: 0.8rem;\n width: 1.4rem;\n height: 1.4rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWFpbi9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxtYWluXFxtYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsY0FBYztFQUNkLGFBQWEsRUFBQTs7QUFHZjtFQUNFLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFHSSxtQkFBbUIsRUFBQTs7QUFIdkI7RUFPSSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLDhCQUE4QjtFQUM5QixpQkFBaUI7RUFDakIsaUJBQWlCLEVBQUE7O0FBWHJCO0lBY00sY0FBYztJQUNkLGdCQUFnQixFQUFBOztBQWZ0QjtFQW9CSSxhQUFhO0VBQ2IsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUF2QnZCO0lBMEJNLCtDQUF3RDtZQUF4RCx1Q0FBd0Q7SUFDeEQsb0JBQW9CO0lBQ3BCLGFBQWE7SUFDYixjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9tYWluL21haW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZmxleDogMSAwIGF1dG87XHJcbiAgcGFkZGluZzogM3JlbTtcclxufVxyXG5cclxuLmNvbnRlbnQge1xyXG4gIHBhZGRpbmc6IDNyZW07XHJcbiAgbWluLWhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLmFkZC13YWxsZXQge1xyXG5cclxuICAuYWRkLXdhbGxldC10aXRsZSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgLmFkZC13YWxsZXQtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbjogMCAtMC41cmVtO1xyXG4gICAgcGFkZGluZzogMS41cmVtIDA7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZmxleDogMSAwIGF1dG87XHJcbiAgICAgIG1hcmdpbjogMCAwLjVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWRkLXdhbGxldC1oZWxwIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjRyZW07XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2hvd3RvLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjhyZW07XHJcbiAgICAgIHdpZHRoOiAxLjRyZW07XHJcbiAgICAgIGhlaWdodDogMS40cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */" +module.exports = ":host {\n flex: 1 0 auto;\n padding: 3rem; }\n\n.content {\n padding: 3rem;\n min-height: 100%; }\n\n.content .head {\n justify-content: flex-end; }\n\n.add-wallet .add-wallet-title {\n margin-bottom: 1rem; }\n\n.add-wallet .add-wallet-buttons {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 -0.5rem;\n padding: 1.5rem 0; }\n\n.add-wallet .add-wallet-buttons button {\n flex: 1 0 auto;\n margin: 0 0.5rem; }\n\n.add-wallet .add-wallet-help {\n display: flex;\n cursor: pointer;\n font-size: 1.3rem;\n line-height: 1.4rem; }\n\n.add-wallet .add-wallet-help .icon {\n -webkit-mask: url('howto.svg') no-repeat center;\n mask: url('howto.svg') no-repeat center;\n margin-right: 0.8rem;\n width: 1.4rem;\n height: 1.4rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWFpbi9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbWFpblxcbWFpbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGNBQWM7RUFDZCxhQUFhLEVBQUE7O0FBR2Y7RUFDRSxhQUFhO0VBQ2IsZ0JBQWdCLEVBQUE7O0FBRmxCO0lBS0kseUJBQXlCLEVBQUE7O0FBSTdCO0VBR0ksbUJBQW1CLEVBQUE7O0FBSHZCO0VBT0ksYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsaUJBQWlCO0VBQ2pCLGlCQUFpQixFQUFBOztBQVhyQjtJQWNNLGNBQWM7SUFDZCxnQkFBZ0IsRUFBQTs7QUFmdEI7RUFvQkksYUFBYTtFQUNiLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsbUJBQW1CLEVBQUE7O0FBdkJ2QjtJQTBCTSwrQ0FBd0Q7WUFBeEQsdUNBQXdEO0lBQ3hELG9CQUFvQjtJQUNwQixhQUFhO0lBQ2IsY0FBYyxFQUFBIiwiZmlsZSI6InNyYy9hcHAvbWFpbi9tYWluLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIGZsZXg6IDEgMCBhdXRvO1xyXG4gIHBhZGRpbmc6IDNyZW07XHJcbn1cclxuXHJcbi5jb250ZW50IHtcclxuICBwYWRkaW5nOiAzcmVtO1xyXG4gIG1pbi1oZWlnaHQ6IDEwMCU7XHJcblxyXG4gIC5oZWFkIHtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbiAgfVxyXG59XHJcblxyXG4uYWRkLXdhbGxldCB7XHJcblxyXG4gIC5hZGQtd2FsbGV0LXRpdGxlIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgfVxyXG5cclxuICAuYWRkLXdhbGxldC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgbWFyZ2luOiAwIC0wLjVyZW07XHJcbiAgICBwYWRkaW5nOiAxLjVyZW0gMDtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBmbGV4OiAxIDAgYXV0bztcclxuICAgICAgbWFyZ2luOiAwIDAuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5hZGQtd2FsbGV0LWhlbHAge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNHJlbTtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvaG93dG8uc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuOHJlbTtcclxuICAgICAgd2lkdGg6IDEuNHJlbTtcclxuICAgICAgaGVpZ2h0OiAxLjRyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" /***/ }), @@ -4190,10 +4355,11 @@ module.exports = ":host {\n flex: 1 0 auto;\n padding: 3rem; }\n\n.content {\n __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MainComponent", function() { return MainComponent; }); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js"); -/* harmony import */ var _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_helpers/services/backend.service */ "./src/app/_helpers/services/backend.service.ts"); -/* harmony import */ var _helpers_services_variables_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_helpers/services/variables.service */ "./src/app/_helpers/services/variables.service.ts"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm5/router.js"); -/* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @ngx-translate/core */ "./node_modules/@ngx-translate/core/fesm5/ngx-translate-core.js"); +/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/fesm5/common.js"); +/* harmony import */ var _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_helpers/services/backend.service */ "./src/app/_helpers/services/backend.service.ts"); +/* harmony import */ var _helpers_services_variables_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../_helpers/services/variables.service */ "./src/app/_helpers/services/variables.service.ts"); +/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm5/router.js"); +/* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @ngx-translate/core */ "./node_modules/@ngx-translate/core/fesm5/ngx-translate-core.js"); var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -4208,9 +4374,11 @@ var __metadata = (undefined && undefined.__metadata) || function (k, v) { + var MainComponent = /** @class */ (function () { - function MainComponent(router, backend, variablesService, ngZone, translate) { + function MainComponent(router, location, backend, variablesService, ngZone, translate) { this.router = router; + this.location = location; this.backend = backend; this.variablesService = variablesService; this.ngZone = ngZone; @@ -4232,7 +4400,10 @@ var MainComponent = /** @class */ (function () { }); }; MainComponent.prototype.openInBrowser = function () { - this.backend.openUrlInBrowser('zano.org'); + this.backend.openUrlInBrowser('docs.zano.org/v1.0/docs/how-to-create-wallet'); + }; + MainComponent.prototype.back = function () { + this.location.back(); }; MainComponent = __decorate([ Object(_angular_core__WEBPACK_IMPORTED_MODULE_0__["Component"])({ @@ -4240,11 +4411,12 @@ var MainComponent = /** @class */ (function () { template: __webpack_require__(/*! ./main.component.html */ "./src/app/main/main.component.html"), styles: [__webpack_require__(/*! ./main.component.scss */ "./src/app/main/main.component.scss")] }), - __metadata("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_3__["Router"], - _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_1__["BackendService"], - _helpers_services_variables_service__WEBPACK_IMPORTED_MODULE_2__["VariablesService"], + __metadata("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_4__["Router"], + _angular_common__WEBPACK_IMPORTED_MODULE_1__["Location"], + _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_2__["BackendService"], + _helpers_services_variables_service__WEBPACK_IMPORTED_MODULE_3__["VariablesService"], _angular_core__WEBPACK_IMPORTED_MODULE_0__["NgZone"], - _ngx_translate_core__WEBPACK_IMPORTED_MODULE_4__["TranslateService"]]) + _ngx_translate_core__WEBPACK_IMPORTED_MODULE_5__["TranslateService"]]) ], MainComponent); return MainComponent; }()); @@ -4271,7 +4443,7 @@ module.exports = "
\r\n\r\n
\r\n\r\n
\r\n
\r\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\r\n {{ 'BREADCRUMBS.OPEN_WALLET' | translate }}\r\n
\r\n \r\n \r\n {{ 'COMMON.BACK' | translate }}\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n\r\n\r\n\r\n" +module.exports = "
\r\n\r\n
\r\n
\r\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\r\n {{ 'BREADCRUMBS.OPEN_WALLET' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\r\n
\r\n
\r\n
= variablesService.maxWalletNameLength\">\r\n {{ 'OPEN_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n\r\n" /***/ }), @@ -4350,7 +4522,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-open {\n margin: 2.4rem 0;\n width: 50%; }\n .form-open .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem; }\n .form-open .wrap-buttons button {\n margin: 0 0.7rem; }\n .form-open .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcb3Blbi13YWxsZXRcXG9wZW4td2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTtFQUZaO0lBS0ksYUFBYTtJQUNiLHNCQUFzQixFQUFBO0VBTjFCO01BU00sZ0JBQWdCLEVBQUE7RUFUdEI7UUFZUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9vcGVuLXdhbGxldC9vcGVuLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLW9wZW4ge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" +module.exports = ".form-open {\n margin: 2.4rem 0;\n width: 50%; }\n .form-open .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem; }\n .form-open .wrap-buttons button {\n margin: 0 0.7rem; }\n .form-open .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXG9wZW4td2FsbGV0XFxvcGVuLXdhbGxldC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFnQjtFQUNoQixVQUFVLEVBQUE7RUFGWjtJQUtJLGFBQWE7SUFDYixzQkFBc0IsRUFBQTtFQU4xQjtNQVNNLGdCQUFnQixFQUFBO0VBVHRCO1FBWVEsYUFBYSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvb3Blbi13YWxsZXQvb3Blbi13YWxsZXQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1vcGVuIHtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIC53cmFwLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIG1hcmdpbjogMi41cmVtIC0wLjdyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuXHJcbiAgICAgICYuY3JlYXRlLWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMSAxIDUwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */" /***/ }), @@ -4433,7 +4605,7 @@ var OpenWalletComponent = /** @class */ (function () { }; OpenWalletComponent.prototype.openWallet = function () { var _this = this; - if (this.openForm.valid) { + if (this.openForm.valid && this.openForm.get('name').value.length <= this.variablesService.maxWalletNameLength) { this.backend.openWallet(this.filePath, this.openForm.get('password').value, false, function (open_status, open_data, open_error) { if (open_error && open_error === 'FILE_NOT_FOUND') { var error_translate = _this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND1'); @@ -4458,21 +4630,21 @@ var OpenWalletComponent = /** @class */ (function () { }); } else { + var new_wallet_1 = new _helpers_models_wallet_model__WEBPACK_IMPORTED_MODULE_6__["Wallet"](open_data.wallet_id, _this.openForm.get('name').value, _this.openForm.get('password').value, open_data['wi'].path, open_data['wi'].address, open_data['wi'].balance, open_data['wi'].unlocked_balance, open_data['wi'].mined_total, open_data['wi'].tracking_hey); + new_wallet_1.alias = _this.backend.getWalletAlias(new_wallet_1.address); + if (open_data.recent_history && open_data.recent_history.history) { + new_wallet_1.prepareHistory(open_data.recent_history.history); + } + _this.backend.getContracts(open_data.wallet_id, function (contracts_status, contracts_data) { + if (contracts_status && contracts_data.hasOwnProperty('contracts')) { + _this.ngZone.run(function () { + new_wallet_1.prepareContractsAfterOpen(contracts_data.contracts, _this.variablesService.exp_med_ts, _this.variablesService.height_app, _this.variablesService.settings.viewedContracts, _this.variablesService.settings.notViewedContracts); + }); + } + }); + _this.variablesService.wallets.push(new_wallet_1); _this.backend.runWallet(open_data.wallet_id, function (run_status, run_data) { if (run_status) { - var new_wallet_1 = new _helpers_models_wallet_model__WEBPACK_IMPORTED_MODULE_6__["Wallet"](open_data.wallet_id, _this.openForm.get('name').value, _this.openForm.get('password').value, open_data['wi'].path, open_data['wi'].address, open_data['wi'].balance, open_data['wi'].unlocked_balance, open_data['wi'].mined_total, open_data['wi'].tracking_hey); - new_wallet_1.alias = _this.backend.getWalletAlias(new_wallet_1.address); - if (open_data.recent_history && open_data.recent_history.history) { - new_wallet_1.prepareHistory(open_data.recent_history.history); - } - _this.backend.getContracts(open_data.wallet_id, function (contracts_status, contracts_data) { - if (contracts_status && contracts_data.hasOwnProperty('contracts')) { - _this.ngZone.run(function () { - new_wallet_1.prepareContractsAfterOpen(contracts_data.contracts, _this.variablesService.exp_med_ts, _this.variablesService.height_app, _this.variablesService.settings.viewedContracts, _this.variablesService.settings.notViewedContracts); - }); - } - }); - _this.variablesService.wallets.push(new_wallet_1); _this.backend.storeSecureAppData(function (status, data) { console.log('Store App Data', status, data); }); @@ -4521,7 +4693,7 @@ var OpenWalletComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n
\r\n {{ 'BREADCRUMBS.CONTRACTS' | translate }}\r\n {{ 'BREADCRUMBS.NEW_PURCHASE' | translate }}\r\n {{ 'BREADCRUMBS.OLD_PURCHASE' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.DESC_REQUIRED' | translate }}\r\n
\r\n
\r\n
= 100\">\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.SELLER_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.SELLER_NOT_VALID' | translate }}\r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.SELLER_SAME' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.YOUR_DEPOSIT_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.SELLER_DEPOSIT_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
= 100\">\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n \r\n {{ 'PURCHASE.NEED_MONEY' | translate }}\r\n \r\n\r\n \r\n {{ 'PURCHASE.WAITING_SELLER' | translate }}\r\n \r\n\r\n {{ 'PURCHASE.IGNORED_SELLER' | translate }}\r\n {{ 'PURCHASE.PLEDGE_UNBLOCKED' | translate }}\r\n\r\n {{ 'PURCHASE.WAITING_SHIP' | translate }}\r\n\r\n {{ 'PURCHASE.IGNORED_CANCEL_SELLER' | translate }}\r\n\r\n {{ 'PURCHASE.EXPIRED' | translate }}\r\n\r\n {{ 'PURCHASE.WAIT' | translate }}\r\n\r\n {{ 'PURCHASE.WAITING_SELLER' | translate }}\r\n\r\n {{ 'PURCHASE.COMPLETED' | translate }}\r\n {{ 'PURCHASE.RECEIVED' | translate }}\r\n\r\n {{ 'PURCHASE.NOT_RECEIVED' | translate }}\r\n {{ 'PURCHASE.NULLIFIED' | translate }}\r\n\r\n {{ 'PURCHASE.PROPOSAL_CANCEL_SELLER' | translate }}\r\n \r\n\r\n {{ 'PURCHASE.BEING_CANCELLED' | translate }}\r\n\r\n {{ 'PURCHASE.CANCELLED' | translate }}\r\n {{ 'PURCHASE.PLEDGES_RETURNED' | translate }}\r\n \r\n\r\n \r\n {{ 'PURCHASE.WAITING_BUYER' | translate }}\r\n \r\n\r\n {{ 'PURCHASE.IGNORED_BUYER' | translate }}\r\n\r\n {{ 'PURCHASE.IGNORED_CANCEL_BUYER' | translate }}\r\n\r\n {{ 'PURCHASE.EXPIRED' | translate }}\r\n\r\n {{ 'PURCHASE.WAIT' | translate }}\r\n\r\n {{ 'PURCHASE.BUYER_WAIT' | translate }}\r\n {{ 'PURCHASE.PLEDGES_MADE' | translate }}\r\n\r\n {{ 'PURCHASE.COMPLETED' | translate }}\r\n {{ 'PURCHASE.RECEIVED' | translate }}\r\n\r\n {{ 'PURCHASE.NOT_RECEIVED' | translate }}\r\n {{ 'PURCHASE.NULLIFIED' | translate }}\r\n\r\n {{ 'PURCHASE.PROPOSAL_CANCEL_BUYER' | translate }}\r\n \r\n\r\n {{ 'PURCHASE.BEING_CANCELLED' | translate }}\r\n\r\n {{ 'PURCHASE.CANCELLED' | translate }}\r\n {{ 'PURCHASE.PLEDGES_RETURNED' | translate }}\r\n \r\n\r\n \r\n 0/10\r\n {{variablesService.height_app - currentContract.height}}/10\r\n {{(historyBlock.is_income ? '+' : '') + (historyBlock.sortAmount | intToMoney)}} {{variablesService.defaultCurrency}}\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ 'PURCHASE.PROGRESS_NEW' | translate }}\r\n {{ 'PURCHASE.PROGRESS_WAIT' | translate }}\r\n {{ 'PURCHASE.PROGRESS_COMPLETE' | translate }}\r\n
\r\n
\r\n {{currentContract.expiration_time | contractTimeLeft: 0}}\r\n {{currentContract.cancel_expiration_time | contractTimeLeft: 2}}\r\n {{currentContract.expiration_time | contractTimeLeft: 1}}\r\n {{currentContract.cancel_expiration_time | contractTimeLeft: 1}}\r\n
\r\n
\r\n" +module.exports = "
\r\n
\r\n {{ 'BREADCRUMBS.CONTRACTS' | translate }}\r\n {{ 'BREADCRUMBS.NEW_PURCHASE' | translate }}\r\n {{ 'BREADCRUMBS.OLD_PURCHASE' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.DESC_REQUIRED' | translate }}\r\n
\r\n
\r\n
= 100\">\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.SELLER_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.SELLER_NOT_VALID' | translate }}\r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.SELLER_SAME' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.YOUR_DEPOSIT_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.YOUR_DEPOSIT_TOO_SMALL' | translate }}\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.SELLER_DEPOSIT_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
= 100\">\r\n
\r\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n 1 {{ 'PURCHASE.HOUR' | translate }}\r\n \r\n {{title}} {{ 'PURCHASE.HOURS' | translate }}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n \r\n {{ 'PURCHASE.NEED_MONEY' | translate }}\r\n \r\n\r\n \r\n {{ 'PURCHASE.WAITING_SELLER' | translate }}\r\n \r\n\r\n {{ 'PURCHASE.IGNORED_SELLER' | translate }}\r\n {{ 'PURCHASE.PLEDGE_UNBLOCKED' | translate }}\r\n\r\n {{ 'PURCHASE.WAITING_SHIP' | translate }}\r\n\r\n {{ 'PURCHASE.IGNORED_CANCEL_SELLER' | translate }}\r\n\r\n {{ 'PURCHASE.EXPIRED' | translate }}\r\n\r\n {{ 'PURCHASE.WAIT' | translate }}\r\n\r\n {{ 'PURCHASE.WAITING_SELLER' | translate }}\r\n\r\n {{ 'PURCHASE.COMPLETED' | translate }}\r\n {{ 'PURCHASE.RECEIVED' | translate }}\r\n\r\n {{ 'PURCHASE.NOT_RECEIVED' | translate }}\r\n {{ 'PURCHASE.NULLIFIED' | translate }}\r\n\r\n {{ 'PURCHASE.PROPOSAL_CANCEL_SELLER' | translate }}\r\n \r\n\r\n {{ 'PURCHASE.BEING_CANCELLED' | translate }}\r\n\r\n {{ 'PURCHASE.CANCELLED' | translate }}\r\n {{ 'PURCHASE.PLEDGES_RETURNED' | translate }}\r\n \r\n\r\n \r\n {{ 'PURCHASE.WAITING_BUYER' | translate }}\r\n \r\n\r\n {{ 'PURCHASE.IGNORED_BUYER' | translate }}\r\n\r\n {{ 'PURCHASE.IGNORED_CANCEL_BUYER' | translate }}\r\n\r\n {{ 'PURCHASE.EXPIRED' | translate }}\r\n\r\n {{ 'PURCHASE.WAIT' | translate }}\r\n\r\n {{ 'PURCHASE.BUYER_WAIT' | translate }}\r\n {{ 'PURCHASE.PLEDGES_MADE' | translate }}\r\n\r\n {{ 'PURCHASE.COMPLETED' | translate }}\r\n {{ 'PURCHASE.RECEIVED' | translate }}\r\n\r\n {{ 'PURCHASE.NOT_RECEIVED' | translate }}\r\n {{ 'PURCHASE.NULLIFIED' | translate }}\r\n\r\n {{ 'PURCHASE.PROPOSAL_CANCEL_BUYER' | translate }}\r\n \r\n\r\n {{ 'PURCHASE.BEING_CANCELLED' | translate }}\r\n\r\n {{ 'PURCHASE.CANCELLED' | translate }}\r\n {{ 'PURCHASE.PLEDGES_RETURNED' | translate }}\r\n \r\n\r\n \r\n 0/10\r\n {{variablesService.height_app - currentContract.height}}/10\r\n {{(historyBlock.is_income ? '+' : '') + (historyBlock.sortAmount | intToMoney)}} {{variablesService.defaultCurrency}}\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n
{{'PURCHASE.NULLIFY_QUESTION' | translate}}
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
{{ 'PURCHASE.WAITING_TIME_QUESTION' | translate }}
\r\n \r\n \r\n 1 {{ 'PURCHASE.HOUR' | translate }}\r\n \r\n {{title}} {{ 'PURCHASE.HOURS' | translate }}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ 'PURCHASE.PROGRESS_NEW' | translate }}\r\n {{ 'PURCHASE.PROGRESS_WAIT' | translate }}\r\n {{ 'PURCHASE.PROGRESS_COMPLETE' | translate }}\r\n
\r\n
\r\n {{currentContract.expiration_time | contractTimeLeft: 0}}\r\n {{currentContract.cancel_expiration_time | contractTimeLeft: 2}}\r\n {{currentContract.expiration_time | contractTimeLeft: 1}}\r\n {{currentContract.cancel_expiration_time | contractTimeLeft: 1}}\r\n
\r\n
\r\n" /***/ }), @@ -4532,7 +4704,7 @@ module.exports = "
\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.head {\n flex: 0 0 auto;\n box-sizing: content-box;\n margin: -3rem -3rem 0; }\n\n.form-purchase {\n flex: 1 1 auto;\n margin: 1.5rem -3rem 0;\n padding: 0 3rem;\n overflow-y: overlay; }\n\n.form-purchase .input-blocks-row {\n display: flex; }\n\n.form-purchase .input-blocks-row .input-block {\n flex-basis: 50%; }\n\n.form-purchase .input-blocks-row .input-block:first-child {\n margin-right: 1.5rem; }\n\n.form-purchase .input-blocks-row .input-block:last-child {\n margin-left: 1.5rem; }\n\n.form-purchase .input-blocks-row .input-block .checkbox-block {\n display: flex; }\n\n.form-purchase .purchase-select {\n display: flex;\n align-items: center;\n background: transparent;\n border: none;\n font-size: 1.3rem;\n line-height: 1.3rem;\n margin: 1.5rem 0 0;\n padding: 0;\n width: 100%;\n max-width: 15rem;\n height: 1.3rem; }\n\n.form-purchase .purchase-select .arrow {\n margin-left: 1rem;\n width: 0.8rem;\n height: 0.8rem; }\n\n.form-purchase .purchase-select .arrow.down {\n -webkit-mask: url('arrow-down.svg') no-repeat center;\n mask: url('arrow-down.svg') no-repeat center; }\n\n.form-purchase .purchase-select .arrow.up {\n -webkit-mask: url('arrow-up.svg') no-repeat center;\n mask: url('arrow-up.svg') no-repeat center; }\n\n.form-purchase .additional-details {\n display: flex;\n margin-top: 1.5rem;\n padding: 0.5rem 0 2rem; }\n\n.form-purchase .additional-details > div {\n flex-basis: 25%; }\n\n.form-purchase .additional-details > div:first-child {\n padding-left: 1.5rem;\n padding-right: 1rem; }\n\n.form-purchase .additional-details > div:last-child {\n padding-left: 1rem;\n padding-right: 1.5rem; }\n\n.form-purchase .purchase-states {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: 1.2rem;\n line-height: 2.9rem; }\n\n.form-purchase .send-button {\n margin: 2.4rem 0;\n width: 100%;\n max-width: 15rem; }\n\n.form-purchase .purchase-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.4rem -0.5rem;\n width: calc(100% + 1rem); }\n\n.form-purchase .purchase-buttons button {\n flex: 0 1 33%;\n margin: 0 0.5rem; }\n\n.progress-bar-container {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: 0 3rem;\n width: 100%;\n height: 3rem; }\n\n.progress-bar-container .progress-bar {\n position: absolute;\n top: -0.7rem;\n left: 0;\n margin: 0 3rem;\n width: calc(100% - 6rem);\n height: 0.7rem; }\n\n.progress-bar-container .progress-bar .progress-bar-full {\n height: 0.7rem; }\n\n.progress-bar-container .progress-labels {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 1.2rem;\n height: 100%; }\n\n.progress-bar-container .progress-labels span {\n flex: 1 0 0;\n text-align: center; }\n\n.progress-bar-container .progress-labels span:first-child {\n text-align: left; }\n\n.progress-bar-container .progress-labels span:last-child {\n text-align: right; }\n\n.progress-bar-container .progress-time {\n position: absolute;\n top: -3rem;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n font-size: 1.2rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHVyY2hhc2UvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccHVyY2hhc2VcXHB1cmNoYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGNBQWM7RUFDZCxzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUpyQjtJQU9JLGFBQWEsRUFBQTs7QUFQakI7TUFVTSxlQUFlLEVBQUE7O0FBVnJCO1FBYVEsb0JBQW9CLEVBQUE7O0FBYjVCO1FBaUJRLG1CQUFtQixFQUFBOztBQWpCM0I7UUFxQlEsYUFBYSxFQUFBOztBQXJCckI7SUEyQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLGlCQUFpQjtNQUNqQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQTFDcEI7UUE2Q1Esb0RBQTREO2dCQUE1RCw0Q0FBNEQsRUFBQTs7QUE3Q3BFO1FBaURRLGtEQUEwRDtnQkFBMUQsMENBQTBELEVBQUE7O0FBakRsRTtJQXVESSxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLHNCQUFzQixFQUFBOztBQXpEMUI7TUE0RE0sZUFBZSxFQUFBOztBQTVEckI7UUErRFEsb0JBQW9CO1FBQ3BCLG1CQUFtQixFQUFBOztBQWhFM0I7UUFvRVEsa0JBQWtCO1FBQ2xCLHFCQUFxQixFQUFBOztBQXJFN0I7SUEyRUksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFoRnZCO0lBb0ZJLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsZ0JBQWdCLEVBQUE7O0FBdEZwQjtJQTBGSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLHNCQUFzQjtJQUN0Qix3QkFBd0IsRUFBQTs7QUE3RjVCO01BZ0dNLGFBQWE7TUFDYixnQkFBZ0IsRUFBQTs7QUFLdEI7RUFDRSxrQkFBa0I7RUFDbEIsU0FBUztFQUNULE9BQU87RUFDUCxlQUFlO0VBQ2YsV0FBVztFQUNYLFlBQVksRUFBQTs7QUFOZDtJQVNJLGtCQUFrQjtJQUNsQixZQUFZO0lBQ1osT0FBTztJQUNQLGNBQWM7SUFDZCx3QkFBd0I7SUFDeEIsY0FBYyxFQUFBOztBQWRsQjtNQWlCTSxjQUFjLEVBQUE7O0FBakJwQjtJQXNCSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLDhCQUE4QjtJQUM5QixpQkFBaUI7SUFDakIsWUFBWSxFQUFBOztBQTFCaEI7TUE2Qk0sV0FBVztNQUNYLGtCQUFrQixFQUFBOztBQTlCeEI7UUFpQ1EsZ0JBQWdCLEVBQUE7O0FBakN4QjtRQXFDUSxpQkFBaUIsRUFBQTs7QUFyQ3pCO0lBMkNJLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsU0FBUztJQUNULG1DQUEyQjtZQUEzQiwyQkFBMkI7SUFDM0IsaUJBQWlCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9wdXJjaGFzZS9wdXJjaGFzZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5oZWFkIHtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxuICBtYXJnaW46IC0zcmVtIC0zcmVtIDA7XHJcbn1cclxuXHJcbi5mb3JtLXB1cmNoYXNlIHtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuICBtYXJnaW46IDEuNXJlbSAtM3JlbSAwO1xyXG4gIHBhZGRpbmc6IDAgM3JlbTtcclxuICBvdmVyZmxvdy15OiBvdmVybGF5O1xyXG5cclxuICAuaW5wdXQtYmxvY2tzLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAgIC5pbnB1dC1ibG9jayB7XHJcbiAgICAgIGZsZXgtYmFzaXM6IDUwJTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMS41cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5jaGVja2JveC1ibG9jayB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLXNlbGVjdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xyXG4gICAgbWFyZ2luOiAxLjVyZW0gMCAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiAxNXJlbTtcclxuICAgIGhlaWdodDogMS4zcmVtO1xyXG5cclxuICAgIC5hcnJvdyB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG4gICAgICB3aWR0aDogMC44cmVtO1xyXG4gICAgICBoZWlnaHQ6IDAuOHJlbTtcclxuXHJcbiAgICAgICYuZG93biB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LWRvd24uc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnVwIHtcclxuICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYXJyb3ctdXAuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWRkaXRpb25hbC1kZXRhaWxzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW07XHJcbiAgICBwYWRkaW5nOiAwLjVyZW0gMCAycmVtO1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZmxleC1iYXNpczogMjUlO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucHVyY2hhc2Utc3RhdGVzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZm9udC1zaXplOiAxLjJyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi45cmVtO1xyXG4gIH1cclxuXHJcbiAgLnNlbmQtYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgfVxyXG5cclxuICAucHVyY2hhc2UtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgbWFyZ2luOiAyLjRyZW0gLTAuNXJlbTtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAxcmVtKTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBmbGV4OiAwIDEgMzMlO1xyXG4gICAgICBtYXJnaW46IDAgMC41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAzcmVtO1xyXG5cclxuICAucHJvZ3Jlc3MtYmFyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTAuN3JlbTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBtYXJnaW46IDAgM3JlbTtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2cmVtKTtcclxuICAgIGhlaWdodDogMC43cmVtO1xyXG5cclxuICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcbiAgICAgIGhlaWdodDogMC43cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2dyZXNzLWxhYmVscyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIHNwYW4ge1xyXG4gICAgICBmbGV4OiAxIDAgMDtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2dyZXNzLXRpbWUge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAtM3JlbTtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gIH1cclxufVxyXG4iXX0= */" +module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.head {\n flex: 0 0 auto;\n box-sizing: content-box;\n margin: -3rem -3rem 0; }\n\n.form-purchase {\n flex: 1 1 auto;\n margin: 1.5rem -3rem 0;\n padding: 0 3rem;\n overflow-y: overlay; }\n\n.form-purchase .input-blocks-row {\n display: flex; }\n\n.form-purchase .input-blocks-row .input-block {\n flex-basis: 50%; }\n\n.form-purchase .input-blocks-row .input-block:first-child {\n margin-right: 1.5rem; }\n\n.form-purchase .input-blocks-row .input-block:last-child {\n margin-left: 1.5rem; }\n\n.form-purchase .input-blocks-row .input-block .checkbox-block {\n display: flex; }\n\n.form-purchase .purchase-select {\n display: flex;\n align-items: center;\n background: transparent;\n border: none;\n font-size: 1.3rem;\n line-height: 1.3rem;\n margin: 1.5rem 0 0;\n padding: 0;\n width: 100%;\n max-width: 15rem;\n height: 1.3rem; }\n\n.form-purchase .purchase-select .arrow {\n margin-left: 1rem;\n width: 0.8rem;\n height: 0.8rem; }\n\n.form-purchase .purchase-select .arrow.down {\n -webkit-mask: url('arrow-down.svg') no-repeat center;\n mask: url('arrow-down.svg') no-repeat center; }\n\n.form-purchase .purchase-select .arrow.up {\n -webkit-mask: url('arrow-up.svg') no-repeat center;\n mask: url('arrow-up.svg') no-repeat center; }\n\n.form-purchase .additional-details {\n display: flex;\n margin-top: 1.5rem;\n padding: 0.5rem 0 2rem; }\n\n.form-purchase .additional-details > div {\n flex-basis: 25%; }\n\n.form-purchase .additional-details > div:first-child {\n padding-left: 1.5rem;\n padding-right: 1rem; }\n\n.form-purchase .additional-details > div:last-child {\n padding-left: 1rem;\n padding-right: 1.5rem; }\n\n.form-purchase .purchase-states {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: 1.2rem;\n line-height: 2.9rem; }\n\n.form-purchase .send-button {\n margin: 2.4rem 0;\n width: 100%;\n max-width: 15rem; }\n\n.form-purchase .purchase-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.4rem -0.5rem;\n width: calc(100% + 1rem); }\n\n.form-purchase .purchase-buttons button {\n flex: 0 1 33%;\n margin: 0 0.5rem; }\n\n.form-purchase .nullify-block-row {\n display: flex;\n justify-content: center; }\n\n.form-purchase .nullify-block-row .input-block {\n align-items: center; }\n\n.form-purchase .nullify-block-row .input-block .nullify-block {\n margin: 1rem 0; }\n\n.form-purchase .nullify-block-row .input-block .nullify-block .blue-button {\n margin: 0 0.5rem; }\n\n.form-purchase .time-cancel-block-row {\n display: flex;\n justify-content: center; }\n\n.form-purchase .time-cancel-block-row .input-block {\n align-items: center;\n margin-bottom: 0; }\n\n.form-purchase .time-cancel-block-row .input-block select {\n width: auto; }\n\n.form-purchase .time-cancel-block-row .input-block .time-cancel-block {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n margin: 1rem 0; }\n\n.form-purchase .time-cancel-block-row .input-block .time-cancel-block .blue-button {\n margin: 0 0.5rem; }\n\n.progress-bar-container {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: 0 3rem;\n width: 100%;\n height: 3rem; }\n\n.progress-bar-container .progress-bar {\n position: absolute;\n top: -0.7rem;\n left: 0;\n margin: 0 3rem;\n width: calc(100% - 6rem);\n height: 0.7rem; }\n\n.progress-bar-container .progress-bar .progress-bar-full {\n height: 0.7rem; }\n\n.progress-bar-container .progress-labels {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 1.2rem;\n height: 100%; }\n\n.progress-bar-container .progress-labels span {\n flex: 1 0 0;\n text-align: center; }\n\n.progress-bar-container .progress-labels span:first-child {\n text-align: left; }\n\n.progress-bar-container .progress-labels span:last-child {\n text-align: right; }\n\n.progress-bar-container .progress-time {\n position: absolute;\n top: -3rem;\n left: 50%;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n font-size: 1.2rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHVyY2hhc2UvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHB1cmNoYXNlXFxwdXJjaGFzZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdiO0VBQ0UsY0FBYztFQUNkLHVCQUF1QjtFQUN2QixxQkFBcUIsRUFBQTs7QUFHdkI7RUFDRSxjQUFjO0VBQ2Qsc0JBQXNCO0VBQ3RCLGVBQWU7RUFDZixtQkFBbUIsRUFBQTs7QUFKckI7SUFPSSxhQUFhLEVBQUE7O0FBUGpCO01BVU0sZUFBZSxFQUFBOztBQVZyQjtRQWFRLG9CQUFvQixFQUFBOztBQWI1QjtRQWlCUSxtQkFBbUIsRUFBQTs7QUFqQjNCO1FBcUJRLGFBQWEsRUFBQTs7QUFyQnJCO0lBMkJJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLFlBQVk7SUFDWixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixjQUFjLEVBQUE7O0FBckNsQjtNQXdDTSxpQkFBaUI7TUFDakIsYUFBYTtNQUNiLGNBQWMsRUFBQTs7QUExQ3BCO1FBNkNRLG9EQUE0RDtnQkFBNUQsNENBQTRELEVBQUE7O0FBN0NwRTtRQWlEUSxrREFBMEQ7Z0JBQTFELDBDQUEwRCxFQUFBOztBQWpEbEU7SUF1REksYUFBYTtJQUNiLGtCQUFrQjtJQUNsQixzQkFBc0IsRUFBQTs7QUF6RDFCO01BNERNLGVBQWUsRUFBQTs7QUE1RHJCO1FBK0RRLG9CQUFvQjtRQUNwQixtQkFBbUIsRUFBQTs7QUFoRTNCO1FBb0VRLGtCQUFrQjtRQUNsQixxQkFBcUIsRUFBQTs7QUFyRTdCO0lBMkVJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixpQkFBaUI7SUFDakIsbUJBQW1CLEVBQUE7O0FBaEZ2QjtJQW9GSSxnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLGdCQUFnQixFQUFBOztBQXRGcEI7SUEwRkksYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixzQkFBc0I7SUFDdEIsd0JBQXdCLEVBQUE7O0FBN0Y1QjtNQWdHTSxhQUFhO01BQ2IsZ0JBQWdCLEVBQUE7O0FBakd0QjtJQXNHSSxhQUFhO0lBQ2IsdUJBQXVCLEVBQUE7O0FBdkczQjtNQTBHTSxtQkFBbUIsRUFBQTs7QUExR3pCO1FBNkdRLGNBQWMsRUFBQTs7QUE3R3RCO1VBZ0hVLGdCQUFnQixFQUFBOztBQWhIMUI7SUF1SEksYUFBYTtJQUNiLHVCQUF1QixFQUFBOztBQXhIM0I7TUEySE0sbUJBQW1CO01BQ25CLGdCQUFnQixFQUFBOztBQTVIdEI7UUErSFEsV0FBVyxFQUFBOztBQS9IbkI7UUFtSVEsYUFBYTtRQUNiLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsY0FBYyxFQUFBOztBQXRJdEI7VUF5SVUsZ0JBQWdCLEVBQUE7O0FBUTFCO0VBQ0Usa0JBQWtCO0VBQ2xCLFNBQVM7RUFDVCxPQUFPO0VBQ1AsZUFBZTtFQUNmLFdBQVc7RUFDWCxZQUFZLEVBQUE7O0FBTmQ7SUFTSSxrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLE9BQU87SUFDUCxjQUFjO0lBQ2Qsd0JBQXdCO0lBQ3hCLGNBQWMsRUFBQTs7QUFkbEI7TUFpQk0sY0FBYyxFQUFBOztBQWpCcEI7SUFzQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsaUJBQWlCO0lBQ2pCLFlBQVksRUFBQTs7QUExQmhCO01BNkJNLFdBQVc7TUFDWCxrQkFBa0IsRUFBQTs7QUE5QnhCO1FBaUNRLGdCQUFnQixFQUFBOztBQWpDeEI7UUFxQ1EsaUJBQWlCLEVBQUE7O0FBckN6QjtJQTJDSSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLFNBQVM7SUFDVCxtQ0FBMkI7WUFBM0IsMkJBQTJCO0lBQzNCLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHVyY2hhc2UvcHVyY2hhc2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4uZm9ybS1wdXJjaGFzZSB7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWFyZ2luOiAxLjVyZW0gLTNyZW0gMDtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuXHJcbiAgLmlucHV0LWJsb2Nrcy1yb3cge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMS41cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuY2hlY2tib3gtYmxvY2sge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wdXJjaGFzZS1zZWxlY3Qge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogMS41cmVtIDAgMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICBoZWlnaHQ6IDEuM3JlbTtcclxuXHJcbiAgICAuYXJyb3cge1xyXG4gICAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICAgICAgd2lkdGg6IDAuOHJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjhyZW07XHJcblxyXG4gICAgICAmLmRvd24ge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1kb3duLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi51cCB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LXVwLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luLXRvcDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMC41cmVtIDAgMnJlbTtcclxuXHJcbiAgICA+IGRpdiB7XHJcbiAgICAgIGZsZXgtYmFzaXM6IDI1JTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuOXJlbTtcclxuICB9XHJcblxyXG4gIC5zZW5kLWJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbjogMi40cmVtIC0wLjVyZW07XHJcbiAgICB3aWR0aDogY2FsYygxMDAlICsgMXJlbSk7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZmxleDogMCAxIDMzJTtcclxuICAgICAgbWFyZ2luOiAwIDAuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5udWxsaWZ5LWJsb2NrLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblxyXG4gICAgLmlucHV0LWJsb2NrIHtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAgIC5udWxsaWZ5LWJsb2NrIHtcclxuICAgICAgICBtYXJnaW46IDFyZW0gMDtcclxuXHJcbiAgICAgICAgLmJsdWUtYnV0dG9uIHtcclxuICAgICAgICAgIG1hcmdpbjogMCAwLjVyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGltZS1jYW5jZWwtYmxvY2stcm93IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG5cclxuICAgICAgc2VsZWN0IHtcclxuICAgICAgICB3aWR0aDogYXV0bztcclxuICAgICAgfVxyXG5cclxuICAgICAgLnRpbWUtY2FuY2VsLWJsb2NrIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgICAgICAgbWFyZ2luOiAxcmVtIDA7XHJcblxyXG4gICAgICAgIC5ibHVlLWJ1dHRvbiB7XHJcbiAgICAgICAgICBtYXJnaW46IDAgMC41cmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgcGFkZGluZzogMCAzcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogM3JlbTtcclxuXHJcbiAgLnByb2dyZXNzLWJhciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IC0wLjdyZW07XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgbWFyZ2luOiAwIDNyZW07XHJcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gNnJlbSk7XHJcbiAgICBoZWlnaHQ6IDAuN3JlbTtcclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xyXG4gICAgICBoZWlnaHQ6IDAuN3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1sYWJlbHMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICBzcGFuIHtcclxuICAgICAgZmxleDogMSAwIDA7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy10aW1lIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTNyZW07XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICB9XHJcbn1cclxuIl19 */" /***/ }), @@ -4555,6 +4727,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/fesm5/common.js"); /* harmony import */ var _helpers_pipes_int_to_money_pipe__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../_helpers/pipes/int-to-money.pipe */ "./src/app/_helpers/pipes/int-to-money.pipe.ts"); /* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @ngx-translate/core */ "./node_modules/@ngx-translate/core/fesm5/ngx-translate-core.js"); +/* harmony import */ var bignumber_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! bignumber.js */ "./node_modules/bignumber.js/bignumber.js"); +/* harmony import */ var bignumber_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(bignumber_js__WEBPACK_IMPORTED_MODULE_9__); var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -4573,6 +4747,7 @@ var __metadata = (undefined && undefined.__metadata) || function (k, v) { + var PurchaseComponent = /** @class */ (function () { function PurchaseComponent(route, backend, variablesService, modalService, ngZone, location, intToMoneyPipe, translate) { var _this = this; @@ -4619,12 +4794,16 @@ var PurchaseComponent = /** @class */ (function () { sameAmount: new _angular_forms__WEBPACK_IMPORTED_MODULE_2__["FormControl"]({ value: false, disabled: false }), comment: new _angular_forms__WEBPACK_IMPORTED_MODULE_2__["FormControl"](''), fee: new _angular_forms__WEBPACK_IMPORTED_MODULE_2__["FormControl"](this.variablesService.default_fee), - time: new _angular_forms__WEBPACK_IMPORTED_MODULE_2__["FormControl"]({ value: '12', disabled: false }), - timeCancel: new _angular_forms__WEBPACK_IMPORTED_MODULE_2__["FormControl"]({ value: '12', disabled: false }), + time: new _angular_forms__WEBPACK_IMPORTED_MODULE_2__["FormControl"]({ value: 12, disabled: false }), + timeCancel: new _angular_forms__WEBPACK_IMPORTED_MODULE_2__["FormControl"]({ value: 12, disabled: false }), payment: new _angular_forms__WEBPACK_IMPORTED_MODULE_2__["FormControl"]('') + }, function (g) { + return (new bignumber_js__WEBPACK_IMPORTED_MODULE_9__["BigNumber"](g.get('yourDeposit').value)).isLessThan(g.get('amount').value) ? { 'your_deposit_too_small': true } : null; }); this.additionalOptions = false; this.currentContract = null; + this.showTimeSelect = false; + this.showNullify = false; } PurchaseComponent.prototype.checkAndChangeHistory = function () { var _this = this; @@ -4654,8 +4833,8 @@ var PurchaseComponent = /** @class */ (function () { sameAmount: _this.currentContract.private_detailes.to_pay.isEqualTo(_this.currentContract.private_detailes.b_pledge), comment: _this.currentContract.private_detailes.c, fee: _this.variablesService.default_fee, - time: '12', - timeCancel: '12', + time: 12, + timeCancel: 12, payment: _this.currentContract.payment_id }); _this.purchaseForm.get('sameAmount').disable(); @@ -4705,14 +4884,13 @@ var PurchaseComponent = /** @class */ (function () { _this.currentContract.is_new = true; _this.variablesService.currentWallet.recountNewContracts(); } - if (!_this.newPurchase && _this.currentContract.is_a && (_this.currentContract.state === 201 || _this.currentContract.state === 2 || _this.currentContract.state === 120 || _this.currentContract.state === 130)) { - if (_this.currentContract.cancel_expiration_time === 0 && (_this.currentContract.height === 0 || (_this.variablesService.height_app - _this.currentContract.height) < 10)) { - _this.purchaseForm.get('timeCancel').disable(); - } - else { - _this.purchaseForm.get('timeCancel').enable(); - } - } + // if (!this.newPurchase && this.currentContract.is_a && (this.currentContract.state === 201 || this.currentContract.state === 2 || this.currentContract.state === 120 || this.currentContract.state === 130)) { + // if (this.currentContract.cancel_expiration_time === 0 && (this.currentContract.height === 0 || (this.variablesService.height_app - this.currentContract.height) < 10)) { + // this.purchaseForm.get('timeCancel').disable(); + // } else { + // this.purchaseForm.get('timeCancel').enable(); + // } + // } }); }; PurchaseComponent.prototype.toggleOptions = function () { @@ -4900,7 +5078,7 @@ module.exports = "
\r\n \\r\n\r\n
\r\n
\r\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\r\n {{ 'BREADCRUMBS.RESTORE_WALLET' | translate }}\r\n
\r\n \r\n \r\n {{ 'COMMON.BACK' | translate }}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_NOT_VALID' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n" +module.exports = "
\r\n\r\n
\r\n
\r\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\r\n {{ 'BREADCRUMBS.RESTORE_WALLET' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\r\n
\r\n
\r\n
= variablesService.maxWalletNameLength\">\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_NOT_VALID' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n\r\n\r\n" /***/ }), @@ -5001,7 +5179,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-restore {\n margin: 2.4rem 0;\n width: 100%; }\n .form-restore .input-block.half-block {\n width: 50%; }\n .form-restore .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem;\n width: 50%; }\n .form-restore .wrap-buttons button {\n margin: 0 0.7rem; }\n .form-restore .wrap-buttons button.transparent-button {\n flex-basis: 50%; }\n .form-restore .wrap-buttons button.select-button {\n flex-basis: 60%; }\n .form-restore .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzdG9yZS13YWxsZXQvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccmVzdG9yZS13YWxsZXRcXHJlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLFdBQVcsRUFBQTtFQUZiO0lBT00sVUFBVSxFQUFBO0VBUGhCO0lBWUksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixVQUFVLEVBQUE7RUFkZDtNQWlCTSxnQkFBZ0IsRUFBQTtFQWpCdEI7UUFvQlEsZUFBZSxFQUFBO0VBcEJ2QjtRQXdCUSxlQUFlLEVBQUE7RUF4QnZCO1FBNEJRLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3Jlc3RvcmUtd2FsbGV0L3Jlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tcmVzdG9yZSB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmLmhhbGYtYmxvY2sge1xyXG4gICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuICAgIHdpZHRoOiA1MCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuXHJcbiAgICAgICYudHJhbnNwYXJlbnQtYnV0dG9uIHtcclxuICAgICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuc2VsZWN0LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNjAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmNyZWF0ZS1idXR0b24ge1xyXG4gICAgICAgIGZsZXg6IDEgMSA1MCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" +module.exports = ":host {\n position: relative; }\n\n.form-restore {\n margin: 2.4rem 0;\n width: 100%; }\n\n.form-restore .input-block.half-block {\n width: 50%; }\n\n.form-restore .wrap-buttons {\n display: flex;\n margin: 2.5rem -0.7rem;\n width: 50%; }\n\n.form-restore .wrap-buttons button {\n margin: 0 0.7rem; }\n\n.form-restore .wrap-buttons button.transparent-button {\n flex-basis: 50%; }\n\n.form-restore .wrap-buttons button.select-button {\n flex-basis: 60%; }\n\n.form-restore .wrap-buttons button.create-button {\n flex: 1 1 50%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzdG9yZS13YWxsZXQvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHJlc3RvcmUtd2FsbGV0XFxyZXN0b3JlLXdhbGxldC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGdCQUFnQjtFQUNoQixXQUFXLEVBQUE7O0FBRmI7SUFPTSxVQUFVLEVBQUE7O0FBUGhCO0lBWUksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixVQUFVLEVBQUE7O0FBZGQ7TUFpQk0sZ0JBQWdCLEVBQUE7O0FBakJ0QjtRQW9CUSxlQUFlLEVBQUE7O0FBcEJ2QjtRQXdCUSxlQUFlLEVBQUE7O0FBeEJ2QjtRQTRCUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9yZXN0b3JlLXdhbGxldC9yZXN0b3JlLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5mb3JtLXJlc3RvcmUge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDEwMCU7XHJcblxyXG4gIC5pbnB1dC1ibG9jayB7XHJcblxyXG4gICAgJi5oYWxmLWJsb2NrIHtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC53cmFwLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIG1hcmdpbjogMi41cmVtIC0wLjdyZW07XHJcbiAgICB3aWR0aDogNTAlO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcblxyXG4gICAgICAmLnRyYW5zcGFyZW50LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNTAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnNlbGVjdC1idXR0b24ge1xyXG4gICAgICAgIGZsZXgtYmFzaXM6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" /***/ }), @@ -5068,18 +5246,21 @@ var RestoreWalletComponent = /** @class */ (function () { id: '' }; this.walletSaved = false; + this.walletSavedName = ''; + this.progressWidth = '9rem'; } RestoreWalletComponent.prototype.ngOnInit = function () { }; RestoreWalletComponent.prototype.createWallet = function () { var _this = this; this.ngZone.run(function () { + _this.progressWidth = '100%'; _this.router.navigate(['/seed-phrase'], { queryParams: { wallet_id: _this.wallet.id } }); }); }; RestoreWalletComponent.prototype.saveWallet = function () { var _this = this; - if (this.restoreForm.valid) { + if (this.restoreForm.valid && this.restoreForm.get('name').value.length <= this.variablesService.maxWalletNameLength) { this.backend.isValidRestoreWalletText(this.restoreForm.get('key').value, function (valid_status, valid_data) { if (valid_data === 'FALSE') { _this.ngZone.run(function () { @@ -5090,6 +5271,7 @@ var RestoreWalletComponent = /** @class */ (function () { _this.backend.saveFileDialog(_this.translate.instant('RESTORE_WALLET.CHOOSE_PATH'), '*', _this.variablesService.settings.default_path, function (save_status, save_data) { if (save_status) { _this.variablesService.settings.default_path = save_data.path.substr(0, save_data.path.lastIndexOf('/')); + _this.walletSavedName = save_data.path.substr(save_data.path.lastIndexOf('/') + 1, save_data.path.length - 1); _this.backend.restoreWallet(save_data.path, _this.restoreForm.get('password').value, _this.restoreForm.get('key').value, function (restore_status, restore_data) { if (restore_status) { _this.wallet.id = restore_data.wallet_id; @@ -5107,6 +5289,7 @@ var RestoreWalletComponent = /** @class */ (function () { }); _this.ngZone.run(function () { _this.walletSaved = true; + _this.progressWidth = '50%'; }); } else { @@ -5146,7 +5329,7 @@ var RestoreWalletComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n\r\n
\r\n
\r\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\r\n {{ 'BREADCRUMBS.SAVE_PHRASE' | translate }}\r\n
\r\n \r\n \r\n {{ 'COMMON.BACK' | translate }}\r\n \r\n
\r\n\r\n

{{ 'SEED_PHRASE.TITLE' | translate }}

\r\n\r\n
\r\n \r\n
{{(index + 1) + '. ' + word}}
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n" +module.exports = "
\r\n\r\n
\r\n
\r\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\r\n {{ 'BREADCRUMBS.SAVE_PHRASE' | translate }}\r\n
\r\n \r\n
\r\n\r\n

{{ 'SEED_PHRASE.TITLE' | translate }}

\r\n\r\n
\r\n \r\n
{{(index + 1) + '. ' + word}}
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n\r\n" /***/ }), @@ -5157,7 +5340,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".seed-phrase-title {\n line-height: 2.2rem;\n padding: 2.2rem 0; }\n\n.seed-phrase-content {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n padding: 1.4rem;\n width: 100%;\n height: 12rem; }\n\n.seed-phrase-content .word {\n line-height: 2.2rem;\n max-width: 13rem; }\n\nbutton {\n margin: 2.8rem 0;\n width: 25%;\n min-width: 1.5rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VlZC1waHJhc2UvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2VlZC1waHJhc2VcXHNlZWQtcGhyYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsbUJBQW1CO0VBQ25CLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLGVBQWU7RUFDZixXQUFXO0VBQ1gsYUFBYSxFQUFBOztBQU5mO0lBU0ksbUJBQW1CO0lBQ25CLGdCQUFnQixFQUFBOztBQUlwQjtFQUNFLGdCQUFnQjtFQUNoQixVQUFVO0VBQ1YsaUJBQWlCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zZWVkLXBocmFzZS9zZWVkLXBocmFzZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5zZWVkLXBocmFzZS10aXRsZSB7XHJcbiAgbGluZS1oZWlnaHQ6IDIuMnJlbTtcclxuICBwYWRkaW5nOiAyLjJyZW0gMDtcclxufVxyXG5cclxuLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgcGFkZGluZzogMS40cmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTJyZW07XHJcblxyXG4gIC53b3JkIHtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjJyZW07XHJcbiAgICBtYXgtd2lkdGg6IDEzcmVtO1xyXG4gIH1cclxufVxyXG5cclxuYnV0dG9uIHtcclxuICBtYXJnaW46IDIuOHJlbSAwO1xyXG4gIHdpZHRoOiAyNSU7XHJcbiAgbWluLXdpZHRoOiAxLjVyZW07XHJcbn1cclxuIl19 */" +module.exports = ":host {\n position: relative; }\n\n.seed-phrase-title {\n line-height: 2.2rem;\n padding: 2.2rem 0; }\n\n.seed-phrase-content {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n padding: 1.4rem;\n width: 100%;\n height: 12rem; }\n\n.seed-phrase-content .word {\n line-height: 2.2rem;\n max-width: 13rem; }\n\n.seed-phrase-button {\n margin: 2.8rem 0;\n width: 25%;\n min-width: 1.5rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VlZC1waHJhc2UvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHNlZWQtcGhyYXNlXFxzZWVkLXBocmFzZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLG1CQUFtQjtFQUNuQixpQkFBaUIsRUFBQTs7QUFHbkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLGVBQWU7RUFDZixlQUFlO0VBQ2YsV0FBVztFQUNYLGFBQWEsRUFBQTs7QUFOZjtJQVNJLG1CQUFtQjtJQUNuQixnQkFBZ0IsRUFBQTs7QUFJcEI7RUFDRSxnQkFBZ0I7RUFDaEIsVUFBVTtFQUNWLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2VlZC1waHJhc2Uvc2VlZC1waHJhc2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4uc2VlZC1waHJhc2UtdGl0bGUge1xyXG4gIGxpbmUtaGVpZ2h0OiAyLjJyZW07XHJcbiAgcGFkZGluZzogMi4ycmVtIDA7XHJcbn1cclxuXHJcbi5zZWVkLXBocmFzZS1jb250ZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZmxleC13cmFwOiB3cmFwO1xyXG4gIHBhZGRpbmc6IDEuNHJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEycmVtO1xyXG5cclxuICAud29yZCB7XHJcbiAgICBsaW5lLWhlaWdodDogMi4ycmVtO1xyXG4gICAgbWF4LXdpZHRoOiAxM3JlbTtcclxuICB9XHJcbn1cclxuXHJcbi5zZWVkLXBocmFzZS1idXR0b24ge1xyXG4gIG1hcmdpbjogMi44cmVtIDA7XHJcbiAgd2lkdGg6IDI1JTtcclxuICBtaW4td2lkdGg6IDEuNXJlbTtcclxufVxyXG4iXX0= */" /***/ }), @@ -5172,10 +5355,11 @@ module.exports = ".seed-phrase-title {\n line-height: 2.2rem;\n padding: 2.2re __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SeedPhraseComponent", function() { return SeedPhraseComponent; }); /* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm5/core.js"); -/* harmony import */ var _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_helpers/services/backend.service */ "./src/app/_helpers/services/backend.service.ts"); -/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm5/router.js"); -/* harmony import */ var _helpers_services_variables_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../_helpers/services/variables.service */ "./src/app/_helpers/services/variables.service.ts"); -/* harmony import */ var _helpers_services_modal_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../_helpers/services/modal.service */ "./src/app/_helpers/services/modal.service.ts"); +/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/fesm5/common.js"); +/* harmony import */ var _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_helpers/services/backend.service */ "./src/app/_helpers/services/backend.service.ts"); +/* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm5/router.js"); +/* harmony import */ var _helpers_services_variables_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../_helpers/services/variables.service */ "./src/app/_helpers/services/variables.service.ts"); +/* harmony import */ var _helpers_services_modal_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../_helpers/services/modal.service */ "./src/app/_helpers/services/modal.service.ts"); var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -5190,10 +5374,12 @@ var __metadata = (undefined && undefined.__metadata) || function (k, v) { + var SeedPhraseComponent = /** @class */ (function () { - function SeedPhraseComponent(route, router, backend, variablesService, modalService, ngZone) { + function SeedPhraseComponent(route, router, location, backend, variablesService, modalService, ngZone) { this.route = route; this.router = router; + this.location = location; this.backend = backend; this.variablesService = variablesService; this.modalService = modalService; @@ -5250,6 +5436,9 @@ var SeedPhraseComponent = /** @class */ (function () { }); } }; + SeedPhraseComponent.prototype.back = function () { + this.location.back(); + }; SeedPhraseComponent.prototype.ngOnDestroy = function () { this.queryRouting.unsubscribe(); }; @@ -5259,11 +5448,12 @@ var SeedPhraseComponent = /** @class */ (function () { template: __webpack_require__(/*! ./seed-phrase.component.html */ "./src/app/seed-phrase/seed-phrase.component.html"), styles: [__webpack_require__(/*! ./seed-phrase.component.scss */ "./src/app/seed-phrase/seed-phrase.component.scss")] }), - __metadata("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_2__["ActivatedRoute"], - _angular_router__WEBPACK_IMPORTED_MODULE_2__["Router"], - _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_1__["BackendService"], - _helpers_services_variables_service__WEBPACK_IMPORTED_MODULE_3__["VariablesService"], - _helpers_services_modal_service__WEBPACK_IMPORTED_MODULE_4__["ModalService"], + __metadata("design:paramtypes", [_angular_router__WEBPACK_IMPORTED_MODULE_3__["ActivatedRoute"], + _angular_router__WEBPACK_IMPORTED_MODULE_3__["Router"], + _angular_common__WEBPACK_IMPORTED_MODULE_1__["Location"], + _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_2__["BackendService"], + _helpers_services_variables_service__WEBPACK_IMPORTED_MODULE_4__["VariablesService"], + _helpers_services_modal_service__WEBPACK_IMPORTED_MODULE_5__["ModalService"], _angular_core__WEBPACK_IMPORTED_MODULE_0__["NgZone"]]) ], SeedPhraseComponent); return SeedPhraseComponent; @@ -5291,7 +5481,7 @@ module.exports = "
\r\n\r\n
\r\n \r\n
\r\n\r\n

{{ 'SETTINGS.TITLE' | translate }}

\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n {{ 'SETTINGS.MASTER_PASSWORD.TITLE' | translate }}\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n {{ 'SETTINGS.FORM_ERRORS.PASS_NOT_MATCH' | translate }}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n {{ 'SETTINGS.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
{{ 'SETTINGS.LAST_BUILD' | translate : {value: variablesService.last_build_available} }}
\r\n\r\n
\r\n" +module.exports = "
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n

{{ 'SETTINGS.TITLE' | translate }}

\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n {{item.name | translate}}\r\n \r\n \r\n {{item.name | translate}}\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n {{ 'SETTINGS.MASTER_PASSWORD.TITLE' | translate }}\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n {{ 'SETTINGS.FORM_ERRORS.PASS_NOT_MATCH' | translate }}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\r\n
\r\n
\r\n
\r\n {{ 'SETTINGS.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n
{{ 'SETTINGS.LAST_BUILD' | translate : {value: currentBuild} }}
\r\n
\r\n\r\n
\r\n" /***/ }), @@ -5461,7 +5651,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".head {\n justify-content: flex-end; }\n\n.settings-title {\n font-size: 1.7rem; }\n\n.theme-selection {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin: 2.4rem 0;\n width: 50%; }\n\n.theme-selection .radio-block {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: 1.3rem;\n line-height: 2.7rem; }\n\n.master-password {\n width: 50%; }\n\n.master-password .master-password-title {\n display: flex;\n font-size: 1.5rem;\n line-height: 2.7rem;\n margin-bottom: 1rem; }\n\n.master-password button {\n margin: 2.5rem auto;\n width: 100%;\n max-width: 15rem; }\n\n.last-build {\n position: absolute;\n bottom: 3rem;\n right: 3rem;\n font-size: 1.3rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2V0dGluZ3MvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2V0dGluZ3NcXHNldHRpbmdzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFMWjtJQVFJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsMkJBQTJCO0lBQzNCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFJdkI7RUFDRSxVQUFVLEVBQUE7O0FBRFo7SUFJSSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixtQkFBbUIsRUFBQTs7QUFQdkI7SUFXSSxtQkFBbUI7SUFDbkIsV0FBVztJQUNYLGdCQUFnQixFQUFBOztBQUlwQjtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaGVhZCB7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxufVxyXG5cclxuLnNldHRpbmdzLXRpdGxlIHtcclxuICBmb250LXNpemU6IDEuN3JlbTtcclxufVxyXG5cclxuLnRoZW1lLXNlbGVjdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLnJhZGlvLWJsb2NrIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLm1hc3Rlci1wYXNzd29yZCB7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLm1hc3Rlci1wYXNzd29yZC10aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNXJlbSBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmxhc3QtYnVpbGQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBib3R0b206IDNyZW07XHJcbiAgcmlnaHQ6IDNyZW07XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbn1cclxuIl19 */" +module.exports = ".head {\n justify-content: flex-end; }\n\n.settings-title {\n font-size: 1.7rem; }\n\n.theme-selection {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin: 2.4rem 0;\n width: 50%; }\n\n.theme-selection .radio-block {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n font-size: 1.3rem;\n line-height: 2.7rem; }\n\n.lock-selection {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin: 2.4rem 0;\n width: 50%; }\n\n.lock-selection .lock-selection-title {\n display: flex;\n font-size: 1.5rem;\n line-height: 2.7rem;\n margin-bottom: 1rem; }\n\n.scale-selection {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 0 4rem;\n width: 50%;\n height: 0.5rem; }\n\n.scale-selection .button-block {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 0 auto;\n margin: 0 0.2rem;\n padding: 0;\n height: 0.5rem; }\n\n.scale-selection .button-block .label {\n position: absolute;\n bottom: -1rem;\n left: 50%;\n -webkit-transform: translate(-50%, 100%);\n transform: translate(-50%, 100%);\n font-size: 1rem;\n white-space: nowrap; }\n\n.master-password {\n width: 50%; }\n\n.master-password .master-password-title {\n display: flex;\n font-size: 1.5rem;\n line-height: 2.7rem;\n margin-bottom: 1rem; }\n\n.master-password button {\n margin: 2.5rem auto;\n width: 100%;\n max-width: 15rem; }\n\n.last-build {\n font-size: 1rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2V0dGluZ3MvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHNldHRpbmdzXFxzZXR0aW5ncy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLHlCQUF5QixFQUFBOztBQUczQjtFQUNFLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsdUJBQXVCO0VBQ3ZCLGdCQUFnQjtFQUNoQixVQUFVLEVBQUE7O0FBTFo7SUFRSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLDJCQUEyQjtJQUMzQixpQkFBaUI7SUFDakIsbUJBQW1CLEVBQUE7O0FBSXZCO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFMWjtJQVFJLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLG1CQUFtQixFQUFBOztBQUl2QjtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsOEJBQThCO0VBQzlCLGlCQUFpQjtFQUNqQixVQUFVO0VBQ1YsY0FBYyxFQUFBOztBQU5oQjtJQVNJLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLFVBQVU7SUFDVixjQUFjLEVBQUE7O0FBaEJsQjtNQW1CTSxrQkFBa0I7TUFDbEIsYUFBYTtNQUNiLFNBQVM7TUFDVCx3Q0FBZ0M7Y0FBaEMsZ0NBQWdDO01BQ2hDLGVBQWU7TUFDZixtQkFBbUIsRUFBQTs7QUFLekI7RUFDRSxVQUFVLEVBQUE7O0FBRFo7SUFJSSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixtQkFBbUIsRUFBQTs7QUFQdkI7SUFXSSxtQkFBbUI7SUFDbkIsV0FBVztJQUNYLGdCQUFnQixFQUFBOztBQUlwQjtFQUNFLGVBQWUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NldHRpbmdzL3NldHRpbmdzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmhlYWQge1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbn1cclxuXHJcbi5zZXR0aW5ncy10aXRsZSB7XHJcbiAgZm9udC1zaXplOiAxLjdyZW07XHJcbn1cclxuXHJcbi50aGVtZS1zZWxlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIC5yYWRpby1ibG9jayB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuICB9XHJcbn1cclxuXHJcbi5sb2NrLXNlbGVjdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLmxvY2stc2VsZWN0aW9uLXRpdGxlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLnNjYWxlLXNlbGVjdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBwYWRkaW5nOiAwIDAgNHJlbTtcclxuICB3aWR0aDogNTAlO1xyXG4gIGhlaWdodDogMC41cmVtO1xyXG5cclxuICAuYnV0dG9uLWJsb2NrIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmbGV4OiAxIDAgYXV0bztcclxuICAgIG1hcmdpbjogMCAwLjJyZW07XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgaGVpZ2h0OiAwLjVyZW07XHJcblxyXG4gICAgLmxhYmVsIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IC0xcmVtO1xyXG4gICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDEwMCUpO1xyXG4gICAgICBmb250LXNpemU6IDFyZW07XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubWFzdGVyLXBhc3N3b3JkIHtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICAubWFzdGVyLXBhc3N3b3JkLXRpdGxlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMi41cmVtIGF1dG87XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ubGFzdC1idWlsZCB7XHJcbiAgZm9udC1zaXplOiAxcmVtO1xyXG59XHJcbiJdfQ== */" /***/ }), @@ -5495,13 +5685,52 @@ var __metadata = (undefined && undefined.__metadata) || function (k, v) { var SettingsComponent = /** @class */ (function () { - function SettingsComponent(renderer, variablesService, backend, location) { + function SettingsComponent(renderer, variablesService, backend, location, ngZone) { var _this = this; this.renderer = renderer; this.variablesService = variablesService; this.backend = backend; this.location = location; + this.ngZone = ngZone; + this.appLockOptions = [ + { + id: 5, + name: 'SETTINGS.APP_LOCK.TIME1' + }, + { + id: 15, + name: 'SETTINGS.APP_LOCK.TIME2' + }, + { + id: 60, + name: 'SETTINGS.APP_LOCK.TIME3' + }, + { + id: 0, + name: 'SETTINGS.APP_LOCK.TIME4' + } + ]; + this.appScaleOptions = [ + { + id: 7.5, + name: '75% scale' + }, + { + id: 10, + name: '100% scale' + }, + { + id: 12.5, + name: '125% scale' + }, + { + id: 15, + name: '150% scale' + } + ]; + this.currentBuild = ''; this.theme = this.variablesService.settings.theme; + this.scale = this.variablesService.settings.scale; this.changeForm = new _angular_forms__WEBPACK_IMPORTED_MODULE_3__["FormGroup"]({ password: new _angular_forms__WEBPACK_IMPORTED_MODULE_3__["FormControl"]('', _angular_forms__WEBPACK_IMPORTED_MODULE_3__["Validators"].required), new_password: new _angular_forms__WEBPACK_IMPORTED_MODULE_3__["FormControl"]('', _angular_forms__WEBPACK_IMPORTED_MODULE_3__["Validators"].required), @@ -5512,7 +5741,14 @@ var SettingsComponent = /** @class */ (function () { return g.get('password').value === _this.variablesService.appPass ? null : { 'pass_mismatch': true }; }]); } - SettingsComponent.prototype.ngOnInit = function () { }; + SettingsComponent.prototype.ngOnInit = function () { + var _this = this; + this.backend.getVersion(function (version) { + _this.ngZone.run(function () { + _this.currentBuild = version; + }); + }); + }; SettingsComponent.prototype.setTheme = function (theme) { this.renderer.removeClass(document.body, 'theme-' + this.theme); this.theme = theme; @@ -5520,6 +5756,12 @@ var SettingsComponent = /** @class */ (function () { this.renderer.addClass(document.body, 'theme-' + this.theme); this.backend.storeAppData(); }; + SettingsComponent.prototype.setScale = function (scale) { + this.scale = scale; + this.variablesService.settings.scale = this.scale; + this.renderer.setStyle(document.documentElement, 'font-size', this.scale + 'px'); + this.backend.storeAppData(); + }; SettingsComponent.prototype.onSubmitChangePass = function () { var _this = this; if (this.changeForm.valid) { @@ -5534,6 +5776,10 @@ var SettingsComponent = /** @class */ (function () { }); } }; + SettingsComponent.prototype.onLockChange = function () { + this.variablesService.restartCountdown(); + this.backend.storeAppData(); + }; SettingsComponent.prototype.back = function () { this.location.back(); }; @@ -5543,7 +5789,11 @@ var SettingsComponent = /** @class */ (function () { template: __webpack_require__(/*! ./settings.component.html */ "./src/app/settings/settings.component.html"), styles: [__webpack_require__(/*! ./settings.component.scss */ "./src/app/settings/settings.component.scss")] }), - __metadata("design:paramtypes", [_angular_core__WEBPACK_IMPORTED_MODULE_0__["Renderer2"], _helpers_services_variables_service__WEBPACK_IMPORTED_MODULE_1__["VariablesService"], _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_2__["BackendService"], _angular_common__WEBPACK_IMPORTED_MODULE_4__["Location"]]) + __metadata("design:paramtypes", [_angular_core__WEBPACK_IMPORTED_MODULE_0__["Renderer2"], + _helpers_services_variables_service__WEBPACK_IMPORTED_MODULE_1__["VariablesService"], + _helpers_services_backend_service__WEBPACK_IMPORTED_MODULE_2__["BackendService"], + _angular_common__WEBPACK_IMPORTED_MODULE_4__["Location"], + _angular_core__WEBPACK_IMPORTED_MODULE_0__["NgZone"]]) ], SettingsComponent); return SettingsComponent; }()); @@ -5559,7 +5809,7 @@ var SettingsComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n
\r\n

{{ 'SIDEBAR.TITLE' | translate }}

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.OFFLINE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\r\n \r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.SYNCING' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\r\n \r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.ONLINE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\r\n \r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\r\n \r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\r\n \r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ variablesService.sync.progress_value_text }}%
\r\n
\r\n
\r\n
\r\n
\r\n" +module.exports = "
\r\n
\r\n

{{ 'SIDEBAR.TITLE' | translate }}

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.OFFLINE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\r\n \r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.SYNCING' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\r\n \r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.ONLINE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\r\n \r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\r\n \r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\r\n \r\n \r\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{ variablesService.sync.progress_value_text }}%
\r\n
\r\n
\r\n
\r\n
\r\n" /***/ }), @@ -5570,7 +5820,7 @@ module.exports = "
\r\n
\r\n
\r\n
\r\n {{ 'STAKING.TITLE' | translate }}\r\n \r\n \r\n \r\n
\r\n
\r\n {{ 'STAKING.TITLE_PENDING' | translate }}\r\n {{pending.total | intToMoney}} {{variablesService.defaultCurrency}}\r\n
\r\n
\r\n {{ 'STAKING.TITLE_TOTAL' | translate }}\r\n {{total | intToMoney}} {{variablesService.defaultCurrency}}\r\n
\r\n
\r\n
\r\n {{selectedDate.date | date : 'MMM. EEEE, dd, yyyy'}}\r\n {{selectedDate.amount}} {{variablesService.defaultCurrency}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {{ 'STAKING.TITLE_PERIOD' | translate }}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n" +module.exports = "
\r\n
\r\n
\r\n {{ 'STAKING.TITLE' | translate }}\r\n \r\n \r\n \r\n
\r\n
\r\n {{ 'STAKING.TITLE_PENDING' | translate }}\r\n {{pending.total | intToMoney}} {{variablesService.defaultCurrency}}\r\n
\r\n
\r\n {{ 'STAKING.TITLE_TOTAL' | translate }}\r\n {{total | intToMoney}} {{variablesService.defaultCurrency}}\r\n
\r\n
\r\n
\r\n {{selectedDate.date | date : 'HH:00 - HH:59, MMM. EEEE, dd, yyyy'}}\r\n {{selectedDate.date | date : 'HH:mm, MMM. EEEE, dd, yyyy'}}\r\n {{selectedDate.date | date : 'MMM. EEEE, dd, yyyy'}}\r\n {{selectedDate.amount}} {{variablesService.defaultCurrency}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {{ 'STAKING.TITLE_PERIOD' | translate }}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n" /***/ }), @@ -5684,7 +5934,7 @@ module.exports = "
\r\n
\r\n /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.chart-header {\n display: flex;\n flex: 0 0 auto; }\n\n.chart-header .general {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n flex-grow: 1;\n font-size: 1.3rem;\n margin: -0.5rem 0; }\n\n.chart-header .general > div {\n display: flex;\n align-items: center;\n margin: 0.5rem 0;\n height: 2rem; }\n\n.chart-header .general > div .label {\n display: inline-block;\n width: 9rem; }\n\n.chart-header .selected {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: center;\n flex-grow: 1;\n font-size: 1.8rem; }\n\n.chart-header .selected span {\n line-height: 2.9rem; }\n\n.chart {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-height: 40rem; }\n\n.chart > div {\n width: 100%;\n height: 100%; }\n\n.chart-options {\n display: flex;\n align-items: center;\n height: 2.4rem;\n flex: 0 0 auto; }\n\n.chart-options .title {\n font-size: 1.3rem;\n width: 9rem; }\n\n.chart-options .options {\n display: flex;\n justify-content: space-between;\n flex-grow: 1;\n height: 100%; }\n\n.chart-options .options button {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 1 auto;\n cursor: pointer;\n font-size: 1.3rem;\n margin: 0 0.1rem;\n padding: 0;\n height: 100%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc3Rha2luZy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzdGFraW5nXFxzdGFraW5nLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxhQUFhO0VBQ2IsY0FBYyxFQUFBOztBQUZoQjtJQUtJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLGlCQUFpQixFQUFBOztBQVhyQjtNQWNNLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTs7QUFqQmxCO1FBb0JRLHFCQUFxQjtRQUNyQixXQUFXLEVBQUE7O0FBckJuQjtJQTJCSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQixFQUFBOztBQWhDckI7TUFtQ00sbUJBQW1CLEVBQUE7O0FBS3pCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsaUJBQWlCLEVBQUE7O0FBSm5CO0lBT0ksV0FBVztJQUNYLFlBQVksRUFBQTs7QUFJaEI7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGNBQWM7RUFDZCxjQUFjLEVBQUE7O0FBSmhCO0lBT0ksaUJBQWlCO0lBQ2pCLFdBQVcsRUFBQTs7QUFSZjtJQVlJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsWUFBWTtJQUNaLFlBQVksRUFBQTs7QUFmaEI7TUFrQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLGVBQWU7TUFDZixpQkFBaUI7TUFDakIsZ0JBQWdCO01BQ2hCLFVBQVU7TUFDVixZQUFZLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zdGFraW5nL3N0YWtpbmcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uY2hhcnQtaGVhZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG5cclxuICAuZ2VuZXJhbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogLTAuNXJlbSAwO1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luOiAwLjVyZW0gMDtcclxuICAgICAgaGVpZ2h0OiAycmVtO1xyXG5cclxuICAgICAgLmxhYmVsIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDlyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWxlY3RlZCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZm9udC1zaXplOiAxLjhyZW07XHJcblxyXG4gICAgc3BhbiB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjlyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhcnQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuICBtaW4taGVpZ2h0OiA0MHJlbTtcclxuXHJcbiAgPiBkaXYge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhcnQtb3B0aW9ucyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGhlaWdodDogMi40cmVtO1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG5cclxuICAudGl0bGUge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICB3aWR0aDogOXJlbTtcclxuICB9XHJcblxyXG4gIC5vcHRpb25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICBtYXJnaW46IDAgMC4xcmVtO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" +module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.chart-header {\n display: flex;\n flex: 0 0 auto; }\n\n.chart-header .general {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n flex-grow: 1;\n font-size: 1.3rem;\n margin: -0.5rem 0; }\n\n.chart-header .general > div {\n display: flex;\n align-items: center;\n margin: 0.5rem 0;\n height: 2rem; }\n\n.chart-header .general > div .label {\n display: inline-block;\n width: 9rem; }\n\n.chart-header .selected {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: center;\n flex-grow: 1;\n font-size: 1.8rem; }\n\n.chart-header .selected span {\n line-height: 2.9rem; }\n\n.chart {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-height: 40rem; }\n\n.chart > div {\n width: 100%;\n height: 100%; }\n\n.chart-options {\n display: flex;\n align-items: center;\n height: 2.4rem;\n flex: 0 0 auto; }\n\n.chart-options .title {\n font-size: 1.3rem;\n width: 9rem; }\n\n.chart-options .options {\n display: flex;\n justify-content: space-between;\n flex-grow: 1;\n height: 100%; }\n\n.chart-options .options button {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 1 auto;\n cursor: pointer;\n font-size: 1.3rem;\n margin: 0 0.1rem;\n padding: 0;\n height: 100%; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc3Rha2luZy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc3Rha2luZ1xcc3Rha2luZy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYTtFQUNiLGNBQWMsRUFBQTs7QUFGaEI7SUFLSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixpQkFBaUIsRUFBQTs7QUFYckI7TUFjTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLGdCQUFnQjtNQUNoQixZQUFZLEVBQUE7O0FBakJsQjtRQW9CUSxxQkFBcUI7UUFDckIsV0FBVyxFQUFBOztBQXJCbkI7SUEyQkksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsdUJBQXVCO0lBQ3ZCLFlBQVk7SUFDWixpQkFBaUIsRUFBQTs7QUFoQ3JCO01BbUNNLG1CQUFtQixFQUFBOztBQUt6QjtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGlCQUFpQixFQUFBOztBQUpuQjtJQU9JLFdBQVc7SUFDWCxZQUFZLEVBQUE7O0FBSWhCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsY0FBYyxFQUFBOztBQUpoQjtJQU9JLGlCQUFpQjtJQUNqQixXQUFXLEVBQUE7O0FBUmY7SUFZSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLFlBQVk7SUFDWixZQUFZLEVBQUE7O0FBZmhCO01Ba0JNLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsdUJBQXVCO01BQ3ZCLGNBQWM7TUFDZCxlQUFlO01BQ2YsaUJBQWlCO01BQ2pCLGdCQUFnQjtNQUNoQixVQUFVO01BQ1YsWUFBWSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvc3Rha2luZy9zdGFraW5nLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmNoYXJ0LWhlYWRlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgLmdlbmVyYWwge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW46IC0wLjVyZW0gMDtcclxuXHJcbiAgICA+IGRpdiB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbjogMC41cmVtIDA7XHJcbiAgICAgIGhlaWdodDogMnJlbTtcclxuXHJcbiAgICAgIC5sYWJlbCB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIHdpZHRoOiA5cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc2VsZWN0ZWQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGZsZXgtZ3JvdzogMTtcclxuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG5cclxuICAgIHNwYW4ge1xyXG4gICAgICBsaW5lLWhlaWdodDogMi45cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmNoYXJ0IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWluLWhlaWdodDogNDByZW07XHJcblxyXG4gID4gZGl2IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuLmNoYXJ0LW9wdGlvbnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBoZWlnaHQ6IDIuNHJlbTtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgd2lkdGg6IDlyZW07XHJcbiAgfVxyXG5cclxuICAub3B0aW9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBmbGV4OiAxIDEgYXV0bztcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgICAgbWFyZ2luOiAwIDAuMXJlbTtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */" /***/ }), @@ -5705,6 +5955,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _angular_router__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @angular/router */ "./node_modules/@angular/router/fesm5/router.js"); /* harmony import */ var _helpers_pipes_int_to_money_pipe__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../_helpers/pipes/int-to-money.pipe */ "./src/app/_helpers/pipes/int-to-money.pipe.ts"); /* harmony import */ var _ngx_translate_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @ngx-translate/core */ "./node_modules/@ngx-translate/core/fesm5/ngx-translate-core.js"); +/* harmony import */ var bignumber_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! bignumber.js */ "./node_modules/bignumber.js/bignumber.js"); +/* harmony import */ var bignumber_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(bignumber_js__WEBPACK_IMPORTED_MODULE_7__); var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -5721,6 +5973,7 @@ var __metadata = (undefined && undefined.__metadata) || function (k, v) { + var StakingComponent = /** @class */ (function () { function StakingComponent(route, variablesService, backend, ngZone, intToMoneyPipe, translate) { this.route = route; @@ -5761,11 +6014,12 @@ var StakingComponent = /** @class */ (function () { amount: null }; this.originalData = []; - this.total = 0; + this.total = new bignumber_js__WEBPACK_IMPORTED_MODULE_7__["BigNumber"](0); this.pending = { list: [], - total: 0 + total: new bignumber_js__WEBPACK_IMPORTED_MODULE_7__["BigNumber"](0) }; + this.currentPeriod = 'All'; } StakingComponent.prototype.ngOnInit = function () { var _this = this; @@ -5773,7 +6027,7 @@ var StakingComponent = /** @class */ (function () { _this.getMiningHistory(); }); this.heightAppEvent = this.variablesService.getHeightAppEvent.subscribe(function (newHeight) { - if (_this.pending.total) { + if (!_this.pending.total.isZero()) { var pendingCount = _this.pending.list.length; for (var i = pendingCount - 1; i >= 0; i--) { if (newHeight - _this.pending.list[i].h >= 10) { @@ -5781,9 +6035,9 @@ var StakingComponent = /** @class */ (function () { } } if (pendingCount !== _this.pending.list.length) { - _this.pending.total = 0; + _this.pending.total = new bignumber_js__WEBPACK_IMPORTED_MODULE_7__["BigNumber"](0); for (var i = 0; i < _this.pending.list.length; i++) { - _this.pending.total += _this.pending.list[i].a; + _this.pending.total = _this.pending.total.plus(_this.pending.list[i].a); } } } @@ -5905,9 +6159,9 @@ var StakingComponent = /** @class */ (function () { var _this = this; if (this.variablesService.currentWallet.loaded) { this.backend.getMiningHistory(this.variablesService.currentWallet.wallet_id, function (status, data) { - _this.total = 0; + _this.total = new bignumber_js__WEBPACK_IMPORTED_MODULE_7__["BigNumber"](0); _this.pending.list = []; - _this.pending.total = 0; + _this.pending.total = new bignumber_js__WEBPACK_IMPORTED_MODULE_7__["BigNumber"](0); _this.originalData = []; if (data.mined_entries) { data.mined_entries.forEach(function (item, key) { @@ -5916,10 +6170,10 @@ var StakingComponent = /** @class */ (function () { } }); data.mined_entries.forEach(function (item) { - _this.total += item.a; + _this.total = _this.total.plus(item.a); if (_this.variablesService.height_app - item.h < 10) { _this.pending.list.push(item); - _this.pending.total += item.a; + _this.pending.total = _this.pending.total.plus(item.a); } _this.originalData.push([parseInt(item.t, 10), parseFloat(_this.intToMoneyPipe.transform(item.a))]); }); @@ -5938,6 +6192,7 @@ var StakingComponent = /** @class */ (function () { p.active = false; }); period.active = true; + this.currentPeriod = period.key; var d = new Date(); var min = null; var newData = []; @@ -5946,7 +6201,7 @@ var StakingComponent = /** @class */ (function () { var time = (new Date(item[0])).setUTCMinutes(0, 0, 0); var find = newData.find(function (itemNew) { return itemNew[0] === time; }); if (find) { - find[1] += item[1]; + find[1] = new bignumber_js__WEBPACK_IMPORTED_MODULE_7__["BigNumber"](find[1]).plus(item[1]).toNumber(); } else { newData.push([time, item[1]]); @@ -5960,7 +6215,7 @@ var StakingComponent = /** @class */ (function () { var time = (new Date(item[0])).setUTCHours(0, 0, 0, 0); var find = newData.find(function (itemNew) { return itemNew[0] === time; }); if (find) { - find[1] += item[1]; + find[1] = new bignumber_js__WEBPACK_IMPORTED_MODULE_7__["BigNumber"](find[1]).plus(item[1]).toNumber(); } else { newData.push([time, item[1]]); @@ -5974,7 +6229,7 @@ var StakingComponent = /** @class */ (function () { var time = (new Date(item[0])).setUTCHours(0, 0, 0, 0); var find = newData.find(function (itemNew) { return itemNew[0] === time; }); if (find) { - find[1] += item[1]; + find[1] = new bignumber_js__WEBPACK_IMPORTED_MODULE_7__["BigNumber"](find[1]).plus(item[1]).toNumber(); } else { newData.push([time, item[1]]); @@ -5988,7 +6243,7 @@ var StakingComponent = /** @class */ (function () { var time = (new Date(item[0])).setUTCHours(0, 0, 0, 0); var find = newData.find(function (itemNew) { return itemNew[0] === time; }); if (find) { - find[1] += item[1]; + find[1] = new bignumber_js__WEBPACK_IMPORTED_MODULE_7__["BigNumber"](find[1]).plus(item[1]).toNumber(); } else { newData.push([time, item[1]]); @@ -6034,7 +6289,7 @@ var StakingComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n\r\n
\r\n
\r\n {{ wallet.name }}\r\n {{ 'BREADCRUMBS.TRANSFER_ALIAS' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
0 && (transferAddressAlias || !transferAddressValid || (transferAddressValid && !permissionSend) || notEnoughMoney)\">\r\n
\r\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.WRONG_ADDRESS' | translate }}\r\n
\r\n
\r\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.ALIAS_EXISTS' | translate }}\r\n
\r\n
\r\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
{{ \"TRANSFER_ALIAS.COST\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n" +module.exports = "
\r\n\r\n
\r\n
\r\n {{ wallet.name }}\r\n {{ 'BREADCRUMBS.TRANSFER_ALIAS' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
0 && (transferAddressAlias || !transferAddressValid || (transferAddressValid && !permissionSend) || notEnoughMoney)\">\r\n
\r\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.WRONG_ADDRESS' | translate }}\r\n
\r\n
\r\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.ALIAS_EXISTS' | translate }}\r\n
\r\n
\r\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
{{ \"TRANSFER_ALIAS.COST\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n" /***/ }), @@ -6045,7 +6300,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-transfer {\n margin: 2.4rem 0; }\n .form-transfer .alias-name {\n width: 50%; }\n .form-transfer .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-transfer .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-transfer .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHJhbnNmZXItYWxpYXMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHJhbnNmZXItYWxpYXNcXHRyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL3RyYW5zZmVyLWFsaWFzL3RyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tdHJhbnNmZXIge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */" +module.exports = ".form-transfer {\n margin: 2.4rem 0; }\n .form-transfer .alias-name {\n width: 50%; }\n .form-transfer .alias-cost {\n font-size: 1.3rem;\n margin-top: 2rem; }\n .form-transfer .wrap-buttons {\n display: flex;\n justify-content: space-between;\n margin: 2.5rem -0.7rem; }\n .form-transfer .wrap-buttons button {\n margin: 0 0.7rem;\n width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHJhbnNmZXItYWxpYXMvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHRyYW5zZmVyLWFsaWFzXFx0cmFuc2Zlci1hbGlhcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFnQixFQUFBO0VBRGxCO0lBSUksVUFBVSxFQUFBO0VBSmQ7SUFRSSxpQkFBaUI7SUFDakIsZ0JBQWdCLEVBQUE7RUFUcEI7SUFhSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLHNCQUFzQixFQUFBO0VBZjFCO01Ba0JNLGdCQUFnQjtNQUNoQixZQUFZLEVBQUEiLCJmaWxlIjoic3JjL2FwcC90cmFuc2Zlci1hbGlhcy90cmFuc2Zlci1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLXRyYW5zZmVyIHtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG5cclxuICAuYWxpYXMtbmFtZSB7XHJcbiAgICB3aWR0aDogNTAlO1xyXG4gIH1cclxuXHJcbiAgLmFsaWFzLWNvc3Qge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xyXG4gIH1cclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG4gICAgICB3aWR0aDogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */" /***/ }), @@ -6206,7 +6461,7 @@ module.exports = "
\r\n
\r\n /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.head {\n flex: 0 0 auto;\n box-sizing: content-box;\n margin: -3rem -3rem 0; }\n\n.messages-content {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n flex-grow: 1; }\n\n.messages-content .messages-list {\n display: flex;\n flex-direction: column;\n font-size: 1.3rem;\n margin: 1rem -3rem;\n padding: 0 3rem;\n overflow-y: overlay; }\n\n.messages-content .messages-list div {\n margin: 0.7rem 0; }\n\n.messages-content .messages-list div.date {\n text-align: center; }\n\n.messages-content .messages-list div.my, .messages-content .messages-list div.buddy {\n position: relative;\n padding: 1.8rem;\n max-width: 60%; }\n\n.messages-content .messages-list div.buddy {\n align-self: flex-end; }\n\n.messages-content .type-message {\n display: flex;\n flex: 0 0 auto;\n width: 100%;\n height: 4.2rem; }\n\n.messages-content .type-message .input-block {\n width: 100%; }\n\n.messages-content .type-message .input-block > textarea {\n min-height: 4.2rem; }\n\n.messages-content .type-message button {\n flex: 0 0 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHlwaW5nLW1lc3NhZ2VcXHR5cGluZy1tZXNzYWdlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsOEJBQThCO0VBQzlCLFlBQVksRUFBQTs7QUFKZDtJQU9JLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsbUJBQW1CLEVBQUE7O0FBWnZCO01BZU0sZ0JBQWdCLEVBQUE7O0FBZnRCO1FBa0JRLGtCQUFrQixFQUFBOztBQWxCMUI7UUFzQlEsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixjQUFjLEVBQUE7O0FBeEJ0QjtRQTRCUSxvQkFBb0IsRUFBQTs7QUE1QjVCO0lBa0NJLGFBQWE7SUFDYixjQUFjO0lBQ2QsV0FBVztJQUNYLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLFdBQVcsRUFBQTs7QUF4Q2pCO1FBMkNRLGtCQUFrQixFQUFBOztBQTNDMUI7TUFnRE0sZUFBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvdHlwaW5nLW1lc3NhZ2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gIC5tZXNzYWdlcy1saXN0IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW46IDFyZW0gLTNyZW07XHJcbiAgICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgICBvdmVyZmxvdy15OiBvdmVybGF5O1xyXG5cclxuICAgIGRpdiB7XHJcbiAgICAgIG1hcmdpbjogMC43cmVtIDA7XHJcblxyXG4gICAgICAmLmRhdGUge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5teSwgJi5idWRkeSB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHBhZGRpbmc6IDEuOHJlbTtcclxuICAgICAgICBtYXgtd2lkdGg6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5idWRkeSB7XHJcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50eXBlLW1lc3NhZ2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDQuMnJlbTtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgID4gdGV4dGFyZWEge1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDQuMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGZsZXg6IDAgMCAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */" +module.exports = ":host {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.head {\n flex: 0 0 auto;\n box-sizing: content-box;\n margin: -3rem -3rem 0; }\n\n.messages-content {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n flex-grow: 1; }\n\n.messages-content .messages-list {\n display: flex;\n flex-direction: column;\n font-size: 1.3rem;\n margin: 1rem -3rem;\n padding: 0 3rem;\n overflow-y: overlay; }\n\n.messages-content .messages-list div {\n margin: 0.7rem 0; }\n\n.messages-content .messages-list div.date {\n text-align: center; }\n\n.messages-content .messages-list div.my, .messages-content .messages-list div.buddy {\n position: relative;\n padding: 1.8rem;\n max-width: 60%; }\n\n.messages-content .messages-list div.buddy {\n align-self: flex-end; }\n\n.messages-content .type-message {\n display: flex;\n flex: 0 0 auto;\n width: 100%;\n height: 4.2rem; }\n\n.messages-content .type-message .input-block {\n width: 100%; }\n\n.messages-content .type-message .input-block > textarea {\n min-height: 4.2rem; }\n\n.messages-content .type-message button {\n flex: 0 0 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHR5cGluZy1tZXNzYWdlXFx0eXBpbmctbWVzc2FnZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdiO0VBQ0UsY0FBYztFQUNkLHVCQUF1QjtFQUN2QixxQkFBcUIsRUFBQTs7QUFHdkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLDhCQUE4QjtFQUM5QixZQUFZLEVBQUE7O0FBSmQ7SUFPSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsZUFBZTtJQUNmLG1CQUFtQixFQUFBOztBQVp2QjtNQWVNLGdCQUFnQixFQUFBOztBQWZ0QjtRQWtCUSxrQkFBa0IsRUFBQTs7QUFsQjFCO1FBc0JRLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsY0FBYyxFQUFBOztBQXhCdEI7UUE0QlEsb0JBQW9CLEVBQUE7O0FBNUI1QjtJQWtDSSxhQUFhO0lBQ2IsY0FBYztJQUNkLFdBQVc7SUFDWCxjQUFjLEVBQUE7O0FBckNsQjtNQXdDTSxXQUFXLEVBQUE7O0FBeENqQjtRQTJDUSxrQkFBa0IsRUFBQTs7QUEzQzFCO01BZ0RNLGVBQWUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3R5cGluZy1tZXNzYWdlL3R5cGluZy1tZXNzYWdlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmhlYWQge1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xyXG4gIG1hcmdpbjogLTNyZW0gLTNyZW0gMDtcclxufVxyXG5cclxuLm1lc3NhZ2VzLWNvbnRlbnQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZmxleC1ncm93OiAxO1xyXG5cclxuICAubWVzc2FnZXMtbGlzdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbWFyZ2luOiAxcmVtIC0zcmVtO1xyXG4gICAgcGFkZGluZzogMCAzcmVtO1xyXG4gICAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuXHJcbiAgICBkaXYge1xyXG4gICAgICBtYXJnaW46IDAuN3JlbSAwO1xyXG5cclxuICAgICAgJi5kYXRlIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYubXksICYuYnVkZHkge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBwYWRkaW5nOiAxLjhyZW07XHJcbiAgICAgICAgbWF4LXdpZHRoOiA2MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuYnVkZHkge1xyXG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudHlwZS1tZXNzYWdlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICAgLmlucHV0LWJsb2NrIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICA+IHRleHRhcmVhIHtcclxuICAgICAgICBtaW4taGVpZ2h0OiA0LjJyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBmbGV4OiAwIDAgMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iXX0= */" /***/ }), @@ -6262,7 +6517,7 @@ var TypingMessageComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n\r\n
\r\n
\r\n {{variablesService.currentWallet.name}}\r\n {{ 'BREADCRUMBS.WALLET_DETAILS' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_DUPLICATE' | translate }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
{{ 'WALLET_DETAILS.SEED_PHRASE_HINT' | translate }}
\r\n
\r\n \r\n
{{(index + 1) + '. ' + word}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n" +module.exports = "
\r\n\r\n
\r\n
\r\n {{variablesService.currentWallet.name}}\r\n {{ 'BREADCRUMBS.WALLET_DETAILS' | translate }}\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_REQUIRED' | translate }}\r\n
\r\n
\r\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_DUPLICATE' | translate }}\r\n
\r\n
\r\n
= variablesService.maxWalletNameLength\">\r\n {{ 'WALLET_DETAILS.FORM_ERRORS.MAX_LENGTH' | translate }}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
{{ 'WALLET_DETAILS.SEED_PHRASE_HINT' | translate }}
\r\n
\r\n \r\n
{{(index + 1) + '. ' + word}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n" /***/ }), @@ -6273,7 +6528,7 @@ module.exports = "
\r\n\r\n
\r\n < /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ".form-details {\n margin-top: 1.8rem; }\n .form-details .input-block:first-child {\n width: 50%; }\n .form-details .seed-phrase {\n display: flex;\n font-size: 1.4rem;\n line-height: 1.5rem;\n padding: 1.4rem;\n width: 100%;\n height: 8.8rem; }\n .form-details .seed-phrase .seed-phrase-hint {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n width: 100%;\n height: 100%; }\n .form-details .seed-phrase .seed-phrase-content {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n width: 100%;\n height: 100%; }\n .form-details .wallet-buttons {\n display: flex;\n align-items: center;\n justify-content: space-between; }\n .form-details .wallet-buttons button {\n margin: 2.9rem 0;\n width: 100%;\n max-width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0LWRldGFpbHMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcd2FsbGV0LWRldGFpbHNcXHdhbGxldC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7RUFEcEI7SUFNTSxVQUFVLEVBQUE7RUFOaEI7SUFXSSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsV0FBVztJQUNYLGNBQWMsRUFBQTtFQWhCbEI7TUFtQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUF4QmxCO01BNEJNLGFBQWE7TUFDYixzQkFBc0I7TUFDdEIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUFoQ2xCO0lBcUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCLEVBQUE7RUF2Q2xDO01BMENNLGdCQUFnQjtNQUNoQixXQUFXO01BQ1gsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC93YWxsZXQtZGV0YWlscy93YWxsZXQtZGV0YWlscy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWRldGFpbHMge1xyXG4gIG1hcmdpbi10b3A6IDEuOHJlbTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWVkLXBocmFzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMS40cmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDguOHJlbTtcclxuXHJcbiAgICAuc2VlZC1waHJhc2UtaGludCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAud2FsbGV0LWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAyLjlyZW0gMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0= */" +module.exports = ".form-details {\n margin-top: 1.8rem; }\n .form-details .input-block:first-child {\n width: 50%; }\n .form-details .seed-phrase {\n display: flex;\n font-size: 1.4rem;\n line-height: 1.5rem;\n padding: 1.4rem;\n width: 100%;\n height: 8.8rem; }\n .form-details .seed-phrase .seed-phrase-hint {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n width: 100%;\n height: 100%; }\n .form-details .seed-phrase .seed-phrase-content {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n width: 100%;\n height: 100%; }\n .form-details .wallet-buttons {\n display: flex;\n align-items: center;\n justify-content: space-between; }\n .form-details .wallet-buttons button {\n margin: 2.9rem 0;\n width: 100%;\n max-width: 15rem; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0LWRldGFpbHMvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHdhbGxldC1kZXRhaWxzXFx3YWxsZXQtZGV0YWlscy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQixFQUFBO0VBRHBCO0lBTU0sVUFBVSxFQUFBO0VBTmhCO0lBV0ksYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLFdBQVc7SUFDWCxjQUFjLEVBQUE7RUFoQmxCO01BbUJNLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsdUJBQXVCO01BQ3ZCLGVBQWU7TUFDZixXQUFXO01BQ1gsWUFBWSxFQUFBO0VBeEJsQjtNQTRCTSxhQUFhO01BQ2Isc0JBQXNCO01BQ3RCLGVBQWU7TUFDZixXQUFXO01BQ1gsWUFBWSxFQUFBO0VBaENsQjtJQXFDSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLDhCQUE4QixFQUFBO0VBdkNsQztNQTBDTSxnQkFBZ0I7TUFDaEIsV0FBVztNQUNYLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvd2FsbGV0LWRldGFpbHMvd2FsbGV0LWRldGFpbHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1kZXRhaWxzIHtcclxuICBtYXJnaW4tdG9wOiAxLjhyZW07XHJcblxyXG4gIC5pbnB1dC1ibG9jayB7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc2VlZC1waHJhc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcclxuICAgIHBhZGRpbmc6IDEuNHJlbTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiA4LjhyZW07XHJcblxyXG4gICAgLnNlZWQtcGhyYXNlLWhpbnQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWVkLXBocmFzZS1jb250ZW50IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLndhbGxldC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMi45cmVtIDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19 */" /***/ }), @@ -6411,7 +6666,7 @@ var WalletDetailsComponent = /** @class */ (function () { /*! no static exports found */ /***/ (function(module, exports) { -module.exports = "
\r\n
\r\n

{{variablesService.currentWallet.name}}

\r\n \r\n \r\n
\r\n {{variablesService.currentWallet.alias['name']}}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{variablesService.currentWallet.address}}\r\n \r\n
\r\n
\r\n {{variablesService.currentWallet.balance | intToMoney : '3'}} {{variablesService.defaultCurrency}}\r\n $ {{variablesService.currentWallet.getMoneyEquivalent(variablesService.moneyEquivalent) | intToMoney | number : '1.2-2'}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{ tab.title | translate }}\r\n {{variablesService.currentWallet.new_contracts}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n" +module.exports = "
\r\n
\r\n

{{variablesService.currentWallet.name}}

\r\n \r\n \r\n
\r\n {{variablesService.currentWallet.alias['name']}}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{variablesService.currentWallet.address}}\r\n \r\n
\r\n
\r\n {{variablesService.currentWallet.balance | intToMoney : '3'}} {{variablesService.defaultCurrency}}\r\n $ {{variablesService.currentWallet.getMoneyEquivalent(variablesService.moneyEquivalent) | intToMoney | number : '1.2-2'}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {{ tab.title | translate }}\r\n {{variablesService.currentWallet.new_contracts}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n" /***/ }), @@ -6422,7 +6677,7 @@ module.exports = "
\r\n
\r\n

{{variablesServic /*! no static exports found */ /***/ (function(module, exports) { -module.exports = ":host {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 0 3rem 3rem;\n min-width: 95rem;\n width: 100%;\n height: 100%; }\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex: 0 0 auto;\n height: 8rem; }\n\n.header > div {\n display: flex;\n align-items: center; }\n\n.header > div :not(:last-child) {\n margin-right: 3.2rem; }\n\n.header h3 {\n font-size: 1.7rem;\n font-weight: 600; }\n\n.header button {\n display: flex;\n align-items: center;\n background: transparent;\n border: none;\n cursor: pointer;\n font-weight: 400;\n outline: none;\n padding: 0; }\n\n.header button .icon {\n margin-right: 1.2rem;\n width: 1.7rem;\n height: 1.7rem; }\n\n.header button .icon.account {\n -webkit-mask: url('account.svg') no-repeat center;\n mask: url('account.svg') no-repeat center; }\n\n.header button .icon.details {\n -webkit-mask: url('details.svg') no-repeat center;\n mask: url('details.svg') no-repeat center; }\n\n.header button .icon.lock {\n -webkit-mask: url('lock.svg') no-repeat center;\n mask: url('lock.svg') no-repeat center; }\n\n.header .alias {\n display: flex;\n align-items: center;\n font-size: 1.3rem; }\n\n.header .alias .icon {\n cursor: pointer;\n margin-right: 1.2rem;\n width: 1.7rem;\n height: 1.7rem; }\n\n.header .alias .icon.edit {\n -webkit-mask: url('details.svg') no-repeat center;\n mask: url('details.svg') no-repeat center; }\n\n.header .alias .icon.transfer {\n -webkit-mask: url('send.svg') no-repeat center;\n mask: url('send.svg') no-repeat center; }\n\n.address {\n display: flex;\n align-items: center;\n flex: 0 0 auto;\n font-size: 1.4rem;\n line-height: 1.7rem; }\n\n.address .icon {\n cursor: pointer;\n margin-left: 1.2rem;\n width: 1.7rem;\n height: 1.7rem; }\n\n.address .icon.copy {\n -webkit-mask: url('copy.svg') no-repeat center;\n mask: url('copy.svg') no-repeat center; }\n\n.address .icon.copy:hover {\n opacity: 0.75; }\n\n.address .icon.copied {\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\n mask: url('complete-testwallet.svg') no-repeat center; }\n\n.balance {\n display: flex;\n align-items: flex-end;\n justify-content: flex-start;\n flex: 0 0 auto;\n margin: 2.6rem 0; }\n\n.balance :first-child {\n font-size: 3.3rem;\n font-weight: 600;\n line-height: 2.4rem;\n margin-right: 3.5rem; }\n\n.balance :last-child {\n font-size: 1.8rem;\n font-weight: 600;\n line-height: 1.3rem; }\n\n.tabs {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto; }\n\n.tabs .tabs-header {\n display: flex;\n justify-content: space-between;\n flex: 0 0 auto; }\n\n.tabs .tabs-header .tab {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 0 auto;\n cursor: pointer;\n padding: 0 1rem;\n height: 5rem; }\n\n.tabs .tabs-header .tab .icon {\n margin-right: 1.3rem;\n width: 1.7rem;\n height: 1.7rem; }\n\n.tabs .tabs-header .tab .icon.send {\n -webkit-mask: url('send.svg') no-repeat center;\n mask: url('send.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .icon.receive {\n -webkit-mask: url('receive.svg') no-repeat center;\n mask: url('receive.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .icon.history {\n -webkit-mask: url('history.svg') no-repeat center;\n mask: url('history.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .icon.contracts {\n -webkit-mask: url('contracts.svg') no-repeat center;\n mask: url('contracts.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .icon.messages {\n -webkit-mask: url('message.svg') no-repeat center;\n mask: url('message.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .icon.staking {\n -webkit-mask: url('staking.svg') no-repeat center;\n mask: url('staking.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 1rem;\n font-size: 1rem;\n font-weight: 600;\n margin-left: 1.3rem;\n padding: 0 0.5rem;\n min-width: 1.6rem;\n height: 1.6rem; }\n\n.tabs .tabs-header .tab.disabled {\n cursor: not-allowed; }\n\n.tabs .tabs-header .tab:not(:last-child) {\n margin-right: 0.3rem; }\n\n.tabs .tabs-content {\n display: flex;\n padding: 3rem;\n flex: 1 1 auto;\n overflow-x: hidden;\n overflow-y: overlay; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0L0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHdhbGxldFxcd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsb0JBQW9CO0VBQ3BCLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsWUFBWSxFQUFBOztBQUdkO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsY0FBYztFQUNkLFlBQVksRUFBQTs7QUFMZDtJQVFJLGFBQWE7SUFDYixtQkFBbUIsRUFBQTs7QUFUdkI7TUFZTSxvQkFBb0IsRUFBQTs7QUFaMUI7SUFpQkksaUJBQWlCO0lBQ2pCLGdCQUFnQixFQUFBOztBQWxCcEI7SUFzQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLFVBQVUsRUFBQTs7QUE3QmQ7TUFnQ00sb0JBQW9CO01BQ3BCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBbENwQjtRQXFDUSxpREFBMEQ7Z0JBQTFELHlDQUEwRCxFQUFBOztBQXJDbEU7UUF5Q1EsaURBQTBEO2dCQUExRCx5Q0FBMEQsRUFBQTs7QUF6Q2xFO1FBNkNRLDhDQUF1RDtnQkFBdkQsc0NBQXVELEVBQUE7O0FBN0MvRDtJQW1ESSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLGlCQUFpQixFQUFBOztBQXJEckI7TUF3RE0sZUFBZTtNQUNmLG9CQUFvQjtNQUNwQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQTNEcEI7UUE4RFEsaURBQTBEO2dCQUExRCx5Q0FBMEQsRUFBQTs7QUE5RGxFO1FBa0VRLDhDQUF1RDtnQkFBdkQsc0NBQXVELEVBQUE7O0FBTS9EO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsaUJBQWlCO0VBQ2pCLG1CQUFtQixFQUFBOztBQUxyQjtJQVFJLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLGNBQWMsRUFBQTs7QUFYbEI7TUFjTSw4Q0FBdUQ7Y0FBdkQsc0NBQXVELEVBQUE7O0FBZDdEO1FBaUJRLGFBQWEsRUFBQTs7QUFqQnJCO01Bc0JNLDZEQUFzRTtjQUF0RSxxREFBc0UsRUFBQTs7QUFLNUU7RUFDRSxhQUFhO0VBQ2IscUJBQXFCO0VBQ3JCLDJCQUEyQjtFQUMzQixjQUFjO0VBQ2QsZ0JBQWdCLEVBQUE7O0FBTGxCO0lBUUksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsb0JBQW9CLEVBQUE7O0FBWHhCO0lBZUksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixtQkFBbUIsRUFBQTs7QUFJdkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLGNBQWMsRUFBQTs7QUFIaEI7SUFNSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLGNBQWMsRUFBQTs7QUFSbEI7TUFXTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixjQUFjO01BQ2QsZUFBZTtNQUNmLGVBQWU7TUFDZixZQUFZLEVBQUE7O0FBakJsQjtRQW9CUSxvQkFBb0I7UUFDcEIsYUFBYTtRQUNiLGNBQWMsRUFBQTs7QUF0QnRCO1VBeUJVLDhDQUF1RDtrQkFBdkQsc0NBQXVELEVBQUE7O0FBekJqRTtVQTZCVSxpREFBMEQ7a0JBQTFELHlDQUEwRCxFQUFBOztBQTdCcEU7VUFpQ1UsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUFqQ3BFO1VBcUNVLG1EQUE0RDtrQkFBNUQsMkNBQTRELEVBQUE7O0FBckN0RTtVQXlDVSxpREFBMEQ7a0JBQTFELHlDQUEwRCxFQUFBOztBQXpDcEU7VUE2Q1UsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUE3Q3BFO1FBa0RRLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGNBQWMsRUFBQTs7QUEzRHRCO1FBK0RRLG1CQUFtQixFQUFBOztBQS9EM0I7UUFtRVEsb0JBQW9CLEVBQUE7O0FBbkU1QjtJQXlFSSxhQUFhO0lBQ2IsYUFBYTtJQUNiLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsbUJBQW1CLEVBQUEiLCJmaWxlIjoic3JjL2FwcC93YWxsZXQvd2FsbGV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgcGFkZGluZzogMCAzcmVtIDNyZW07XHJcbiAgbWluLXdpZHRoOiA5NXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbi5oZWFkZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgaGVpZ2h0OiA4cmVtO1xyXG5cclxuICA+IGRpdiB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICA6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMy4ycmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaDMge1xyXG4gICAgZm9udC1zaXplOiAxLjdyZW07XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDEuMnJlbTtcclxuICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAmLmFjY291bnQge1xyXG4gICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvYWNjb3VudC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZGV0YWlscyB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9kZXRhaWxzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5sb2NrIHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2xvY2suc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWxpYXMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5lZGl0IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2RldGFpbHMuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnRyYW5zZmVyIHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYWRkcmVzcyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gIC5pY29uIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XHJcbiAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgJi5jb3B5IHtcclxuICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9jb3B5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmNvcGllZCB7XHJcbiAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29tcGxldGUtdGVzdHdhbGxldC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYmFsYW5jZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIG1hcmdpbjogMi42cmVtIDA7XHJcblxyXG4gIDpmaXJzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDMuM3JlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAzLjVyZW07XHJcbiAgfVxyXG5cclxuICA6bGFzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLnRhYnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuXHJcbiAgLnRhYnMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgICAudGFiIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgICAgaGVpZ2h0OiA1cmVtO1xyXG5cclxuICAgICAgLmljb24ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMS4zcmVtO1xyXG4gICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAgICYuc2VuZCB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5yZWNlaXZlIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvcmVjZWl2ZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmhpc3Rvcnkge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9oaXN0b3J5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuY29udHJhY3RzIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29udHJhY3RzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubWVzc2FnZXMge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9tZXNzYWdlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuc3Rha2luZyB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3N0YWtpbmcuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmluZGljYXRvciB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuM3JlbTtcclxuICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcclxuICAgICAgICBtaW4td2lkdGg6IDEuNnJlbTtcclxuICAgICAgICBoZWlnaHQ6IDEuNnJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuM3JlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnRhYnMtY29udGVudCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgcGFkZGluZzogM3JlbTtcclxuICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuICB9XHJcbn1cclxuIl19 */" +module.exports = ":host {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 0 3rem 3rem;\n min-width: 95rem;\n width: 100%;\n height: 100%; }\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex: 0 0 auto;\n height: 8rem; }\n\n.header > div {\n display: flex;\n align-items: center; }\n\n.header > div :not(:last-child) {\n margin-right: 3.2rem; }\n\n.header h3 {\n font-size: 1.7rem;\n font-weight: 600;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n max-width: 50rem;\n line-height: 2.7rem; }\n\n.header button {\n display: flex;\n align-items: center;\n background: transparent;\n border: none;\n cursor: pointer;\n font-weight: 400;\n outline: none;\n padding: 0; }\n\n.header button .icon {\n margin-right: 1.2rem;\n width: 1.7rem;\n height: 1.7rem; }\n\n.header button .icon.account {\n -webkit-mask: url('account.svg') no-repeat center;\n mask: url('account.svg') no-repeat center; }\n\n.header button .icon.details {\n -webkit-mask: url('details.svg') no-repeat center;\n mask: url('details.svg') no-repeat center; }\n\n.header button .icon.lock {\n -webkit-mask: url('lock.svg') no-repeat center;\n mask: url('lock.svg') no-repeat center; }\n\n.header .alias {\n display: flex;\n align-items: center;\n font-size: 1.3rem; }\n\n.header .alias .icon {\n cursor: pointer;\n margin-right: 1.2rem;\n width: 1.7rem;\n height: 1.7rem; }\n\n.header .alias .icon.edit {\n -webkit-mask: url('details.svg') no-repeat center;\n mask: url('details.svg') no-repeat center; }\n\n.header .alias .icon.transfer {\n -webkit-mask: url('send.svg') no-repeat center;\n mask: url('send.svg') no-repeat center; }\n\n.address {\n display: flex;\n align-items: center;\n flex: 0 0 auto;\n font-size: 1.4rem;\n line-height: 1.7rem; }\n\n.address .icon {\n cursor: pointer;\n margin-left: 1.2rem;\n width: 1.7rem;\n height: 1.7rem; }\n\n.address .icon.copy {\n -webkit-mask: url('copy.svg') no-repeat center;\n mask: url('copy.svg') no-repeat center; }\n\n.address .icon.copy:hover {\n opacity: 0.75; }\n\n.address .icon.copied {\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\n mask: url('complete-testwallet.svg') no-repeat center; }\n\n.balance {\n display: flex;\n align-items: flex-end;\n justify-content: flex-start;\n flex: 0 0 auto;\n margin: 2.6rem 0; }\n\n.balance :first-child {\n font-size: 3.3rem;\n font-weight: 600;\n line-height: 2.4rem;\n margin-right: 3.5rem; }\n\n.balance :last-child {\n font-size: 1.8rem;\n font-weight: 600;\n line-height: 1.3rem; }\n\n.tabs {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto; }\n\n.tabs .tabs-header {\n display: flex;\n justify-content: space-between;\n flex: 0 0 auto; }\n\n.tabs .tabs-header .tab {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1 0 auto;\n cursor: pointer;\n padding: 0 1rem;\n height: 5rem; }\n\n.tabs .tabs-header .tab .icon {\n margin-right: 1.3rem;\n width: 1.7rem;\n height: 1.7rem; }\n\n.tabs .tabs-header .tab .icon.send {\n -webkit-mask: url('send.svg') no-repeat center;\n mask: url('send.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .icon.receive {\n -webkit-mask: url('receive.svg') no-repeat center;\n mask: url('receive.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .icon.history {\n -webkit-mask: url('history.svg') no-repeat center;\n mask: url('history.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .icon.contracts {\n -webkit-mask: url('contracts.svg') no-repeat center;\n mask: url('contracts.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .icon.messages {\n -webkit-mask: url('message.svg') no-repeat center;\n mask: url('message.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .icon.staking {\n -webkit-mask: url('staking.svg') no-repeat center;\n mask: url('staking.svg') no-repeat center; }\n\n.tabs .tabs-header .tab .indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 1rem;\n font-size: 1rem;\n font-weight: 600;\n margin-left: 1.3rem;\n padding: 0 0.5rem;\n min-width: 1.6rem;\n height: 1.6rem; }\n\n.tabs .tabs-header .tab.disabled {\n cursor: not-allowed; }\n\n.tabs .tabs-header .tab:not(:last-child) {\n margin-right: 0.3rem; }\n\n.tabs .tabs-content {\n display: flex;\n padding: 3rem;\n flex: 1 1 auto;\n overflow-x: hidden;\n overflow-y: overlay; }\n\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0L0Q6XFx6YW5vX3phbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFx3YWxsZXRcXHdhbGxldC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQjtFQUNsQixhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLG9CQUFvQjtFQUNwQixnQkFBZ0I7RUFDaEIsV0FBVztFQUNYLFlBQVksRUFBQTs7QUFHZDtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsOEJBQThCO0VBQzlCLGNBQWM7RUFDZCxZQUFZLEVBQUE7O0FBTGQ7SUFRSSxhQUFhO0lBQ2IsbUJBQW1CLEVBQUE7O0FBVHZCO01BWU0sb0JBQW9CLEVBQUE7O0FBWjFCO0lBaUJJLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLG1CQUFtQixFQUFBOztBQXZCdkI7SUEyQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLFVBQVUsRUFBQTs7QUFsQ2Q7TUFxQ00sb0JBQW9CO01BQ3BCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBdkNwQjtRQTBDUSxpREFBMEQ7Z0JBQTFELHlDQUEwRCxFQUFBOztBQTFDbEU7UUE4Q1EsaURBQTBEO2dCQUExRCx5Q0FBMEQsRUFBQTs7QUE5Q2xFO1FBa0RRLDhDQUF1RDtnQkFBdkQsc0NBQXVELEVBQUE7O0FBbEQvRDtJQXdESSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLGlCQUFpQixFQUFBOztBQTFEckI7TUE2RE0sZUFBZTtNQUNmLG9CQUFvQjtNQUNwQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQWhFcEI7UUFtRVEsaURBQTBEO2dCQUExRCx5Q0FBMEQsRUFBQTs7QUFuRWxFO1FBdUVRLDhDQUF1RDtnQkFBdkQsc0NBQXVELEVBQUE7O0FBTS9EO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsaUJBQWlCO0VBQ2pCLG1CQUFtQixFQUFBOztBQUxyQjtJQVFJLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLGNBQWMsRUFBQTs7QUFYbEI7TUFjTSw4Q0FBdUQ7Y0FBdkQsc0NBQXVELEVBQUE7O0FBZDdEO1FBaUJRLGFBQWEsRUFBQTs7QUFqQnJCO01Bc0JNLDZEQUFzRTtjQUF0RSxxREFBc0UsRUFBQTs7QUFLNUU7RUFDRSxhQUFhO0VBQ2IscUJBQXFCO0VBQ3JCLDJCQUEyQjtFQUMzQixjQUFjO0VBQ2QsZ0JBQWdCLEVBQUE7O0FBTGxCO0lBUUksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsb0JBQW9CLEVBQUE7O0FBWHhCO0lBZUksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixtQkFBbUIsRUFBQTs7QUFJdkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLGNBQWMsRUFBQTs7QUFIaEI7SUFNSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLGNBQWMsRUFBQTs7QUFSbEI7TUFXTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixjQUFjO01BQ2QsZUFBZTtNQUNmLGVBQWU7TUFDZixZQUFZLEVBQUE7O0FBakJsQjtRQW9CUSxvQkFBb0I7UUFDcEIsYUFBYTtRQUNiLGNBQWMsRUFBQTs7QUF0QnRCO1VBeUJVLDhDQUF1RDtrQkFBdkQsc0NBQXVELEVBQUE7O0FBekJqRTtVQTZCVSxpREFBMEQ7a0JBQTFELHlDQUEwRCxFQUFBOztBQTdCcEU7VUFpQ1UsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUFqQ3BFO1VBcUNVLG1EQUE0RDtrQkFBNUQsMkNBQTRELEVBQUE7O0FBckN0RTtVQXlDVSxpREFBMEQ7a0JBQTFELHlDQUEwRCxFQUFBOztBQXpDcEU7VUE2Q1UsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUE3Q3BFO1FBa0RRLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGNBQWMsRUFBQTs7QUEzRHRCO1FBK0RRLG1CQUFtQixFQUFBOztBQS9EM0I7UUFtRVEsb0JBQW9CLEVBQUE7O0FBbkU1QjtJQXlFSSxhQUFhO0lBQ2IsYUFBYTtJQUNiLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsbUJBQW1CLEVBQUEiLCJmaWxlIjoic3JjL2FwcC93YWxsZXQvd2FsbGV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgcGFkZGluZzogMCAzcmVtIDNyZW07XHJcbiAgbWluLXdpZHRoOiA5NXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbi5oZWFkZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgaGVpZ2h0OiA4cmVtO1xyXG5cclxuICA+IGRpdiB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICA6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMy4ycmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaDMge1xyXG4gICAgZm9udC1zaXplOiAxLjdyZW07XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG1heC13aWR0aDogNTByZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDEuMnJlbTtcclxuICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAmLmFjY291bnQge1xyXG4gICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvYWNjb3VudC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZGV0YWlscyB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9kZXRhaWxzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5sb2NrIHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2xvY2suc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWxpYXMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5lZGl0IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2RldGFpbHMuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnRyYW5zZmVyIHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYWRkcmVzcyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gIC5pY29uIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XHJcbiAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgJi5jb3B5IHtcclxuICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9jb3B5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmNvcGllZCB7XHJcbiAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29tcGxldGUtdGVzdHdhbGxldC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYmFsYW5jZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIG1hcmdpbjogMi42cmVtIDA7XHJcblxyXG4gIDpmaXJzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDMuM3JlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAzLjVyZW07XHJcbiAgfVxyXG5cclxuICA6bGFzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLnRhYnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuXHJcbiAgLnRhYnMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgICAudGFiIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgICAgaGVpZ2h0OiA1cmVtO1xyXG5cclxuICAgICAgLmljb24ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMS4zcmVtO1xyXG4gICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAgICYuc2VuZCB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5yZWNlaXZlIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvcmVjZWl2ZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmhpc3Rvcnkge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9oaXN0b3J5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuY29udHJhY3RzIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29udHJhY3RzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubWVzc2FnZXMge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9tZXNzYWdlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuc3Rha2luZyB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3N0YWtpbmcuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmluZGljYXRvciB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuM3JlbTtcclxuICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcclxuICAgICAgICBtaW4td2lkdGg6IDEuNnJlbTtcclxuICAgICAgICBoZWlnaHQ6IDEuNnJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuM3JlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnRhYnMtY29udGVudCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgcGFkZGluZzogM3JlbTtcclxuICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuICB9XHJcbn1cclxuIl19 */" /***/ }), @@ -6514,16 +6769,22 @@ var WalletComponent = /** @class */ (function () { } WalletComponent.prototype.ngOnInit = function () { var _this = this; - this.subRouting = this.route.params.subscribe(function (params) { + this.subRouting1 = this.route.params.subscribe(function (params) { _this.walletID = +params['id']; _this.variablesService.setCurrentWallet(_this.walletID); - for (var i = 0; i < _this.tabs.length; i++) { - _this.tabs[i].active = (_this.tabs[i].link === '/' + _this.route.snapshot.firstChild.url[0].path); - } _this.scrolledContent.nativeElement.scrollTop = 0; clearTimeout(_this.copyAnimationTimeout); _this.copyAnimation = false; }); + this.subRouting2 = this.router.events.subscribe(function (val) { + if (val instanceof _angular_router__WEBPACK_IMPORTED_MODULE_1__["RoutesRecognized"]) { + if (val.state.root.firstChild && val.state.root.firstChild.firstChild) { + for (var i = 0; i < _this.tabs.length; i++) { + _this.tabs[i].active = (_this.tabs[i].link === '/' + val.state.root.firstChild.firstChild.url[0].path); + } + } + } + }); if (this.variablesService.currentWallet.alias.hasOwnProperty('name')) { this.variablesService.currentWallet.wakeAlias = false; } @@ -6579,7 +6840,8 @@ var WalletComponent = /** @class */ (function () { this.backend.openUrlInBrowser(link); }; WalletComponent.prototype.ngOnDestroy = function () { - this.subRouting.unsubscribe(); + this.subRouting1.unsubscribe(); + this.subRouting2.unsubscribe(); this.aliasSubscription.unsubscribe(); clearTimeout(this.copyAnimationTimeout); }; @@ -6669,7 +6931,7 @@ Object(_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_1__["platformB /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(/*! D:\Projects\Zano\src\gui\qt-daemon\html_source\src\main.ts */"./src/main.ts"); +module.exports = __webpack_require__(/*! D:\zano_zano\src\gui\qt-daemon\html_source\src\main.ts */"./src/main.ts"); /***/ }) diff --git a/src/gui/qt-daemon/html/main.js.map b/src/gui/qt-daemon/html/main.js.map index 85aa3b9b..760e7478 100644 --- a/src/gui/qt-daemon/html/main.js.map +++ b/src/gui/qt-daemon/html/main.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/_helpers/directives/input-validate/input-validate.directive.ts","webpack:///./src/app/_helpers/directives/modal-container/modal-container.component.html","webpack:///./src/app/_helpers/directives/modal-container/modal-container.component.scss","webpack:///./src/app/_helpers/directives/modal-container/modal-container.component.ts","webpack:///./src/app/_helpers/directives/staking-switch/staking-switch.component.html","webpack:///./src/app/_helpers/directives/staking-switch/staking-switch.component.scss","webpack:///./src/app/_helpers/directives/staking-switch/staking-switch.component.ts","webpack:///./src/app/_helpers/directives/tooltip.directive.ts","webpack:///./src/app/_helpers/directives/transaction-details/transaction-details.component.html","webpack:///./src/app/_helpers/directives/transaction-details/transaction-details.component.scss","webpack:///./src/app/_helpers/directives/transaction-details/transaction-details.component.ts","webpack:///./src/app/_helpers/models/transaction.model.ts","webpack:///./src/app/_helpers/models/wallet.model.ts","webpack:///./src/app/_helpers/pipes/contract-status-messages.pipe.ts","webpack:///./src/app/_helpers/pipes/contract-time-left.pipe.ts","webpack:///./src/app/_helpers/pipes/history-type-messages.pipe.ts","webpack:///./src/app/_helpers/pipes/int-to-money.pipe.ts","webpack:///./src/app/_helpers/pipes/money-to-int.pipe.ts","webpack:///./src/app/_helpers/services/backend.service.ts","webpack:///./src/app/_helpers/services/modal.service.ts","webpack:///./src/app/_helpers/services/variables.service.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/assign-alias/assign-alias.component.html","webpack:///./src/app/assign-alias/assign-alias.component.scss","webpack:///./src/app/assign-alias/assign-alias.component.ts","webpack:///./src/app/contracts/contracts.component.html","webpack:///./src/app/contracts/contracts.component.scss","webpack:///./src/app/contracts/contracts.component.ts","webpack:///./src/app/create-wallet/create-wallet.component.html","webpack:///./src/app/create-wallet/create-wallet.component.scss","webpack:///./src/app/create-wallet/create-wallet.component.ts","webpack:///./src/app/edit-alias/edit-alias.component.html","webpack:///./src/app/edit-alias/edit-alias.component.scss","webpack:///./src/app/edit-alias/edit-alias.component.ts","webpack:///./src/app/history/history.component.html","webpack:///./src/app/history/history.component.scss","webpack:///./src/app/history/history.component.ts","webpack:///./src/app/login/login.component.html","webpack:///./src/app/login/login.component.scss","webpack:///./src/app/login/login.component.ts","webpack:///./src/app/main/main.component.html","webpack:///./src/app/main/main.component.scss","webpack:///./src/app/main/main.component.ts","webpack:///./src/app/messages/messages.component.html","webpack:///./src/app/messages/messages.component.scss","webpack:///./src/app/messages/messages.component.ts","webpack:///./src/app/open-wallet/open-wallet.component.html","webpack:///./src/app/open-wallet/open-wallet.component.scss","webpack:///./src/app/open-wallet/open-wallet.component.ts","webpack:///./src/app/purchase/purchase.component.html","webpack:///./src/app/purchase/purchase.component.scss","webpack:///./src/app/purchase/purchase.component.ts","webpack:///./src/app/receive/receive.component.html","webpack:///./src/app/receive/receive.component.scss","webpack:///./src/app/receive/receive.component.ts","webpack:///./src/app/restore-wallet/restore-wallet.component.html","webpack:///./src/app/restore-wallet/restore-wallet.component.scss","webpack:///./src/app/restore-wallet/restore-wallet.component.ts","webpack:///./src/app/seed-phrase/seed-phrase.component.html","webpack:///./src/app/seed-phrase/seed-phrase.component.scss","webpack:///./src/app/seed-phrase/seed-phrase.component.ts","webpack:///./src/app/send/send.component.html","webpack:///./src/app/send/send.component.scss","webpack:///./src/app/send/send.component.ts","webpack:///./src/app/settings/settings.component.html","webpack:///./src/app/settings/settings.component.scss","webpack:///./src/app/settings/settings.component.ts","webpack:///./src/app/sidebar/sidebar.component.html","webpack:///./src/app/sidebar/sidebar.component.scss","webpack:///./src/app/sidebar/sidebar.component.ts","webpack:///./src/app/staking/staking.component.html","webpack:///./src/app/staking/staking.component.scss","webpack:///./src/app/staking/staking.component.ts","webpack:///./src/app/transfer-alias/transfer-alias.component.html","webpack:///./src/app/transfer-alias/transfer-alias.component.scss","webpack:///./src/app/transfer-alias/transfer-alias.component.ts","webpack:///./src/app/typing-message/typing-message.component.html","webpack:///./src/app/typing-message/typing-message.component.scss","webpack:///./src/app/typing-message/typing-message.component.ts","webpack:///./src/app/wallet-details/wallet-details.component.html","webpack:///./src/app/wallet-details/wallet-details.component.scss","webpack:///./src/app/wallet-details/wallet-details.component.ts","webpack:///./src/app/wallet/wallet.component.html","webpack:///./src/app/wallet/wallet.component.scss","webpack:///./src/app/wallet/wallet.component.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import {Directive, ElementRef, Input, HostListener} from '@angular/core';\r\nimport {VariablesService} from '../../services/variables.service';\r\n\r\n@Directive({\r\n selector: '[appInputValidate]'\r\n})\r\nexport class InputValidateDirective {\r\n\r\n private type: string;\r\n\r\n constructor(private el: ElementRef, private variablesService: VariablesService) {\r\n }\r\n\r\n @Input('appInputValidate')\r\n public set defineInputType(type: string) {\r\n this.type = type;\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n handleInput(event: Event) {\r\n if ( this.type === 'money' ) {\r\n this.moneyValidation(event);\r\n } else if ( this.type === 'integer' ) {\r\n this.integerValidation(event);\r\n }\r\n }\r\n\r\n private moneyValidation(event: Event) {\r\n let currentValue = (event.target).value;\r\n const originalValue = currentValue;\r\n const OnlyD = /[^\\d\\.]/g;\r\n const _has_error = currentValue.match(OnlyD);\r\n if (_has_error && _has_error.length) {\r\n currentValue = currentValue.replace(',', '.').replace(OnlyD, '');\r\n }\r\n const _double_separator = currentValue.match(/\\./g);\r\n if (_double_separator && _double_separator.length > 1) {\r\n currentValue = currentValue.substr(0, currentValue.lastIndexOf('.'));\r\n }\r\n if (currentValue.indexOf('.') === 0) {\r\n currentValue = '0' + currentValue;\r\n }\r\n const _zero_fill = currentValue.split('.');\r\n if (_zero_fill[0].length > 7) {\r\n _zero_fill[0] = _zero_fill[0].substr(0, 7);\r\n }\r\n\r\n if (1 in _zero_fill && _zero_fill[1].length) {\r\n _zero_fill[1] = _zero_fill[1].substr(0, this.variablesService.digits);\r\n }\r\n currentValue = _zero_fill.join('.');\r\n if (currentValue !== originalValue) {\r\n const cursorPosition = (event.target).selectionEnd;\r\n (event.target).value = currentValue;\r\n (event.target).setSelectionRange(cursorPosition, cursorPosition);\r\n (event.target).dispatchEvent(new Event('input'));\r\n }\r\n }\r\n\r\n private integerValidation(event: Event) {\r\n let currentValue = (event.target).value;\r\n const originalValue = currentValue;\r\n const OnlyD = /[^\\d]/g;\r\n const _has_error = currentValue.match(OnlyD);\r\n if (_has_error && _has_error.length) {\r\n currentValue = currentValue.replace(OnlyD, '');\r\n }\r\n if (currentValue !== originalValue) {\r\n const cursorPosition = (event.target).selectionEnd;\r\n (event.target).value = currentValue;\r\n (event.target).setSelectionRange(cursorPosition, cursorPosition);\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n {{title}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \":host {\\n position: fixed;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: rgba(255, 255, 255, 0.25); }\\n\\n.modal {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n background-position: center;\\n background-size: 200%;\\n padding: 2rem;\\n width: 34rem; }\\n\\n.modal .content {\\n display: flex;\\n margin: 1.2rem 0; }\\n\\n.modal .content .icon {\\n flex: 0 0 auto;\\n width: 4.4rem;\\n height: 4.4rem; }\\n\\n.modal .content .icon.error {\\n -webkit-mask: url('modal-alert.svg') no-repeat center;\\n mask: url('modal-alert.svg') no-repeat center; }\\n\\n.modal .content .icon.success {\\n -webkit-mask: url('modal-success.svg') no-repeat center;\\n mask: url('modal-success.svg') no-repeat center; }\\n\\n.modal .content .icon.info {\\n -webkit-mask: url('modal-info.svg') no-repeat center;\\n mask: url('modal-info.svg') no-repeat center; }\\n\\n.modal .content .message-container {\\n display: flex;\\n flex-direction: column;\\n margin-left: 2rem; }\\n\\n.modal .content .message-container .title {\\n font-size: 1.8rem;\\n font-weight: 600;\\n line-height: 2.2rem; }\\n\\n.modal .content .message-container .message {\\n font-size: 1.3rem;\\n line-height: 1.8rem;\\n margin-top: 0.4rem; }\\n\\n.modal .action-button {\\n margin: 1.2rem auto 0.6rem;\\n width: 10rem;\\n height: 2.4rem; }\\n\\n.modal .close-button {\\n position: absolute;\\n top: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: transparent;\\n margin: 0;\\n padding: 0;\\n width: 2.4rem;\\n height: 2.4rem; }\\n\\n.modal .close-button .icon {\\n -webkit-mask: url('close.svg') no-repeat center;\\n mask: url('close.svg') no-repeat center;\\n width: 2.4rem;\\n height: 2.4rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9tb2RhbC1jb250YWluZXIvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcX2hlbHBlcnNcXGRpcmVjdGl2ZXNcXG1vZGFsLWNvbnRhaW5lclxcbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixTQUFTO0VBQ1QsT0FBTztFQUNQLFFBQVE7RUFDUixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixxQ0FBcUMsRUFBQTs7QUFFdkM7RUFDRSxrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QiwyQkFBMkI7RUFDM0IscUJBQXFCO0VBQ3JCLGFBQWE7RUFDYixZQUFZLEVBQUE7O0FBUGQ7SUFVSSxhQUFhO0lBQ2IsZ0JBQWdCLEVBQUE7O0FBWHBCO01BY00sY0FBYztNQUNkLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBaEJwQjtRQW1CUSxxREFBNkQ7Z0JBQTdELDZDQUE2RCxFQUFBOztBQW5CckU7UUF1QlEsdURBQStEO2dCQUEvRCwrQ0FBK0QsRUFBQTs7QUF2QnZFO1FBMkJRLG9EQUE0RDtnQkFBNUQsNENBQTRELEVBQUE7O0FBM0JwRTtNQWdDTSxhQUFhO01BQ2Isc0JBQXNCO01BQ3RCLGlCQUFpQixFQUFBOztBQWxDdkI7UUFxQ1EsaUJBQWlCO1FBQ2pCLGdCQUFnQjtRQUNoQixtQkFBbUIsRUFBQTs7QUF2QzNCO1FBMkNRLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFDbkIsa0JBQWtCLEVBQUE7O0FBN0MxQjtJQW1ESSwwQkFBMEI7SUFDMUIsWUFBWTtJQUNaLGNBQWMsRUFBQTs7QUFyRGxCO0lBeURJLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sUUFBUTtJQUNSLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2QixTQUFTO0lBQ1QsVUFBVTtJQUNWLGFBQWE7SUFDYixjQUFjLEVBQUE7O0FBbkVsQjtNQXNFTSwrQ0FBdUQ7Y0FBdkQsdUNBQXVEO01BQ3ZELGFBQWE7TUFDYixjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9faGVscGVycy9kaXJlY3RpdmVzL21vZGFsLWNvbnRhaW5lci9tb2RhbC1jb250YWluZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcclxufVxyXG4ubW9kYWwge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xyXG4gIGJhY2tncm91bmQtc2l6ZTogMjAwJTtcclxuICBwYWRkaW5nOiAycmVtO1xyXG4gIHdpZHRoOiAzNHJlbTtcclxuXHJcbiAgLmNvbnRlbnQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIG1hcmdpbjogMS4ycmVtIDA7XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgICAgd2lkdGg6IDQuNHJlbTtcclxuICAgICAgaGVpZ2h0OiA0LjRyZW07XHJcblxyXG4gICAgICAmLmVycm9yIHtcclxuICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvbW9kYWwtYWxlcnQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnN1Y2Nlc3Mge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9tb2RhbC1zdWNjZXNzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5pbmZvIHtcclxuICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvbW9kYWwtaW5mby5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAubWVzc2FnZS1jb250YWluZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBtYXJnaW4tbGVmdDogMnJlbTtcclxuXHJcbiAgICAgIC50aXRsZSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxLjhyZW07XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMi4ycmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAubWVzc2FnZSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuOHJlbTtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwLjRyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5hY3Rpb24tYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMS4ycmVtIGF1dG8gMC42cmVtO1xyXG4gICAgd2lkdGg6IDEwcmVtO1xyXG4gICAgaGVpZ2h0OiAyLjRyZW07XHJcbiAgfVxyXG5cclxuICAuY2xvc2UtYnV0dG9uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIHdpZHRoOiAyLjRyZW07XHJcbiAgICBoZWlnaHQ6IDIuNHJlbTtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jbG9zZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIHdpZHRoOiAyLjRyZW07XHJcbiAgICAgIGhlaWdodDogMi40cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-modal-container',\r\n templateUrl: './modal-container.component.html',\r\n styleUrls: ['./modal-container.component.scss']\r\n})\r\nexport class ModalContainerComponent implements OnInit {\r\n\r\n public title: string;\r\n @Input() type: string;\r\n @Input() message: string;\r\n @Output() close = new EventEmitter();\r\n @ViewChild('btn') button: ElementRef;\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n ngOnInit() {\r\n this.button.nativeElement.focus();\r\n switch (this.type) {\r\n case 'error': this.title = this.translate.instant('MODALS.ERROR'); break;\r\n case 'success': this.title = this.translate.instant('MODALS.SUCCESS'); break;\r\n case 'info': this.title = this.translate.instant('MODALS.INFO'); break;\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n {{ 'STAKING.SWITCH.ON' | translate }}\\r\\n \\r\\n {{ 'STAKING.SWITCH.OFF' | translate }}\\r\\n
\\r\\n\"","module.exports = \".switch {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n border-radius: 1rem;\\n cursor: pointer;\\n font-size: 1rem;\\n padding: 0.5rem;\\n width: 5rem;\\n height: 2rem; }\\n .switch .circle {\\n border-radius: 1rem;\\n width: 1.2rem;\\n height: 1.2rem; }\\n .switch .option {\\n margin: 0 0.2rem;\\n line-height: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9zdGFraW5nLXN3aXRjaC9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxfaGVscGVyc1xcZGlyZWN0aXZlc1xcc3Rha2luZy1zd2l0Y2hcXHN0YWtpbmctc3dpdGNoLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsbUJBQW1CO0VBQ25CLGVBQWU7RUFDZixlQUFlO0VBQ2YsZUFBZTtFQUNmLFdBQVc7RUFDWCxZQUFZLEVBQUE7RUFUZDtJQVlJLG1CQUFtQjtJQUNuQixhQUFhO0lBQ2IsY0FBYyxFQUFBO0VBZGxCO0lBa0JJLGdCQUFnQjtJQUNoQixtQkFBbUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL19oZWxwZXJzL2RpcmVjdGl2ZXMvc3Rha2luZy1zd2l0Y2gvc3Rha2luZy1zd2l0Y2guY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc3dpdGNoIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtc2l6ZTogMXJlbTtcclxuICBwYWRkaW5nOiAwLjVyZW07XHJcbiAgd2lkdGg6IDVyZW07XHJcbiAgaGVpZ2h0OiAycmVtO1xyXG5cclxuICAuY2lyY2xlIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICB3aWR0aDogMS4ycmVtO1xyXG4gICAgaGVpZ2h0OiAxLjJyZW07XHJcbiAgfVxyXG5cclxuICAub3B0aW9uIHtcclxuICAgIG1hcmdpbjogMCAwLjJyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4ycmVtO1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\r\nimport {BackendService} from '../../services/backend.service';\r\nimport {VariablesService} from '../../services/variables.service';\r\n\r\n@Component({\r\n selector: 'app-staking-switch',\r\n templateUrl: './staking-switch.component.html',\r\n styleUrls: ['./staking-switch.component.scss']\r\n})\r\nexport class StakingSwitchComponent implements OnInit {\r\n\r\n @Input() wallet_id: boolean;\r\n @Input() staking: boolean;\r\n @Output() stakingChange = new EventEmitter();\r\n\r\n constructor(private backend: BackendService, private variablesService: VariablesService) {}\r\n\r\n ngOnInit() {}\r\n\r\n toggleStaking() {\r\n const wallet = this.variablesService.getWallet(this.wallet_id);\r\n if (wallet && wallet.loaded) {\r\n this.stakingChange.emit(!this.staking);\r\n if (!this.staking) {\r\n this.backend.startPosMining(this.wallet_id);\r\n } else {\r\n this.backend.stopPosMining(this.wallet_id);\r\n }\r\n }\r\n }\r\n}\r\n","import {Directive, Input, ElementRef, HostListener, Renderer2, HostBinding, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Directive({\r\n selector: '[tooltip]'\r\n})\r\n\r\nexport class TooltipDirective implements OnDestroy {\r\n\r\n @HostBinding('style.cursor') cursor;\r\n\r\n @Input('tooltip') tooltipInner: any;\r\n @Input() placement: string;\r\n @Input() tooltipClass: string;\r\n @Input() timeout = 0;\r\n @Input() delay = 0;\r\n @Input() showWhenNoOverflow = true;\r\n tooltip: HTMLElement;\r\n\r\n removeTooltipTimeout;\r\n removeTooltipTimeoutInner;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2, private route: ActivatedRoute) {\r\n }\r\n\r\n @HostListener('mouseenter') onMouseEnter() {\r\n if (this.showWhenNoOverflow || (!this.showWhenNoOverflow && this.el.nativeElement.offsetWidth < this.el.nativeElement.scrollWidth)) {\r\n this.cursor = 'pointer';\r\n if (!this.tooltip) {\r\n this.show();\r\n } else {\r\n this.cancelHide();\r\n }\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n if (this.tooltip) {\r\n this.hide();\r\n }\r\n }\r\n\r\n show() {\r\n this.create();\r\n this.placement = this.placement === null ? 'top' : this.placement;\r\n this.setPosition(this.placement);\r\n }\r\n\r\n hide() {\r\n this.removeTooltipTimeout = setTimeout(() => {\r\n this.renderer.setStyle(this.tooltip, 'opacity', '0');\r\n this.removeTooltipTimeoutInner = setTimeout(() => {\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null;\r\n }, this.delay);\r\n }, this.timeout);\r\n }\r\n\r\n cancelHide() {\r\n clearTimeout(this.removeTooltipTimeout);\r\n clearTimeout(this.removeTooltipTimeoutInner);\r\n this.renderer.setStyle(this.tooltip, 'opacity', '1');\r\n }\r\n\r\n create() {\r\n if (typeof this.tooltipInner === 'string') {\r\n this.tooltip = this.renderer.createElement('div');\r\n this.tooltip.innerHTML = this.tooltipInner;\r\n } else {\r\n this.tooltip = this.tooltipInner;\r\n }\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n\r\n this.tooltip.addEventListener('mouseenter', () => {\r\n this.cancelHide();\r\n });\r\n this.tooltip.addEventListener('mouseleave', () => {\r\n if (this.tooltip) {\r\n this.hide();\r\n }\r\n });\r\n\r\n this.renderer.setStyle(document.body, 'position', 'relative');\r\n this.renderer.setStyle(this.tooltip, 'position', 'absolute');\r\n if (this.tooltipClass !== null) {\r\n const classes = this.tooltipClass.split(' ');\r\n for (let i = 0; i < classes.length; i++) {\r\n this.renderer.addClass(this.tooltip, classes[i]);\r\n }\r\n }\r\n this.renderer.setStyle(this.tooltip, 'opacity', '0');\r\n this.renderer.setStyle(this.tooltip, '-webkit-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-moz-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-o-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, 'transition', `opacity ${this.delay}ms`);\r\n window.setTimeout(() => {\r\n this.renderer.setStyle(this.tooltip, 'opacity', '1');\r\n }, 0);\r\n }\r\n\r\n setPosition(placement) {\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n this.renderer.addClass(this.tooltip, 'ng-tooltip-' + placement);\r\n const topExit = hostPos.top - this.tooltip.getBoundingClientRect().height - parseInt(getComputedStyle(this.tooltip).marginTop, 10) < 0;\r\n const bottomExit = window.innerHeight < hostPos.bottom + this.tooltip.getBoundingClientRect().height + parseInt(getComputedStyle(this.tooltip).marginTop, 10);\r\n\r\n switch (placement) {\r\n case 'top':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + (hostPos.right - hostPos.left) / 2 - this.tooltip.getBoundingClientRect().width / 2 + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'top-left':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom-left');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'top-right':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom-right');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right - this.tooltip.offsetWidth + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + (hostPos.right - hostPos.left) / 2 - this.tooltip.getBoundingClientRect().width / 2 + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom-left':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top-left');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom-right':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top-right');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right - this.tooltip.offsetWidth + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'left':\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left - this.tooltip.getBoundingClientRect().width + 'px');\r\n break;\r\n case 'right':\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right + 'px');\r\n break;\r\n }\r\n }\r\n\r\n checkSides() {\r\n if (this.tooltip.getBoundingClientRect().left < 0) {\r\n this.renderer.setStyle(this.tooltip, 'left', 0);\r\n }\r\n if (this.tooltip.getBoundingClientRect().right > window.innerWidth) {\r\n this.renderer.setStyle(this.tooltip, 'left', window.innerWidth - this.tooltip.getBoundingClientRect().width + 'px');\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n clearTimeout(this.removeTooltipTimeout);\r\n clearTimeout(this.removeTooltipTimeoutInner);\r\n if (this.tooltip) {\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null;\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.ID' | translate }}\\r\\n {{transaction.tx_hash}}\\r\\n {{ 'HISTORY.DETAILS.SIZE' | translate }}\\r\\n {{ 'HISTORY.DETAILS.SIZE_VALUE' | translate : {value: transaction.tx_blob_size} }}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.HEIGHT' | translate }}\\r\\n {{transaction.height}}\\r\\n {{ 'HISTORY.DETAILS.CONFIRMATION' | translate }}\\r\\n {{transaction.height === 0 ? 0 : variablesService.height_app - transaction.height}}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.INPUTS' | translate }}\\r\\n {{inputs.join(', ')}}\\r\\n {{ 'HISTORY.DETAILS.OUTPUTS' | translate }}\\r\\n {{outputs.join(', ')}}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.COMMENT' | translate }}\\r\\n {{transaction.comment}}\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%; }\\n\\n.table {\\n border-top: 0.2rem solid #ebebeb;\\n margin: 0 3rem;\\n padding: 0.5rem 0; }\\n\\n.table .row {\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n border-top: none;\\n line-height: 3rem;\\n margin: 0 -3rem;\\n width: 100%;\\n height: 3rem; }\\n\\n.table .row .cell {\\n flex-shrink: 0;\\n flex-grow: 0;\\n padding: 0 1rem;\\n overflow: hidden;\\n text-overflow: ellipsis; }\\n\\n.table .row .cell:first-child {\\n padding-left: 3rem; }\\n\\n.table .row .cell:last-child {\\n padding-right: 3rem; }\\n\\n.table .row .cell.key-value {\\n cursor: pointer; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy90cmFuc2FjdGlvbi1kZXRhaWxzL0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXF9oZWxwZXJzXFxkaXJlY3RpdmVzXFx0cmFuc2FjdGlvbi1kZXRhaWxzXFx0cmFuc2FjdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLE1BQU07RUFDTixPQUFPO0VBQ1AsV0FBVyxFQUFBOztBQUdiO0VBQ0UsZ0NBQWdDO0VBQ2hDLGNBQWM7RUFDZCxpQkFBaUIsRUFBQTs7QUFIbkI7SUFNSSxhQUFhO0lBQ2IsMkJBQTJCO0lBQzNCLG1CQUFtQjtJQUNuQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZixXQUFXO0lBQ1gsWUFBWSxFQUFBOztBQWJoQjtNQWdCTSxjQUFjO01BQ2QsWUFBWTtNQUNaLGVBQWU7TUFDZixnQkFBZ0I7TUFDaEIsdUJBQXVCLEVBQUE7O0FBcEI3QjtRQXVCUSxrQkFBa0IsRUFBQTs7QUF2QjFCO1FBMkJRLG1CQUFtQixFQUFBOztBQTNCM0I7UUErQlEsZUFBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy90cmFuc2FjdGlvbi1kZXRhaWxzL3RyYW5zYWN0aW9uLWRldGFpbHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4udGFibGUge1xyXG4gIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCAjZWJlYmViO1xyXG4gIG1hcmdpbjogMCAzcmVtO1xyXG4gIHBhZGRpbmc6IDAuNXJlbSAwO1xyXG5cclxuICAucm93IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYm9yZGVyLXRvcDogbm9uZTtcclxuICAgIGxpbmUtaGVpZ2h0OiAzcmVtO1xyXG4gICAgbWFyZ2luOiAwIC0zcmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDNyZW07XHJcblxyXG4gICAgLmNlbGwge1xyXG4gICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgZmxleC1ncm93OiAwO1xyXG4gICAgICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYua2V5LXZhbHVlIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy, Input} from '@angular/core';\r\nimport {Transaction} from '../../models/transaction.model';\r\nimport {VariablesService} from '../../services/variables.service';\r\nimport {BackendService} from '../../services/backend.service';\r\nimport {IntToMoneyPipe} from '../../pipes/int-to-money.pipe';\r\n\r\n@Component({\r\n selector: 'app-transaction-details',\r\n templateUrl: './transaction-details.component.html',\r\n styleUrls: ['./transaction-details.component.scss']\r\n})\r\nexport class TransactionDetailsComponent implements OnInit, OnDestroy {\r\n\r\n @Input() transaction: Transaction;\r\n @Input() sizes: Array;\r\n inputs: Array = [];\r\n outputs: Array = [];\r\n\r\n constructor(public variablesService: VariablesService, private backendService: BackendService, private intToMoneyPipe: IntToMoneyPipe) {}\r\n\r\n ngOnInit() {\r\n for (const input in this.transaction.td['spn']) {\r\n if (this.transaction.td['spn'].hasOwnProperty(input)) {\r\n this.inputs.push(this.intToMoneyPipe.transform(this.transaction.td['spn'][input]));\r\n }\r\n }\r\n for (const output in this.transaction.td['rcv']) {\r\n if (this.transaction.td['rcv'].hasOwnProperty(output)) {\r\n this.outputs.push(this.intToMoneyPipe.transform(this.transaction.td['rcv'][output]));\r\n }\r\n }\r\n }\r\n\r\n openInBrowser(tr) {\r\n this.backendService.openUrlInBrowser('explorer.zano.org/transaction/' + tr);\r\n }\r\n\r\n ngOnDestroy() {}\r\n}\r\n","import {BigNumber} from 'bignumber.js';\r\n\r\nexport class Transaction {\r\n amount: BigNumber;\r\n comment: string;\r\n contract: any[];\r\n fee: BigNumber;\r\n height: number;\r\n is_income: boolean;\r\n is_mining: boolean;\r\n is_mixing: boolean;\r\n is_service: boolean;\r\n payment_id: string;\r\n show_sender: boolean;\r\n td: object;\r\n timestamp: number;\r\n tx_blob_size: number;\r\n tx_hash: string;\r\n tx_type: number;\r\n unlock_time: number;\r\n\r\n sortAmount?: BigNumber;\r\n sortFee?: BigNumber;\r\n}\r\n","import {Contract} from './contract.model';\r\nimport {Transaction} from './transaction.model';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\nexport class Wallet {\r\n wallet_id: number;\r\n name: string;\r\n pass: string;\r\n path: string;\r\n address: string;\r\n balance: BigNumber;\r\n unlocked_balance: BigNumber;\r\n mined_total: number;\r\n tracking_hey: string;\r\n alias_available: boolean;\r\n\r\n alias?: object;\r\n wakeAlias?: boolean;\r\n staking?: boolean;\r\n new_messages?: number;\r\n new_contracts?: number;\r\n\r\n history: Array = [];\r\n excluded_history: Array = [];\r\n\r\n contracts: Array = [];\r\n\r\n progress?: number;\r\n loaded?: boolean;\r\n\r\n send_data?: any = {\r\n address: null,\r\n amount: null,\r\n comment: null,\r\n mixin: null,\r\n fee: null\r\n };\r\n\r\n constructor(id, name, pass, path, address, balance, unlocked_balance, mined = 0, tracking = '') {\r\n this.wallet_id = id;\r\n this.name = name;\r\n this.pass = pass;\r\n this.path = path;\r\n this.address = address;\r\n this.balance = balance;\r\n this.unlocked_balance = unlocked_balance;\r\n this.mined_total = mined;\r\n this.tracking_hey = tracking;\r\n\r\n this.alias = {};\r\n this.staking = false;\r\n this.new_messages = 0;\r\n this.new_contracts = 0;\r\n\r\n this.history = [];\r\n this.excluded_history = [];\r\n\r\n this.progress = 0;\r\n this.loaded = false;\r\n }\r\n\r\n getMoneyEquivalent(equivalent) {\r\n return this.balance.multipliedBy(equivalent).toFixed(0);\r\n }\r\n\r\n havePass(): boolean {\r\n return (this.pass !== '' && this.pass !== null);\r\n }\r\n\r\n isActive(id): boolean {\r\n return this.wallet_id === id;\r\n }\r\n\r\n prepareHistoryItem(item: Transaction): any {\r\n if (item.tx_type === 4) {\r\n item.sortFee = item.amount.plus(item.fee).negated();\r\n item.sortAmount = new BigNumber(0);\r\n } else if (item.tx_type === 3) {\r\n item.sortFee = new BigNumber(0);\r\n } else if ((item.hasOwnProperty('contract') && (item.contract[0].state === 3 || item.contract[0].state === 6 || item.contract[0].state === 601) && !item.contract[0].is_a)) {\r\n item.sortFee = item.fee.negated();\r\n item.sortAmount = item.amount.negated();\r\n } else {\r\n if (!item.is_income) {\r\n item.sortFee = item.fee.negated();\r\n item.sortAmount = item.amount.negated();\r\n } else {\r\n item.sortAmount = item.amount;\r\n }\r\n }\r\n return item;\r\n }\r\n\r\n prepareHistory(items: Transaction[]): void {\r\n for (let i = 0; i < items.length; i++) {\r\n if ((items[i].tx_type === 7 && items[i].is_income) || (items[i].tx_type === 11 && items[i].is_income) || (items[i].amount.eq(0) && items[i].fee.eq(0))) {\r\n let exists = false;\r\n for (let j = 0; j < this.excluded_history.length; j++) {\r\n if (this.excluded_history[j].tx_hash === items[i].tx_hash) {\r\n exists = true;\r\n if (this.excluded_history[j].height !== items[i].height) {\r\n this.excluded_history[j] = items[i];\r\n }\r\n break;\r\n }\r\n }\r\n if (!exists) {\r\n this.excluded_history.push(items[i]);\r\n }\r\n } else {\r\n let exists = false;\r\n for (let j = 0; j < this.history.length; j++) {\r\n if (this.history[j].tx_hash === items[i].tx_hash) {\r\n exists = true;\r\n if (this.history[j].height !== items[i].height) {\r\n this.history[j] = this.prepareHistoryItem(items[i]);\r\n }\r\n break;\r\n }\r\n }\r\n if (!exists) {\r\n if (this.history.length && items[i].timestamp > this.history[0].timestamp) {\r\n this.history.unshift(this.prepareHistoryItem(items[i]));\r\n } else {\r\n this.history.push(this.prepareHistoryItem(items[i]));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeFromHistory(hash: string): void {\r\n for (let i = 0; i < this.history.length; i++) {\r\n if (this.history[i].tx_hash === hash) {\r\n this.history.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n prepareContractsAfterOpen(items: any[], exp_med_ts, height_app, viewedContracts, notViewedContracts): void {\r\n const wallet = this;\r\n for (let i = 0; i < items.length; i++) {\r\n const contract = items[i];\r\n let contractTransactionExist = false;\r\n if (wallet && wallet.history) {\r\n contractTransactionExist = wallet.history.some(elem => elem.contract && elem.contract.length && elem.contract[0].contract_id === contract.contract_id);\r\n }\r\n if (!contractTransactionExist && wallet && wallet.excluded_history) {\r\n contractTransactionExist = wallet.excluded_history.some(elem => elem.contract && elem.contract.length && elem.contract[0].contract_id === contract.contract_id);\r\n }\r\n\r\n if (!contractTransactionExist) {\r\n contract.state = 140;\r\n } else if (contract.state === 1 && contract.expiration_time < exp_med_ts) {\r\n contract.state = 110;\r\n } else if (contract.state === 2 && contract.cancel_expiration_time !== 0 && contract.cancel_expiration_time < exp_med_ts && contract.height === 0) {\r\n const searchResult1 = viewedContracts.some(elem => elem.state === 2 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (!searchResult1) {\r\n contract.state = 130;\r\n contract.is_new = true;\r\n }\r\n } else if (contract.state === 1) {\r\n const searchResult2 = notViewedContracts.find(elem => elem.state === 110 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult2) {\r\n if (searchResult2.time === contract.expiration_time) {\r\n contract.state = 110;\r\n } else {\r\n for (let j = 0; j < notViewedContracts.length; j++) {\r\n if (notViewedContracts[j].contract_id === contract.contract_id && notViewedContracts[j].is_a === contract.is_a) {\r\n notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < viewedContracts.length; j++) {\r\n if (viewedContracts[j].contract_id === contract.contract_id && viewedContracts[j].is_a === contract.is_a) {\r\n viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 2 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 201;\r\n } else if (contract.state === 2) {\r\n const searchResult3 = viewedContracts.some(elem => elem.state === 120 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult3) {\r\n contract.state = 120;\r\n }\r\n } else if (contract.state === 5) {\r\n const searchResult4 = notViewedContracts.find(elem => elem.state === 130 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult4) {\r\n if (searchResult4.time === contract.cancel_expiration_time) {\r\n contract.state = 130;\r\n } else {\r\n for (let j = 0; j < notViewedContracts.length; j++) {\r\n if (notViewedContracts[j].contract_id === contract.contract_id && notViewedContracts[j].is_a === contract.is_a) {\r\n notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < viewedContracts.length; j++) {\r\n if (viewedContracts[j].contract_id === contract.contract_id && viewedContracts[j].is_a === contract.is_a) {\r\n viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 6 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 601;\r\n }\r\n const searchResult = viewedContracts.some(elem => elem.state === contract.state && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n contract.is_new = !searchResult;\r\n\r\n contract['private_detailes'].a_pledge = contract['private_detailes'].a_pledge.plus(contract['private_detailes'].to_pay);\r\n\r\n wallet.contracts.push(contract);\r\n }\r\n this.recountNewContracts();\r\n }\r\n\r\n recountNewContracts() {\r\n this.new_contracts = (this.contracts.filter(item => item.is_new === true )).length;\r\n }\r\n\r\n getContract(id): Contract {\r\n for (let i = 0; i < this.contracts.length; i++) {\r\n if (this.contracts[i].contract_id === id) {\r\n return this.contracts[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'contractStatusMessages'\r\n})\r\nexport class ContractStatusMessagesPipe implements PipeTransform {\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n getStateSeller(stateNum: number): string {\r\n const state = {part1: '', part2: ''};\r\n switch (stateNum) {\r\n case 1:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NEW_CONTRACT');\r\n break;\r\n case 110:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.IGNORED');\r\n break;\r\n case 201:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.ACCEPTED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.WAIT');\r\n break;\r\n case 2:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.BUYER_WAIT');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.PLEDGES_MADE');\r\n break;\r\n case 3:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.COMPLETED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.RECEIVED');\r\n break;\r\n case 4:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NOT_RECEIVED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NULLIFIED');\r\n break;\r\n case 5:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.PROPOSAL_CANCEL');\r\n break;\r\n case 601:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.BEING_CANCELLED');\r\n break;\r\n case 6:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.CANCELLED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.PLEDGES_RETURNED');\r\n break;\r\n case 130:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.IGNORED_CANCEL');\r\n break;\r\n case 140:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.EXPIRED');\r\n break;\r\n }\r\n return state.part1 + ' ' + state.part2;\r\n }\r\n\r\n getStateBuyer(stateNum: number): string {\r\n const state = {part1: '', part2: ''};\r\n switch (stateNum) {\r\n case 1:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.PLEDGE_RESERVED');\r\n break;\r\n case 110:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.IGNORED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.PLEDGE_UNBLOCKED');\r\n break;\r\n case 201:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.ACCEPTED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAIT');\r\n break;\r\n case 2:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.ACCEPTED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.PLEDGES_MADE');\r\n break;\r\n case 120:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING_SELLER');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.PLEDGES_MADE');\r\n break;\r\n case 3:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.COMPLETED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.RECEIVED');\r\n break;\r\n case 4:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.NOT_RECEIVED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.NULLIFIED');\r\n break;\r\n case 5:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING_CANCEL');\r\n break;\r\n case 601:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.BEING_CANCELLED');\r\n break;\r\n case 6:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.CANCELLED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.PLEDGES_RETURNED');\r\n break;\r\n case 130:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.IGNORED_CANCEL');\r\n break;\r\n case 140:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.EXPIRED');\r\n break;\r\n }\r\n return state.part1 + ' ' + state.part2;\r\n }\r\n\r\n transform(item: any, args?: any): any {\r\n if (item.is_a) {\r\n return this.getStateBuyer(item.state);\r\n } else {\r\n return this.getStateSeller(item.state);\r\n }\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'contractTimeLeft'\r\n})\r\nexport class ContractTimeLeftPipe implements PipeTransform {\r\n\r\n constructor(private service: VariablesService, private translate: TranslateService) {}\r\n\r\n transform(value: any, arg?: any): any {\r\n const time = parseInt(((parseInt(value, 10) - this.service.exp_med_ts) / 3600).toFixed(0), 10);\r\n const type = arg || 0;\r\n if (time === 0) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_LESS_ONE');\r\n }\r\n if (this.service.settings.language === 'en') {\r\n if (type === 0) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY', {time: time});\r\n }\r\n } else if (type === 1) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_RESPONSE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_RESPONSE', {time: time});\r\n }\r\n } else if (type === 2) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_WAITING', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_WAITING', {time: time});\r\n }\r\n }\r\n } else {\r\n const rest = time % 10;\r\n if (type === 0) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT', {time: time});\r\n }\r\n } else if (type === 1) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_RESPONSE', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_RESPONSE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT_RESPONSE', {time: time});\r\n }\r\n } else if (type === 2) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_WAITING', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_WAITING', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT_WAITING', {time: time});\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'historyTypeMessages'\r\n})\r\nexport class HistoryTypeMessagesPipe implements PipeTransform {\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n transform(item: any, args?: any): any {\r\n\r\n if (item.tx_type === 0) {\r\n if (item.remote_addresses && item.remote_addresses[0]) {\r\n return item.remote_addresses[0];\r\n } else {\r\n if (item.is_income) {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.HIDDEN');\r\n } else {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UNDEFINED');\r\n }\r\n }\r\n } else if (item.tx_type === 6 && item.height === 0) {\r\n return 'unknown';\r\n } else if (item.tx_type === 9) {\r\n if (item.hasOwnProperty('contract') && item.contract[0].is_a) {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.COMPLETE_BUYER');\r\n } else {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.COMPLETE_SELLER');\r\n }\r\n } else {\r\n switch (item.tx_type) {\r\n // case 0:\r\n // return '';\r\n // case 1:\r\n // return '';\r\n // case 2:\r\n // return '';\r\n // case 3:\r\n // return '';\r\n case 4:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CREATE_ALIAS');\r\n case 5:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UPDATE_ALIAS');\r\n case 6:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.MINED');\r\n case 7:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CREATE_CONTRACT');\r\n case 8:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.PLEDGE_CONTRACT');\r\n // case 9:\r\n // return '';\r\n case 10:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.NULLIFY_CONTRACT');\r\n case 11:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.PROPOSAL_CANCEL_CONTRACT');\r\n case 12:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CANCEL_CONTRACT');\r\n }\r\n }\r\n\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UNDEFINED');\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Pipe({\r\n name: 'intToMoney'\r\n})\r\nexport class IntToMoneyPipe implements PipeTransform {\r\n\r\n constructor(private variablesService: VariablesService) {}\r\n\r\n transform(value: any, args?: any): any {\r\n if (value === 0 || value === undefined) {\r\n return '0';\r\n }\r\n let maxFraction = this.variablesService.digits;\r\n if (args) {\r\n maxFraction = parseInt(args, 10);\r\n }\r\n const power = Math.pow(10, this.variablesService.digits);\r\n let str = (new BigNumber(value)).div(power).toFixed(maxFraction);\r\n\r\n for (let i = str.length - 1; i >= 0; i--) {\r\n if (str[i] !== '0') {\r\n str = str.substr(0, i + 1);\r\n break;\r\n }\r\n }\r\n if (str[str.length - 1] === '.') {\r\n str = str.substr(0, str.length - 1);\r\n }\r\n return str;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Pipe({\r\n name: 'moneyToInt'\r\n})\r\nexport class MoneyToIntPipe implements PipeTransform {\r\n\r\n constructor(private variablesService: VariablesService) {}\r\n\r\n transform(value: any, args?: any): any {\r\n const CURRENCY_DISPLAY_DECIMAL_POINT = this.variablesService.digits;\r\n let result;\r\n if (value) {\r\n let am_str = value.toString().trim();\r\n const point_index = am_str.indexOf('.');\r\n let fraction_size = 0;\r\n if (-1 !== point_index) {\r\n fraction_size = am_str.length - point_index - 1;\r\n while (CURRENCY_DISPLAY_DECIMAL_POINT < fraction_size && '0' === am_str[am_str.length - 1]) {\r\n am_str = am_str.slice(0, am_str.length - 1);\r\n --fraction_size;\r\n }\r\n if (CURRENCY_DISPLAY_DECIMAL_POINT < fraction_size) {\r\n return undefined;\r\n }\r\n am_str = am_str.slice(0, point_index) + am_str.slice(point_index + 1, am_str.length);\r\n } else {\r\n fraction_size = 0;\r\n }\r\n if (!am_str.length) {\r\n return undefined;\r\n }\r\n if (fraction_size < CURRENCY_DISPLAY_DECIMAL_POINT) {\r\n for (let i = 0; i !== CURRENCY_DISPLAY_DECIMAL_POINT - fraction_size; i++) {\r\n am_str = am_str + '0';\r\n }\r\n }\r\n result = (new BigNumber(am_str)).integerValue();\r\n }\r\n return result;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {VariablesService} from './variables.service';\r\nimport {ModalService} from './modal.service';\r\nimport {MoneyToIntPipe} from '../pipes/money-to-int.pipe';\r\nimport JSONBigNumber from 'json-bignumber';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Injectable()\r\nexport class BackendService {\r\n\r\n backendObject: any;\r\n backendLoaded = false;\r\n\r\n constructor(private translate: TranslateService, private variablesService: VariablesService, private modalService: ModalService, private moneyToIntPipe: MoneyToIntPipe) {}\r\n\r\n private Debug(type, message) {\r\n switch (type) {\r\n case 0:\r\n console.error(message);\r\n break;\r\n case 1:\r\n console.warn(message);\r\n break;\r\n case 2:\r\n console.log(message);\r\n break;\r\n default:\r\n console.log(message);\r\n break;\r\n }\r\n }\r\n\r\n private informerRun(error, params, command) {\r\n let error_translate = '';\r\n\r\n switch (error) {\r\n case 'NOT_ENOUGH_MONEY':\r\n error_translate = 'ERRORS.NOT_ENOUGH_MONEY';\r\n break;\r\n case 'CORE_BUSY':\r\n if (command !== 'get_all_aliases') {\r\n error_translate = 'ERRORS.CORE_BUSY';\r\n }\r\n break;\r\n case 'OVERFLOW':\r\n if (command !== 'get_all_aliases') {\r\n error_translate = '';\r\n }\r\n break;\r\n case 'INTERNAL_ERROR:daemon is busy':\r\n error_translate = 'ERRORS.DAEMON_BUSY';\r\n break;\r\n case 'INTERNAL_ERROR:not enough money':\r\n case 'INTERNAL_ERROR:NOT_ENOUGH_MONEY':\r\n if (command === 'cancel_offer') {\r\n error_translate = this.translate.instant('ERRORS.NO_MONEY_REMOVE_OFFER', {\r\n 'fee': this.variablesService.default_fee,\r\n 'currency': this.variablesService.defaultCurrency\r\n });\r\n } else {\r\n error_translate = 'INFORMER.NO_MONEY';\r\n }\r\n break;\r\n case 'INTERNAL_ERROR:not enough outputs to mix':\r\n error_translate = 'ERRORS.NOT_ENOUGH_OUTPUTS_TO_MIX';\r\n break;\r\n case 'INTERNAL_ERROR:transaction is too big':\r\n error_translate = 'ERRORS.TRANSACTION_IS_TO_BIG';\r\n break;\r\n case 'INTERNAL_ERROR:Transfer attempt while daemon offline':\r\n error_translate = 'ERRORS.TRANSFER_ATTEMPT';\r\n break;\r\n case 'ACCESS_DENIED':\r\n error_translate = 'ERRORS.ACCESS_DENIED';\r\n break;\r\n case 'INTERNAL_ERROR:transaction was rejected by daemon':\r\n // if (command === 'request_alias_registration') {\r\n // error_translate = 'INFORMER.ALIAS_IN_REGISTER';\r\n // } else {\r\n error_translate = 'ERRORS.TRANSACTION_ERROR';\r\n // }\r\n break;\r\n case 'INTERNAL_ERROR':\r\n error_translate = 'ERRORS.TRANSACTION_ERROR';\r\n break;\r\n case 'BAD_ARG':\r\n error_translate = 'ERRORS.BAD_ARG';\r\n break;\r\n case 'WALLET_WRONG_ID':\r\n error_translate = 'ERRORS.WALLET_WRONG_ID';\r\n break;\r\n case 'WRONG_PASSWORD':\r\n case 'WRONG_PASSWORD:invalid password':\r\n params = JSON.parse(params);\r\n if (!params.testEmpty) {\r\n error_translate = 'ERRORS.WRONG_PASSWORD';\r\n }\r\n break;\r\n case 'FILE_RESTORED':\r\n if (command === 'open_wallet') {\r\n error_translate = 'ERRORS.FILE_RESTORED';\r\n }\r\n break;\r\n case 'FILE_NOT_FOUND':\r\n if (command !== 'open_wallet' && command !== 'get_alias_info_by_name' && command !== 'get_alias_info_by_address') {\r\n error_translate = this.translate.instant('ERRORS.FILE_NOT_FOUND');\r\n params = JSON.parse(params);\r\n if (params.path) {\r\n error_translate += ': ' + params.path;\r\n }\r\n }\r\n break;\r\n case 'NOT_FOUND': if (command !== 'open_wallet' && command !== 'get_alias_info_by_name' && command !== 'get_alias_info_by_address') {\r\n error_translate = this.translate.instant('ERRORS.FILE_NOT_FOUND');\r\n params = JSON.parse(params);\r\n if (params.path) {\r\n error_translate += ': ' + params.path;\r\n }\r\n }\r\n break;\r\n case 'CANCELED':\r\n case '':\r\n break;\r\n case 'FAIL':\r\n if (command === 'create_proposal' || command === 'accept_proposal' || command === 'release_contract' || command === 'request_cancel_contract' || command === 'accept_cancel_contract') {\r\n error_translate = ' ';\r\n }\r\n break;\r\n case 'ALREADY_EXISTS':\r\n error_translate = 'ERRORS.FILE_EXIST';\r\n break;\r\n default:\r\n error_translate = error;\r\n }\r\n if (error.indexOf('FAIL:failed to save file') > -1) {\r\n error_translate = 'ERRORS.FILE_NOT_SAVED';\r\n }\r\n if (error_translate !== '') {\r\n this.modalService.prepareModal('error', error_translate);\r\n }\r\n }\r\n\r\n private bigNumberParser(key, val) {\r\n if (val.constructor.name === 'BigNumber' && ['balance', 'unlocked_balance', 'amount', 'fee', 'b_fee', 'to_pay', 'a_pledge', 'b_pledge', 'coast'].indexOf(key) === -1) {\r\n return val.toNumber();\r\n }\r\n if (key === 'rcv' || key === 'spn') {\r\n for (let i = 0; i < val.length; i++) {\r\n val[i] = new BigNumber(val[i]);\r\n }\r\n }\r\n return val;\r\n }\r\n\r\n private commandDebug(command, params, result) {\r\n this.Debug(2, '----------------- ' + command + ' -----------------');\r\n const debug = {\r\n _send_params: params,\r\n _result: result\r\n };\r\n this.Debug(2, debug);\r\n try {\r\n this.Debug(2, JSONBigNumber.parse(result, this.bigNumberParser));\r\n } catch (e) {\r\n this.Debug(2, {response_data: result, error_code: 'OK'});\r\n }\r\n }\r\n\r\n private asVal(data) {\r\n return {v: data};\r\n }\r\n\r\n private backendCallback(resultStr, params, callback, command) {\r\n let Result = resultStr;\r\n if (command !== 'get_clipboard') {\r\n if (!resultStr || resultStr === '') {\r\n Result = {};\r\n } else {\r\n try {\r\n Result = JSONBigNumber.parse(resultStr, this.bigNumberParser);\r\n } catch (e) {\r\n Result = {response_data: resultStr, error_code: 'OK'};\r\n }\r\n }\r\n } else {\r\n Result = {\r\n error_code: 'OK',\r\n response_data: Result\r\n };\r\n }\r\n\r\n const Status = (Result.error_code === 'OK' || Result.error_code === 'TRUE');\r\n\r\n if (!Status && Status !== undefined && Result.error_code !== undefined) {\r\n this.Debug(1, 'API error for command: \"' + command + '\". Error code: ' + Result.error_code);\r\n }\r\n const data = ((typeof Result === 'object') && 'response_data' in Result) ? Result.response_data : Result;\r\n\r\n let res_error_code = false;\r\n if (typeof Result === 'object' && 'error_code' in Result && Result.error_code !== 'OK' && Result.error_code !== 'TRUE' && Result.error_code !== 'FALSE') {\r\n this.informerRun(Result.error_code, params, command);\r\n res_error_code = Result.error_code;\r\n }\r\n\r\n // if ( command === 'get_offers_ex' ){\r\n // Service.printLog( \"get_offers_ex offers count \"+((data.offers)?data.offers.length:0) );\r\n // }\r\n\r\n if (typeof callback === 'function') {\r\n callback(Status, data, res_error_code);\r\n } else {\r\n return data;\r\n }\r\n }\r\n\r\n\r\n private runCommand(command, params?, callback?) {\r\n if (this.backendObject) {\r\n const Action = this.backendObject[command];\r\n if (!Action) {\r\n this.Debug(0, 'Run Command Error! Command \"' + command + '\" don\\'t found in backendObject');\r\n } else {\r\n const that = this;\r\n params = (typeof params === 'string') ? params : JSONBigNumber.stringify(params);\r\n if (params === undefined || params === '{}') {\r\n Action(function (resultStr) {\r\n that.commandDebug(command, params, resultStr);\r\n return that.backendCallback(resultStr, params, callback, command);\r\n });\r\n } else {\r\n Action(params, function (resultStr) {\r\n that.commandDebug(command, params, resultStr);\r\n return that.backendCallback(resultStr, params, callback, command);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n eventSubscribe(command, callback) {\r\n if (command === 'on_core_event') {\r\n this.backendObject[command].connect(callback);\r\n } else {\r\n this.backendObject[command].connect((str) => {\r\n callback(JSONBigNumber.parse(str, this.bigNumberParser));\r\n });\r\n }\r\n }\r\n\r\n\r\n initService() {\r\n return new Observable(\r\n observer => {\r\n if (!this.backendLoaded) {\r\n this.backendLoaded = true;\r\n const that = this;\r\n (window).QWebChannel((window).qt.webChannelTransport, function (channel) {\r\n that.backendObject = channel.objects.mediator_object;\r\n observer.next('ok');\r\n });\r\n } else {\r\n if (!this.backendObject) {\r\n observer.error('error');\r\n observer.error('error');\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n webkitLaunchedScript() {\r\n return this.runCommand('webkit_launched_script');\r\n }\r\n\r\n quitRequest() {\r\n return this.runCommand('on_request_quit');\r\n }\r\n\r\n getAppData(callback) {\r\n this.runCommand('get_app_data', {}, callback);\r\n }\r\n\r\n storeAppData(callback?) {\r\n this.runCommand('store_app_data', this.variablesService.settings, callback);\r\n }\r\n\r\n getSecureAppData(pass, callback) {\r\n this.runCommand('get_secure_app_data', pass, callback);\r\n }\r\n\r\n storeSecureAppData(callback) {\r\n if (this.variablesService.appPass === '') {\r\n return callback(false);\r\n }\r\n const wallets = [];\r\n this.variablesService.wallets.forEach((wallet) => {\r\n wallets.push({name: wallet.name, pass: wallet.pass, path: wallet.path});\r\n });\r\n this.backendObject['store_secure_app_data'](JSON.stringify(wallets), this.variablesService.appPass, (dataStore) => {\r\n this.backendCallback(dataStore, {}, callback, 'store_secure_app_data');\r\n });\r\n }\r\n\r\n haveSecureAppData(callback) {\r\n this.runCommand('have_secure_app_data', {}, callback);\r\n }\r\n\r\n saveFileDialog(caption, fileMask, default_path, callback) {\r\n const dir = default_path ? default_path : '/';\r\n const params = {\r\n caption: caption,\r\n filemask: fileMask,\r\n default_dir: dir\r\n };\r\n this.runCommand('show_savefile_dialog', params, callback);\r\n }\r\n\r\n openFileDialog(caption, fileMask, default_path, callback) {\r\n const dir = default_path ? default_path : '/';\r\n const params = {\r\n caption: caption,\r\n filemask: fileMask,\r\n default_dir: dir\r\n };\r\n this.runCommand('show_openfile_dialog', params, callback);\r\n }\r\n\r\n generateWallet(path, pass, callback) {\r\n const params = {\r\n path: path,\r\n pass: pass\r\n };\r\n this.runCommand('generate_wallet', params, callback);\r\n }\r\n\r\n openWallet(path, pass, testEmpty, callback) {\r\n const params = {\r\n path: path,\r\n pass: pass\r\n };\r\n params['testEmpty'] = !!(testEmpty);\r\n this.runCommand('open_wallet', params, callback);\r\n }\r\n\r\n closeWallet(wallet_id, callback) {\r\n this.runCommand('close_wallet', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n getSmartWalletInfo(wallet_id, callback) {\r\n this.runCommand('get_smart_wallet_info', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n runWallet(wallet_id, callback) {\r\n this.runCommand('run_wallet', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n isValidRestoreWalletText(text, callback) {\r\n this.runCommand('is_valid_restore_wallet_text', text, callback);\r\n }\r\n\r\n restoreWallet(path, pass, restore_key, callback) {\r\n const params = {\r\n restore_key: restore_key,\r\n path: path,\r\n pass: pass\r\n };\r\n this.runCommand('restore_wallet', params, callback);\r\n }\r\n\r\n sendMoney(from_wallet_id, to_address, amount, fee, mixin, comment, callback) {\r\n const params = {\r\n wallet_id: parseInt(from_wallet_id, 10),\r\n destinations: [\r\n {\r\n address: to_address,\r\n amount: amount\r\n }\r\n ],\r\n mixin_count: (mixin) ? parseInt(mixin, 10) : 0,\r\n lock_time: 0,\r\n fee: this.moneyToIntPipe.transform(fee),\r\n comment: comment,\r\n push_payer: true\r\n };\r\n this.runCommand('transfer', params, callback);\r\n }\r\n\r\n validateAddress(address, callback) {\r\n this.runCommand('validate_address', address, callback);\r\n }\r\n\r\n setClipboard(str, callback?) {\r\n return this.runCommand('set_clipboard', str, callback);\r\n }\r\n\r\n getClipboard(callback) {\r\n return this.runCommand('get_clipboard', {}, callback);\r\n }\r\n\r\n createProposal(wallet_id, title, comment, a_addr, b_addr, to_pay, a_pledge, b_pledge, time, payment_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n details: {\r\n t: title,\r\n c: comment,\r\n a_addr: a_addr,\r\n b_addr: b_addr,\r\n to_pay: this.moneyToIntPipe.transform(to_pay),\r\n a_pledge: this.moneyToIntPipe.transform((new BigNumber(a_pledge)).minus(to_pay).toString()),\r\n b_pledge: this.moneyToIntPipe.transform(b_pledge)\r\n },\r\n payment_id: payment_id,\r\n expiration_period: parseInt(time, 10) * 60 * 60,\r\n fee: this.variablesService.default_fee_big,\r\n b_fee: this.variablesService.default_fee_big\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('create_proposal', params, callback);\r\n }\r\n\r\n getContracts(wallet_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10)\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('get_contracts', params, callback);\r\n }\r\n\r\n acceptProposal(wallet_id, contract_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('accept_proposal', params, callback);\r\n }\r\n\r\n releaseProposal(wallet_id, contract_id, release_type, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id,\r\n release_type: release_type // \"normal\" or \"burn\"\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('release_contract', params, callback);\r\n }\r\n\r\n requestCancelContract(wallet_id, contract_id, time, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id,\r\n fee: this.variablesService.default_fee_big,\r\n expiration_period: parseInt(time, 10) * 60 * 60\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('request_cancel_contract', params, callback);\r\n }\r\n\r\n acceptCancelContract(wallet_id, contract_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('accept_cancel_contract', params, callback);\r\n }\r\n\r\n getMiningHistory(wallet_id, callback) {\r\n this.runCommand('get_mining_history', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n startPosMining(wallet_id, callback?) {\r\n this.runCommand('start_pos_mining', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n stopPosMining(wallet_id, callback?) {\r\n this.runCommand('stop_pos_mining', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n openUrlInBrowser(url, callback?) {\r\n this.runCommand('open_url_in_browser', url, callback);\r\n }\r\n\r\n start_backend(node, host, port, callback) {\r\n const params = {\r\n configure_for_remote_node: node,\r\n remote_node_host: host,\r\n remote_node_port: parseInt(port, 10)\r\n };\r\n this.runCommand('start_backend', params, callback);\r\n }\r\n\r\n getDefaultFee(callback) {\r\n this.runCommand('get_default_fee', {}, callback);\r\n }\r\n\r\n setBackendLocalization(stringsArray, title, callback?) {\r\n const params = {\r\n strings: stringsArray,\r\n language_title: title\r\n };\r\n this.runCommand('set_localization_strings', params, callback);\r\n }\r\n\r\n registerAlias (wallet_id, alias, address, fee, comment, reward, callback) {\r\n const params = {\r\n wallet_id: wallet_id,\r\n alias: {\r\n alias: alias,\r\n address: address,\r\n tracking_key: '',\r\n comment: comment\r\n },\r\n fee: this.moneyToIntPipe.transform(fee),\r\n reward: this.moneyToIntPipe.transform(reward)\r\n };\r\n this.runCommand('request_alias_registration', params, callback);\r\n }\r\n\r\n updateAlias (wallet_id, alias, fee, callback) {\r\n const params = {\r\n wallet_id: wallet_id,\r\n alias: {\r\n alias: alias.name.replace('@', ''),\r\n address: alias.address,\r\n tracking_key: '',\r\n comment: alias.comment\r\n },\r\n fee: this.moneyToIntPipe.transform(fee)\r\n };\r\n this.runCommand('request_alias_update', params, callback);\r\n }\r\n\r\n getAllAliases (callback) {\r\n this.runCommand('get_all_aliases', {}, callback);\r\n }\r\n\r\n getAliasByName (value, callback) {\r\n return this.runCommand('get_alias_info_by_name', value, callback);\r\n }\r\n\r\n getAliasByAddress (value, callback) {\r\n return this.runCommand('get_alias_info_by_address', value, callback);\r\n }\r\n\r\n getAliasCoast (alias, callback) {\r\n this.runCommand('get_alias_coast', {v: alias}, callback);\r\n }\r\n\r\n getWalletAlias(address) {\r\n if (address != null && this.variablesService.daemon_state === 2) {\r\n if (this.variablesService.aliasesChecked[address] == null) {\r\n this.variablesService.aliasesChecked[address] = {};\r\n if (this.variablesService.aliases.length) {\r\n for (let i = 0, length = this.variablesService.aliases.length; i < length; i++) {\r\n if (i in this.variablesService.aliases && this.variablesService.aliases[i]['address'] === address) {\r\n this.variablesService.aliasesChecked[address]['name'] = this.variablesService.aliases[i].name;\r\n this.variablesService.aliasesChecked[address]['address'] = this.variablesService.aliases[i].address;\r\n this.variablesService.aliasesChecked[address]['comment'] = this.variablesService.aliases[i].comment;\r\n return this.variablesService.aliasesChecked[address];\r\n }\r\n }\r\n }\r\n this.getAliasByAddress(address, (status, data) => {\r\n if (status) {\r\n this.variablesService.aliasesChecked[data.address]['name'] = '@' + data.alias;\r\n this.variablesService.aliasesChecked[data.address]['address'] = data.address;\r\n this.variablesService.aliasesChecked[data.address]['comment'] = data.comment;\r\n }\r\n });\r\n }\r\n return this.variablesService.aliasesChecked[address];\r\n }\r\n return {};\r\n }\r\n\r\n getPoolInfo(callback) {\r\n this.runCommand('get_tx_pool_info', {}, callback);\r\n }\r\n\r\n}\r\n\r\n\r\n/*\r\n\r\n toggleAutoStart: function (value) {\r\n return this.runCommand('toggle_autostart', asVal(value));\r\n },\r\n\r\n getOptions: function (callback) {\r\n return this.runCommand('get_options', {}, callback);\r\n },\r\n\r\n isFileExist: function (path, callback) {\r\n return this.runCommand('is_file_exist', path, callback);\r\n },\r\n\r\n isAutoStartEnabled: function (callback) {\r\n this.runCommand('is_autostart_enabled', {}, function (status, data) {\r\n if (angular.isFunction(callback)) {\r\n callback('error_code' in data && data.error_code !== 'FALSE')\r\n }\r\n });\r\n },\r\n\r\n setLogLevel: function (level) {\r\n return this.runCommand('set_log_level', asVal(level))\r\n },\r\n\r\n resetWalletPass: function (wallet_id, pass, callback) {\r\n this.runCommand('reset_wallet_password', {wallet_id: wallet_id, pass: pass}, callback);\r\n },\r\n\r\n getVersion: function (callback) {\r\n this.runCommand('get_version', {}, function (status, version) {\r\n callback(version)\r\n })\r\n },\r\n\r\n getOsVersion: function (callback) {\r\n this.runCommand('get_os_version', {}, function (status, version) {\r\n callback(version)\r\n })\r\n },\r\n\r\n getLogFile: function (callback) {\r\n this.runCommand('get_log_file', {}, function (status, version) {\r\n callback(version)\r\n })\r\n },\r\n\r\n resync_wallet: function (wallet_id, callback) {\r\n this.runCommand('resync_wallet', {wallet_id: wallet_id}, callback);\r\n },\r\n\r\n storeFile: function (path, buff, callback) {\r\n this.backendObject['store_to_file'](path, (typeof buff === 'string' ? buff : JSON.stringify(buff)), function (data) {\r\n backendCallback(data, {}, callback, 'store_to_file');\r\n });\r\n },\r\n\r\n getMiningEstimate: function (amount_coins, time, callback) {\r\n var params = {\r\n \"amount_coins\": $filter('money_to_int')(amount_coins),\r\n \"time\": parseInt(time)\r\n };\r\n this.runCommand('get_mining_estimate', params, callback);\r\n },\r\n\r\n backupWalletKeys: function (wallet_id, path, callback) {\r\n var params = {\r\n \"wallet_id\": wallet_id,\r\n \"path\": path\r\n };\r\n this.runCommand('backup_wallet_keys', params, callback);\r\n },\r\n\r\n setBlockedIcon: function (enabled, callback) {\r\n var mode = (enabled) ? \"blocked\" : \"normal\";\r\n Service.runCommand('bool_toggle_icon', mode, callback);\r\n },\r\n\r\n getWalletInfo: function (wallet_id, callback) {\r\n this.runCommand('get_wallet_info', {wallet_id: wallet_id}, callback);\r\n },\r\n\r\n printText: function (content) {\r\n return this.runCommand('print_text', {html_text: content});\r\n },\r\n\r\n printLog: function (msg, log_level) {\r\n return this.runCommand('print_log', {msg: msg, log_level: log_level});\r\n },\r\n\r\n*/\r\n\r\n","import {Injectable, Injector, ComponentFactoryResolver, EmbeddedViewRef, ApplicationRef, NgZone} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {ModalContainerComponent} from '../directives/modal-container/modal-container.component';\r\n\r\n@Injectable()\r\nexport class ModalService {\r\n\r\n private components: any[] = [];\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef,\r\n private injector: Injector,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {}\r\n\r\n prepareModal(type, message) {\r\n const length = this.components.push(\r\n this.componentFactoryResolver.resolveComponentFactory(ModalContainerComponent).create(this.injector)\r\n );\r\n\r\n this.components[length - 1].instance['type'] = type;\r\n this.components[length - 1].instance['message'] = message.length ? this.translate.instant(message) : '';\r\n this.components[length - 1].instance['close'].subscribe(() => {\r\n this.removeModal(length - 1);\r\n });\r\n\r\n this.ngZone.run(() => {\r\n this.appendModal(length - 1);\r\n });\r\n }\r\n\r\n appendModal(index) {\r\n this.appRef.attachView(this.components[index].hostView);\r\n const domElem = (this.components[index].hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n }\r\n\r\n removeModal(index) {\r\n if (this.components[index]) {\r\n this.appRef.detachView(this.components[index].hostView);\r\n this.components[index].destroy();\r\n this.components.splice(index, 1);\r\n } else {\r\n const last = this.components.length - 1;\r\n this.appRef.detachView(this.components[last].hostView);\r\n this.components[last].destroy();\r\n this.components.splice(last, 1);\r\n }\r\n }\r\n}\r\n","import {Injectable, NgZone} from '@angular/core';\r\nimport {Wallet} from '../models/wallet.model';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {Idle} from 'idlejs/dist';\r\nimport {Router} from '@angular/router';\r\nimport {ContextMenuComponent, ContextMenuService} from 'ngx-contextmenu';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VariablesService {\r\n\r\n public digits = 12;\r\n public appPass = '';\r\n public moneyEquivalent = 0;\r\n public defaultTheme = 'dark';\r\n public defaultCurrency = 'ZAN';\r\n public opening_wallet: Wallet;\r\n public exp_med_ts = 0;\r\n public height_app = 0;\r\n public last_build_available = '';\r\n public daemon_state = 0;\r\n public sync = {\r\n progress_value: 0,\r\n progress_value_text: '0'\r\n };\r\n public default_fee = '0.010000000000';\r\n public default_fee_big = new BigNumber('10000000000');\r\n\r\n public settings = {\r\n theme: '',\r\n language: 'en',\r\n default_path: '/',\r\n viewedContracts: [],\r\n notViewedContracts: []\r\n };\r\n\r\n public wallets: Array = [];\r\n public currentWallet: Wallet;\r\n public aliases: any = [];\r\n public aliasesChecked: any = {};\r\n public enableAliasSearch = false;\r\n\r\n getHeightAppEvent = new BehaviorSubject(null);\r\n getRefreshStackingEvent = new BehaviorSubject(null);\r\n getAliasChangedEvent = new BehaviorSubject(null);\r\n\r\n public idle = new Idle()\r\n .whenNotInteractive()\r\n .within(15)\r\n .do(() => {\r\n this.ngZone.run(() => {\r\n this.idle.stop();\r\n this.appPass = '';\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n });\r\n\r\n public allContextMenu: ContextMenuComponent;\r\n public onlyCopyContextMenu: ContextMenuComponent;\r\n\r\n constructor(private router: Router, private ngZone: NgZone, private contextMenuService: ContextMenuService) {\r\n }\r\n\r\n setHeightApp(height: number) {\r\n if (height !== this.height_app) {\r\n this.height_app = height;\r\n this.getHeightAppEvent.next(height);\r\n }\r\n }\r\n\r\n setRefreshStacking(wallet_id: number) {\r\n this.getHeightAppEvent.next(wallet_id);\r\n }\r\n\r\n changeAliases() {\r\n this.getAliasChangedEvent.next(true);\r\n }\r\n\r\n setCurrentWallet(id): void {\r\n this.wallets.forEach((wallet) => {\r\n if (wallet.wallet_id === id) {\r\n this.currentWallet = wallet;\r\n }\r\n });\r\n }\r\n\r\n getWallet(id): Wallet {\r\n for (let i = 0; i < this.wallets.length; i++) {\r\n if (this.wallets[i].wallet_id === id) {\r\n return this.wallets[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n startCountdown() {\r\n this.idle.start();\r\n }\r\n\r\n stopCountdown() {\r\n this.idle.stop();\r\n }\r\n\r\n public onContextMenu($event: MouseEvent): void {\r\n $event.target['contextSelectionStart'] = $event.target['selectionStart'];\r\n $event.target['contextSelectionEnd'] = $event.target['selectionEnd'];\r\n if ($event.target && ($event.target['nodeName'].toUpperCase() === 'TEXTAREA' || $event.target['nodeName'].toUpperCase() === 'INPUT') && !$event.target['readOnly']) {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.allContextMenu,\r\n event: $event,\r\n item: $event.target,\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n }\r\n\r\n public onContextMenuOnlyCopy($event: MouseEvent, copyText?: string): void {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.onlyCopyContextMenu,\r\n event: $event,\r\n item: copyText\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\n// Components\r\nimport { MainComponent } from './main/main.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { WalletComponent } from './wallet/wallet.component';\r\nimport { SendComponent } from './send/send.component';\r\nimport { ReceiveComponent } from './receive/receive.component';\r\nimport { HistoryComponent } from './history/history.component';\r\nimport { ContractsComponent } from './contracts/contracts.component';\r\nimport { PurchaseComponent } from './purchase/purchase.component';\r\nimport { MessagesComponent } from './messages/messages.component';\r\nimport { TypingMessageComponent } from './typing-message/typing-message.component';\r\nimport { StakingComponent } from './staking/staking.component';\r\nimport { SettingsComponent } from './settings/settings.component';\r\nimport { CreateWalletComponent } from './create-wallet/create-wallet.component';\r\nimport { OpenWalletComponent } from './open-wallet/open-wallet.component';\r\nimport { RestoreWalletComponent } from './restore-wallet/restore-wallet.component';\r\nimport { SeedPhraseComponent } from './seed-phrase/seed-phrase.component';\r\nimport { WalletDetailsComponent } from './wallet-details/wallet-details.component';\r\nimport { AssignAliasComponent } from './assign-alias/assign-alias.component';\r\nimport { EditAliasComponent } from \"./edit-alias/edit-alias.component\";\r\nimport { TransferAliasComponent } from \"./transfer-alias/transfer-alias.component\";\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: MainComponent\r\n },\r\n {\r\n path: 'main',\r\n component: MainComponent\r\n },\r\n {\r\n path: 'login',\r\n component: LoginComponent\r\n },\r\n {\r\n path: 'wallet/:id',\r\n component: WalletComponent,\r\n children: [\r\n {\r\n path: 'send',\r\n component: SendComponent\r\n },\r\n {\r\n path: 'receive',\r\n component: ReceiveComponent\r\n },\r\n {\r\n path: 'history',\r\n component: HistoryComponent\r\n },\r\n {\r\n path: 'contracts',\r\n component: ContractsComponent,\r\n },\r\n {\r\n path: 'purchase',\r\n component: PurchaseComponent\r\n },\r\n {\r\n path: 'purchase/:id',\r\n component: PurchaseComponent\r\n },\r\n {\r\n path: 'messages',\r\n component: MessagesComponent,\r\n },\r\n {\r\n path: 'messages/:id',\r\n component: TypingMessageComponent,\r\n },\r\n {\r\n path: 'staking',\r\n component: StakingComponent\r\n },\r\n {\r\n path: '',\r\n redirectTo: 'history',\r\n pathMatch: 'full'\r\n }\r\n ]\r\n },\r\n {\r\n path: 'create',\r\n component: CreateWalletComponent\r\n },\r\n {\r\n path: 'open',\r\n component: OpenWalletComponent\r\n },\r\n {\r\n path: 'restore',\r\n component: RestoreWalletComponent\r\n },\r\n {\r\n path: 'seed-phrase',\r\n component: SeedPhraseComponent\r\n },\r\n {\r\n path: 'details',\r\n component: WalletDetailsComponent\r\n },\r\n {\r\n path: 'assign-alias',\r\n component: AssignAliasComponent\r\n },\r\n {\r\n path: 'edit-alias',\r\n component: EditAliasComponent\r\n },\r\n {\r\n path: 'transfer-alias',\r\n component: TransferAliasComponent\r\n },\r\n {\r\n path: 'settings',\r\n component: SettingsComponent\r\n },\r\n {\r\n path: '',\r\n redirectTo: '/',\r\n pathMatch: 'full'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\n\r\nexport class AppRoutingModule { }\r\n","module.exports = \"\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n {{ 'CONTEXT_MENU.COPY' | translate }}\\r\\n {{ 'CONTEXT_MENU.PASTE' | translate }}\\r\\n {{ 'CONTEXT_MENU.SELECT' | translate }}\\r\\n\\r\\n\\r\\n\\r\\n {{ 'CONTEXT_MENU.COPY' | translate }}\\r\\n\\r\\n\"","module.exports = \"/*\\r\\n* Implementation of themes\\r\\n*/\\n.app-content {\\n display: flex;\\n overflow-x: overlay;\\n overflow-y: hidden;\\n width: 100%; }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX21peGlucy5zY3NzIiwic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGFwcC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4RUE7O0NDNUVDO0FDQUQ7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNsQixXQUFXLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAbWl4aW4gdGV4dC10cnVuY2F0ZSB7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcbkBtaXhpbiB0ZXh0V3JhcCB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgbGluZS1icmVhazogc3RyaWN0O1xyXG4gIC13ZWJraXQtaHlwaGVuczogYXV0bztcclxuICAtbXMtaHlwaGVuczogYXV0bztcclxuICBoeXBoZW5zOiBhdXRvO1xyXG59XHJcbkBtaXhpbiBjb3ZlckJveCB7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdHRvcDogMDtcclxuXHRsZWZ0OiAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdGhlaWdodDogMTAwJTtcclxufVxyXG5AbWl4aW4gYWJzICgkdG9wOiBhdXRvLCAkcmlnaHQ6IGF1dG8sICRib3R0b206IGF1dG8sICRsZWZ0OiBhdXRvKSB7XHJcbiAgdG9wOiAkdG9wO1xyXG4gIHJpZ2h0OiAkcmlnaHQ7XHJcbiAgYm90dG9tOiAkYm90dG9tO1xyXG4gIGxlZnQ6ICRsZWZ0O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxufVxyXG5AbWl4aW4gY292ZXJJbWcge1xyXG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcblx0LXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdC1vLWJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0YmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlO1xyXG59XHJcbkBtaXhpbiB2YWxpbmdCb3gge1xyXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR0b3A6ICA1MCU7XHJcblx0bGVmdDogNTAlO1xyXG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG59XHJcbkBtaXhpbiB1blNlbGVjdCB7XHJcblx0LXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xyXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xyXG4gIHVzZXItc2VsZWN0OiBub25lO1xyXG59XHJcbkBtaXhpbiBtYXgxMTk5IHsgLy8gbWFrZXQgMTE3MVxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4MTE3MCB7IC8vIG1ha2V0cyA5OTJcclxuICBAbWVkaWEgKG1heC13aWR0aDogMTE3MHB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDk5MSB7IC8vIG1ha2V0cyA3NjJcclxuICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4NzYxIHsgLy8gbWFrZXRzIDU3NlxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjFweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg1NzUgeyAvLyBtYWtldHMgNDAwXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1vYmlsZSB7XHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDM5OXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIGljb0NlbnRlciB7XHJcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcclxufVxyXG5AbWl4aW4gcHNldWRvICgkZGlzcGxheTogYmxvY2ssICRwb3M6IGFic29sdXRlLCAkY29udGVudDogJycpe1xyXG4gIGNvbnRlbnQ6ICRjb250ZW50O1xyXG4gIGRpc3BsYXk6ICRkaXNwbGF5O1xyXG4gIHBvc2l0aW9uOiAkcG9zO1xyXG59XHJcblxyXG4vKlxyXG4qIEltcGxlbWVudGF0aW9uIG9mIHRoZW1lc1xyXG4qL1xyXG5AbWl4aW4gdGhlbWlmeSgkdGhlbWVzOiAkdGhlbWVzKSB7XHJcbiAgQGVhY2ggJHRoZW1lLCAkbWFwIGluICR0aGVtZXMge1xyXG4gICAgLnRoZW1lLSN7JHRoZW1lfSAmIHtcclxuICAgICAgJHRoZW1lLW1hcDogKCkgIWdsb2JhbDtcclxuICAgICAgQGVhY2ggJGtleSwgJHN1Ym1hcCBpbiAkbWFwIHtcclxuICAgICAgICAkdmFsdWU6IG1hcC1nZXQobWFwLWdldCgkdGhlbWVzLCAkdGhlbWUpLCAnI3ska2V5fScpO1xyXG4gICAgICAgICR0aGVtZS1tYXA6IG1hcC1tZXJnZSgkdGhlbWUtbWFwLCAoJGtleTogJHZhbHVlKSkgIWdsb2JhbDtcclxuICAgICAgfVxyXG4gICAgICBAY29udGVudDtcclxuICAgICAgJHRoZW1lLW1hcDogbnVsbCAhZ2xvYmFsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGZ1bmN0aW9uIHRoZW1lZCgka2V5KSB7XHJcbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZS1tYXAsICRrZXkpO1xyXG59XHJcbiIsIi8qXHJcbiogSW1wbGVtZW50YXRpb24gb2YgdGhlbWVzXHJcbiovXG4uYXBwLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdy14OiBvdmVybGF5O1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIHdpZHRoOiAxMDAlOyB9XG4iLCJAaW1wb3J0ICd+c3JjL2Fzc2V0cy9zY3NzL2Jhc2UvbWl4aW5zJztcclxuXHJcbi5hcHAtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBvdmVyZmxvdy14OiBvdmVybGF5O1xyXG4gIG92ZXJmbG93LXk6IGhpZGRlbjtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG4iXX0= */\"","import {Component, OnInit, NgZone, Renderer2, OnDestroy, ViewChild} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {BackendService} from './_helpers/services/backend.service';\r\nimport {Router} from '@angular/router';\r\nimport {VariablesService} from './_helpers/services/variables.service';\r\nimport {ContextMenuComponent} from 'ngx-contextmenu';\r\nimport {IntToMoneyPipe} from './_helpers/pipes/int-to-money.pipe';\r\nimport {BigNumber} from 'bignumber.js';\r\nimport {ModalService} from './_helpers/services/modal.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n\r\n intervalUpdateContractsState;\r\n onQuitRequest = false;\r\n firstOnlineState = false;\r\n\r\n @ViewChild('allContextMenu') public allContextMenu: ContextMenuComponent;\r\n @ViewChild('onlyCopyContextMenu') public onlyCopyContextMenu: ContextMenuComponent;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private renderer: Renderer2,\r\n public translate: TranslateService,\r\n private backend: BackendService,\r\n private router: Router,\r\n private variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private intToMoneyPipe: IntToMoneyPipe,\r\n private modalService: ModalService\r\n ) {\r\n translate.addLangs(['en', 'fr']);\r\n translate.setDefaultLang('en');\r\n // const browserLang = translate.getBrowserLang();\r\n // translate.use(browserLang.match(/en|fr/) ? browserLang : 'en');\r\n }\r\n\r\n setBackendLocalization() {\r\n const stringsArray = [\r\n this.translate.instant('BACKEND_LOCALIZATION.QUIT'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_RECEIVED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_CONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.INCOME_TRANSFER_UNCONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.INCOME_TRANSFER_CONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.MINED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.LOCKED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_MINIMIZE'),\r\n this.translate.instant('BACKEND_LOCALIZATION.RESTORE'),\r\n this.translate.instant('BACKEND_LOCALIZATION.TRAY_MENU_SHOW'),\r\n this.translate.instant('BACKEND_LOCALIZATION.TRAY_MENU_MINIMIZE')\r\n ];\r\n this.backend.setBackendLocalization(stringsArray, 'en');\r\n }\r\n\r\n ngOnInit() {\r\n this.variablesService.allContextMenu = this.allContextMenu;\r\n this.variablesService.onlyCopyContextMenu = this.onlyCopyContextMenu;\r\n\r\n this.backend.initService().subscribe(initMessage => {\r\n console.log('Init message: ', initMessage);\r\n\r\n this.backend.webkitLaunchedScript();\r\n\r\n this.backend.start_backend(false, '127.0.0.1', 11512, (st2, dd2) => {\r\n console.log(st2, dd2);\r\n });\r\n\r\n this.backend.eventSubscribe('quit_requested', () => {\r\n if (!this.onQuitRequest) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n this.backend.storeSecureAppData(() => {\r\n this.backend.storeAppData(() => {\r\n const recursionCloseWallets = () => {\r\n if (this.variablesService.wallets.length) {\r\n const lastIndex = this.variablesService.wallets.length - 1;\r\n this.backend.closeWallet(this.variablesService.wallets[lastIndex].wallet_id, () => {\r\n this.variablesService.wallets.splice(lastIndex, 1);\r\n recursionCloseWallets();\r\n });\r\n } else {\r\n this.backend.quitRequest();\r\n }\r\n };\r\n recursionCloseWallets();\r\n });\r\n });\r\n }\r\n this.onQuitRequest = true;\r\n });\r\n\r\n this.backend.eventSubscribe('update_wallet_status', (data) => {\r\n console.log('----------------- update_wallet_status -----------------');\r\n console.log(data);\r\n\r\n const wallet_state = data.wallet_state;\r\n const is_mining = data.is_mining;\r\n const wallet = this.variablesService.getWallet(data.wallet_id);\r\n\r\n // 1-synch, 2-ready, 3 - error\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n wallet.loaded = false;\r\n wallet.staking = is_mining;\r\n if (wallet_state === 2) { // ready\r\n wallet.loaded = true;\r\n }\r\n if (wallet_state === 3) { // error\r\n // wallet.error = true;\r\n }\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n wallet.mined_total = data.minied_total;\r\n wallet.alias_available = data.is_alias_operations_available;\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('wallet_sync_progress', (data) => {\r\n console.log('----------------- wallet_sync_progress -----------------');\r\n console.log(data);\r\n\r\n const wallet = this.variablesService.getWallet(data.wallet_id);\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n wallet.progress = data.progress;\r\n if (wallet.progress === 0) {\r\n wallet.loaded = false;\r\n } else if (wallet.progress === 100) {\r\n wallet.loaded = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('update_daemon_state', (data) => {\r\n console.log('----------------- update_daemon_state -----------------');\r\n console.log('DAEMON:' + data.daemon_network_state);\r\n console.log(data);\r\n this.variablesService.exp_med_ts = data['expiration_median_timestamp'] + 600 + 1;\r\n this.variablesService.last_build_available = data.last_build_available;\r\n this.variablesService.setHeightApp(data.height);\r\n\r\n this.ngZone.run(() => {\r\n this.variablesService.daemon_state = data['daemon_network_state'];\r\n if (data['daemon_network_state'] === 1) {\r\n const max = data['max_net_seen_height'] - data['synchronization_start_height'];\r\n const current = data.height - data['synchronization_start_height'];\r\n const return_val = Math.floor((current * 100 / max) * 100) / 100;\r\n if (max === 0 || return_val < 0) {\r\n this.variablesService.sync.progress_value = 0;\r\n this.variablesService.sync.progress_value_text = '0.00';\r\n } else if (return_val >= 100) {\r\n this.variablesService.sync.progress_value = 100;\r\n this.variablesService.sync.progress_value_text = '99.99';\r\n } else {\r\n this.variablesService.sync.progress_value = return_val;\r\n this.variablesService.sync.progress_value_text = return_val.toFixed(2);\r\n }\r\n }\r\n });\r\n if (!this.firstOnlineState && data['daemon_network_state'] === 2) {\r\n this.getAliases();\r\n this.backend.getDefaultFee((status_fee, data_fee) => {\r\n this.variablesService.default_fee_big = new BigNumber(data_fee);\r\n this.variablesService.default_fee = this.intToMoneyPipe.transform(data_fee);\r\n });\r\n this.firstOnlineState = true;\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('money_transfer', (data) => {\r\n console.log('----------------- money_transfer -----------------');\r\n console.log(data);\r\n\r\n if (!data.ti) {\r\n return;\r\n }\r\n\r\n const wallet_id = data.wallet_id;\r\n const tr_info = data.ti;\r\n\r\n const wallet = this.variablesService.getWallet(wallet_id);\r\n\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n\r\n if (!wallet.loaded) {\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n } else {\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n }\r\n\r\n if (tr_info.tx_type === 6) {\r\n this.variablesService.setRefreshStacking(wallet_id);\r\n }\r\n\r\n let tr_exists = wallet.excluded_history.some(elem => elem.tx_hash === tr_info.tx_hash);\r\n tr_exists = (!tr_exists) ? wallet.history.some(elem => elem.tx_hash === tr_info.tx_hash) : tr_exists;\r\n\r\n wallet.prepareHistory([tr_info]);\r\n\r\n if (tr_info.hasOwnProperty('contract')) {\r\n const exp_med_ts = this.variablesService.exp_med_ts;\r\n const height_app = this.variablesService.height_app;\r\n\r\n const contract = tr_info.contract[0];\r\n\r\n if (tr_exists) {\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === contract.contract_id && wallet.contracts[i].is_a === contract.is_a) {\r\n wallet.contracts[i].cancel_expiration_time = contract.cancel_expiration_time;\r\n wallet.contracts[i].expiration_time = contract.expiration_time;\r\n wallet.contracts[i].height = contract.height;\r\n wallet.contracts[i].timestamp = contract.timestamp;\r\n break;\r\n }\r\n }\r\n // $rootScope.getContractsRecount();\r\n return;\r\n }\r\n\r\n if (contract.state === 1 && contract.expiration_time < exp_med_ts) {\r\n contract.state = 110;\r\n } else if (contract.state === 5 && contract.cancel_expiration_time < exp_med_ts) {\r\n contract.state = 130;\r\n } else if (contract.state === 1) {\r\n const searchResult2 = this.variablesService.settings.notViewedContracts.find(elem => elem.state === 110 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult2) {\r\n if (searchResult2.time === contract.expiration_time) {\r\n contract.state = 110;\r\n } else {\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 2 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 201;\r\n } else if (contract.state === 2) {\r\n const searchResult3 = this.variablesService.settings.viewedContracts.some(elem => elem.state === 120 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult3) {\r\n contract.state = 120;\r\n }\r\n } else if (contract.state === 5) {\r\n const searchResult4 = this.variablesService.settings.notViewedContracts.find(elem => elem.state === 130 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult4) {\r\n if (searchResult4.time === contract.cancel_expiration_time) {\r\n contract.state = 130;\r\n } else {\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 6 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 601;\r\n }\r\n\r\n const searchResult = this.variablesService.settings.viewedContracts.some(elem => elem.state === contract.state && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n contract.is_new = !searchResult;\r\n\r\n contract['private_detailes'].a_pledge = contract['private_detailes'].a_pledge.plus(contract['private_detailes'].to_pay);\r\n\r\n let findContract = false;\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === contract.contract_id && wallet.contracts[i].is_a === contract.is_a) {\r\n for (const prop in contract) {\r\n if (contract.hasOwnProperty(prop)) {\r\n wallet.contracts[i][prop] = contract[prop];\r\n }\r\n }\r\n findContract = true;\r\n break;\r\n }\r\n }\r\n if (findContract === false) {\r\n wallet.contracts.push(contract);\r\n }\r\n wallet.recountNewContracts();\r\n }\r\n\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('money_transfer_cancel', (data) => {\r\n console.log('----------------- money_transfer_cancel -----------------');\r\n console.log(data);\r\n\r\n if (!data.ti) {\r\n return;\r\n }\r\n\r\n const wallet_id = data.wallet_id;\r\n const tr_info = data.ti;\r\n const wallet = this.variablesService.getWallet(wallet_id);\r\n\r\n if (wallet) {\r\n if (tr_info.hasOwnProperty('contract')) {\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === tr_info.contract[0].contract_id && wallet.contracts[i].is_a === tr_info.contract[0].is_a) {\r\n if (wallet.contracts[i].state === 1 || wallet.contracts[i].state === 110) {\r\n wallet.contracts[i].is_new = true;\r\n wallet.contracts[i].state = 140;\r\n wallet.recountNewContracts();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n wallet.removeFromHistory(tr_info.tx_hash);\r\n\r\n let error_tr = '';\r\n switch (tr_info.tx_type) {\r\n case 0:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_NORMAL') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NORMAL_TO') + ' ' + this.intToMoneyPipe.transform(tr_info.amount) + ' ' +\r\n this.translate.instant('ERRORS.TX_TYPE_NORMAL_END');\r\n break;\r\n case 1:\r\n // this.translate.instant('ERRORS.TX_TYPE_PUSH_OFFER');\r\n break;\r\n case 2:\r\n // this.translate.instant('ERRORS.TX_TYPE_UPDATE_OFFER');\r\n break;\r\n case 3:\r\n // this.translate.instant('ERRORS.TX_TYPE_CANCEL_OFFER');\r\n break;\r\n case 4:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS_END');\r\n break;\r\n case 5:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_UPDATE_ALIAS') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS_END');\r\n break;\r\n case 6:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_COIN_BASE');\r\n break;\r\n }\r\n if (error_tr) {\r\n this.modalService.prepareModal('error', error_tr);\r\n }\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('on_core_event', (data) => {\r\n console.log('----------------- on_core_event -----------------');\r\n console.log(data);\r\n\r\n data = JSON.parse(data);\r\n\r\n if (data.events != null) {\r\n for (let i = 0, length = data.events.length; i < length; i++) {\r\n\r\n switch (data.events[i].method) {\r\n case 'CORE_EVENT_BLOCK_ADDED': break;\r\n case 'CORE_EVENT_ADD_ALIAS':\r\n if (this.variablesService.aliasesChecked[data.events[i].details.address] != null) {\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['name'] = '@' + data.events[i].details.alias;\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['address'] = data.events[i].details.address;\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['comment'] = data.events[i].details.comment;\r\n }\r\n if (this.variablesService.enableAliasSearch) {\r\n const newAlias = {\r\n name: '@' + data.events[i].details.alias,\r\n address: data.events[i].details.address,\r\n comment: data.events[i].details.comment\r\n };\r\n this.variablesService.aliases = this.variablesService.aliases.concat(newAlias);\r\n // this.variablesService.aliases = this.variablesService.aliases.sort((a, b) => {\r\n // if (a.name.length > b.name.length) return 1;\r\n // if (a.name.length < b.name.length) return -1;\r\n // if (a.name > b.name) return 1;\r\n // if (a.name < b.name) return -1;\r\n // return 0;\r\n // });\r\n this.variablesService.changeAliases();\r\n }\r\n break;\r\n case 'CORE_EVENT_UPDATE_ALIAS':\r\n for (const address in this.variablesService.aliasesChecked) {\r\n if (this.variablesService.aliasesChecked.hasOwnProperty(address)) {\r\n if (this.variablesService.aliasesChecked[address].name === '@' + data.events[i].details.alias) {\r\n if (this.variablesService.aliasesChecked[address].address !== data.events[i].details.details.address) {\r\n delete this.variablesService.aliasesChecked[address]['name'];\r\n delete this.variablesService.aliasesChecked[address]['address'];\r\n delete this.variablesService.aliasesChecked[address]['comment'];\r\n } else {\r\n this.variablesService.aliasesChecked[address].comment = data.events[i].details.details.comment;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (this.variablesService.aliasesChecked[data.events[i].details.details.address] != null) {\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['name'] = '@' + data.events[i].details.alias;\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['address'] = data.events[i].details.details.address;\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['comment'] = data.events[i].details.details.comment;\r\n }\r\n if (this.variablesService.enableAliasSearch) {\r\n const CurrentAlias = this.variablesService.aliases.find((element) => element.name === '@' + data.events[i].details.alias);\r\n if (CurrentAlias) {\r\n CurrentAlias.address = data.events[i].details.details.address;\r\n CurrentAlias.comment = data.events[i].details.details.comment;\r\n }\r\n }\r\n this.variablesService.changeAliases();\r\n break;\r\n default: break;\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.intervalUpdateContractsState = setInterval(() => {\r\n this.variablesService.wallets.forEach((wallet) => {\r\n wallet.contracts.forEach((contract) => {\r\n if (contract.state === 201 && contract.height !== 0 && (this.variablesService.height_app - contract.height) >= 10) {\r\n contract.state = 2;\r\n contract.is_new = true;\r\n console.warn('need check state in contracts');\r\n } else if (contract.state === 601 && contract.height !== 0 && (this.variablesService.height_app - contract.height) >= 10) {\r\n contract.state = 6;\r\n contract.is_new = true;\r\n }\r\n });\r\n });\r\n }, 30000);\r\n\r\n\r\n this.backend.getAppData((status, data) => {\r\n if (data && Object.keys(data).length > 0) {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key) && this.variablesService.settings.hasOwnProperty(key)) {\r\n this.variablesService.settings[key] = data[key];\r\n }\r\n }\r\n if (this.variablesService.settings.hasOwnProperty('theme') && ['dark', 'white', 'gray'].indexOf(this.variablesService.settings.theme) !== -1) {\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.settings.theme);\r\n } else {\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.defaultTheme);\r\n }\r\n } else {\r\n this.variablesService.settings.theme = this.variablesService.defaultTheme;\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.settings.theme);\r\n }\r\n\r\n this.setBackendLocalization();\r\n\r\n if (this.router.url !== '/login') {\r\n this.backend.haveSecureAppData((statusPass) => {\r\n if (statusPass) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'reg'}});\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }, error => {\r\n console.log(error);\r\n });\r\n this.getMoneyEquivalent();\r\n }\r\n\r\n getMoneyEquivalent() {\r\n this.http.get('https://api.coinmarketcap.com/v2/ticker/406').subscribe(\r\n result => {\r\n if (result.hasOwnProperty('data')) {\r\n this.variablesService.moneyEquivalent = result['data']['quotes']['USD']['price'];\r\n }\r\n },\r\n error => {\r\n setTimeout(() => {\r\n this.getMoneyEquivalent();\r\n }, 60000);\r\n console.warn('Error coinmarketcap', error);\r\n }\r\n );\r\n }\r\n\r\n getAliases() {\r\n this.backend.getAllAliases((status, data, error) => {\r\n if (error === 'CORE_BUSY') {\r\n window.setTimeout(() => {\r\n this.getAliases();\r\n }, 10000);\r\n } else if (error === 'OVERFLOW') {\r\n this.variablesService.aliases = [];\r\n this.variablesService.enableAliasSearch = false;\r\n } else {\r\n this.variablesService.enableAliasSearch = true;\r\n if (data.aliases && data.aliases.length) {\r\n this.variablesService.aliases = [];\r\n data.aliases.forEach(alias => {\r\n const newAlias = {\r\n name: '@' + alias.alias,\r\n address: alias.address,\r\n comment: alias.comment\r\n };\r\n this.variablesService.aliases.push(newAlias);\r\n });\r\n this.variablesService.wallets.forEach(wallet => {\r\n wallet.alias = this.backend.getWalletAlias(wallet.address);\r\n });\r\n this.variablesService.aliases = this.variablesService.aliases.sort((a, b) => {\r\n if (a.name.length > b.name.length) return 1;\r\n if (a.name.length < b.name.length) return -1;\r\n if (a.name > b.name) return 1;\r\n if (a.name < b.name) return -1;\r\n return 0;\r\n });\r\n this.variablesService.changeAliases();\r\n }\r\n }\r\n });\r\n }\r\n\r\n contextMenuCopy(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n const start = (target['contextSelectionStart']) ? 'contextSelectionStart' : 'selectionStart';\r\n const end = (target['contextSelectionEnd']) ? 'contextSelectionEnd' : 'selectionEnd';\r\n const canUseSelection = ((target[start]) || (target[start] === '0'));\r\n const SelectedText = (canUseSelection) ? target['value'].substring(target[start], target[end]) : target['value'];\r\n this.backend.setClipboard(String(SelectedText));\r\n }\r\n }\r\n\r\n contextMenuOnlyCopy(text) {\r\n if (text) {\r\n this.backend.setClipboard(String(text));\r\n }\r\n }\r\n\r\n contextMenuPaste(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n this.backend.getClipboard((status, clipboard) => {\r\n clipboard = String(clipboard);\r\n if (typeof clipboard !== 'string' || clipboard.length) {\r\n const start = (target['contextSelectionStart']) ? 'contextSelectionStart' : 'selectionStart';\r\n const end = (target['contextSelectionEnd']) ? 'contextSelectionEnd' : 'selectionEnd';\r\n const _pre = target['value'].substring(0, target[start]);\r\n const _aft = target['value'].substring(target[end], target['value'].length);\r\n let text = _pre + clipboard + _aft;\r\n const cursorPosition = (_pre + clipboard).length;\r\n if (target['maxLength'] && parseInt(target['maxLength'], 10) > 0) {\r\n text = text.substr(0, parseInt(target['maxLength'], 10));\r\n }\r\n target['value'] = text;\r\n target.setSelectionRange(cursorPosition, cursorPosition);\r\n target.dispatchEvent(new Event('input'));\r\n target['focus']();\r\n }\r\n });\r\n }\r\n }\r\n\r\n contextMenuSelect(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n target['focus']();\r\n setTimeout(() => {\r\n target['select']();\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.intervalUpdateContractsState) {\r\n clearInterval(this.intervalUpdateContractsState);\r\n }\r\n }\r\n\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { SettingsComponent } from './settings/settings.component';\r\nimport { SidebarComponent } from './sidebar/sidebar.component';\r\nimport { MainComponent } from './main/main.component';\r\nimport { CreateWalletComponent } from './create-wallet/create-wallet.component';\r\nimport { OpenWalletComponent } from './open-wallet/open-wallet.component';\r\nimport { RestoreWalletComponent } from './restore-wallet/restore-wallet.component';\r\nimport { SeedPhraseComponent } from './seed-phrase/seed-phrase.component';\r\nimport { WalletDetailsComponent } from './wallet-details/wallet-details.component';\r\nimport { AssignAliasComponent } from './assign-alias/assign-alias.component';\r\nimport { EditAliasComponent } from './edit-alias/edit-alias.component';\r\nimport { TransferAliasComponent } from './transfer-alias/transfer-alias.component';\r\nimport { WalletComponent } from './wallet/wallet.component';\r\nimport { SendComponent } from './send/send.component';\r\nimport { ReceiveComponent } from './receive/receive.component';\r\nimport { HistoryComponent } from './history/history.component';\r\nimport { ContractsComponent } from './contracts/contracts.component';\r\nimport { PurchaseComponent } from './purchase/purchase.component';\r\nimport { MessagesComponent } from './messages/messages.component';\r\nimport { TypingMessageComponent } from './typing-message/typing-message.component';\r\nimport { StakingComponent } from './staking/staking.component';\r\n\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { BackendService } from './_helpers/services/backend.service';\r\nimport { ModalService } from './_helpers/services/modal.service';\r\nimport { MoneyToIntPipe } from './_helpers/pipes/money-to-int.pipe';\r\nimport { IntToMoneyPipe } from './_helpers/pipes/int-to-money.pipe';\r\nimport { HistoryTypeMessagesPipe } from './_helpers/pipes/history-type-messages.pipe';\r\nimport { ContractStatusMessagesPipe } from './_helpers/pipes/contract-status-messages.pipe';\r\nimport { ContractTimeLeftPipe } from './_helpers/pipes/contract-time-left.pipe';\r\nimport { TooltipDirective } from './_helpers/directives/tooltip.directive';\r\nimport { InputValidateDirective } from './_helpers/directives/input-validate/input-validate.directive';\r\nimport { StakingSwitchComponent } from './_helpers/directives/staking-switch/staking-switch.component';\r\nimport { ModalContainerComponent } from './_helpers/directives/modal-container/modal-container.component';\r\nimport { TransactionDetailsComponent } from './_helpers/directives/transaction-details/transaction-details.component';\r\nimport { ContextMenuModule } from 'ngx-contextmenu';\r\n\r\nexport function HttpLoaderFactory(httpClient: HttpClient) {\r\n return new TranslateHttpLoader(httpClient, './assets/i18n/', '.json');\r\n}\r\n\r\n\r\nimport { ChartModule, HIGHCHARTS_MODULES, Highcharts} from 'angular-highcharts';\r\n// import * as more from 'highcharts/highcharts-more.src';\r\n// import * as exporting from 'highcharts/modules/exporting.src';\r\n// import * as highstock from 'highcharts/modules/stock.src';\r\n\r\nHighcharts.setOptions({\r\n // global: {\r\n // useUTC: false\r\n // }\r\n});\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginComponent,\r\n SettingsComponent,\r\n SidebarComponent,\r\n MainComponent,\r\n CreateWalletComponent,\r\n OpenWalletComponent,\r\n RestoreWalletComponent,\r\n SeedPhraseComponent,\r\n WalletDetailsComponent,\r\n AssignAliasComponent,\r\n EditAliasComponent,\r\n TransferAliasComponent,\r\n WalletComponent,\r\n SendComponent,\r\n ReceiveComponent,\r\n HistoryComponent,\r\n ContractsComponent,\r\n PurchaseComponent,\r\n MessagesComponent,\r\n StakingComponent,\r\n TypingMessageComponent,\r\n MoneyToIntPipe,\r\n IntToMoneyPipe,\r\n StakingSwitchComponent,\r\n HistoryTypeMessagesPipe,\r\n ContractStatusMessagesPipe,\r\n ContractTimeLeftPipe,\r\n TooltipDirective,\r\n InputValidateDirective,\r\n ModalContainerComponent,\r\n TransactionDetailsComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n HttpClientModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory,\r\n deps: [HttpClient]\r\n }\r\n }),\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ChartModule,\r\n ContextMenuModule.forRoot()\r\n ],\r\n providers: [\r\n BackendService,\r\n ModalService,\r\n MoneyToIntPipe,\r\n IntToMoneyPipe,\r\n // {provide: HIGHCHARTS_MODULES, useFactory: () => [ highstock, more, exporting ] }\r\n ],\r\n entryComponents: [\r\n ModalContainerComponent\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.ASSIGN_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
6 && assignForm.get('name').value.length <= 25\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_WRONG' | translate }}\\r\\n
\\r\\n
25\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_EXISTS' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
{{ \\\"ASSIGN_ALIAS.COST\\\" | translate : {value: alias.price | intToMoney, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\"","module.exports = \".form-assign {\\n margin: 2.4rem 0; }\\n .form-assign .alias-name {\\n width: 50%; }\\n .form-assign .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-assign .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-assign .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n .assign-alias-tooltip {\\n font-size: 1.3rem;\\n line-height: 2rem;\\n padding: 1rem 1.5rem;\\n max-width: 46rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXNzaWduLWFsaWFzL0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGFzc2lnbi1hbGlhc1xcYXNzaWduLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTtFQUtsQjtFQUNFLGlCQUFpQjtFQUNqQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvYXNzaWduLWFsaWFzL2Fzc2lnbi1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWFzc2lnbiB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuXHJcbiAgLmFsaWFzLW5hbWUge1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICB9XHJcblxyXG4gIC5hbGlhcy1jb3N0IHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbWFyZ2luLXRvcDogMnJlbTtcclxuICB9XHJcblxyXG4gIC53cmFwLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbjogMi41cmVtIC0wLjdyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuICAgICAgd2lkdGg6IDE1cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmFzc2lnbi1hbGlhcy10b29sdGlwIHtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuICBsaW5lLWhlaWdodDogMnJlbTtcclxuICBwYWRkaW5nOiAxcmVtIDEuNXJlbTtcclxuICBtYXgtd2lkdGg6IDQ2cmVtO1xyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {MoneyToIntPipe} from '../_helpers/pipes/money-to-int.pipe';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport BigNumber from 'bignumber.js';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-assign-alias',\r\n templateUrl: './assign-alias.component.html',\r\n styleUrls: ['./assign-alias.component.scss']\r\n})\r\nexport class AssignAliasComponent implements OnInit, OnDestroy {\r\n\r\n wallet: Wallet;\r\n assignForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, Validators.pattern(/^@?[a-z0-9\\.\\-]{6,25}$/)]),\r\n comment: new FormControl('')\r\n });\r\n assignFormSubscription: Subscription;\r\n alias = {\r\n name: '',\r\n fee: this.variablesService.default_fee,\r\n price: new BigNumber(0),\r\n reward: '0',\r\n rewardOriginal: '0',\r\n comment: '',\r\n exists: false\r\n };\r\n canRegister = false;\r\n notEnoughMoney = false;\r\n\r\n constructor(\r\n private ngZone: NgZone,\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private moneyToInt: MoneyToIntPipe,\r\n private intToMoney: IntToMoneyPipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n this.assignFormSubscription = this.assignForm.get('name').valueChanges.subscribe(value => {\r\n this.canRegister = false;\r\n this.alias.exists = false;\r\n const newName = value.toLowerCase().replace('@', '');\r\n if (!(this.assignForm.controls['name'].errors && this.assignForm.controls['name'].errors.hasOwnProperty('pattern')) && newName.length >= 6 && newName.length <= 25) {\r\n this.backend.getAliasByName(newName, status => {\r\n this.ngZone.run(() => {\r\n this.alias.exists = status;\r\n });\r\n if (!status) {\r\n this.alias.price = new BigNumber(0);\r\n this.backend.getAliasCoast(newName, (statusPrice, dataPrice) => {\r\n this.ngZone.run(() => {\r\n if (statusPrice) {\r\n this.alias.price = BigNumber.sum(dataPrice['coast'], this.variablesService.default_fee_big);\r\n }\r\n this.notEnoughMoney = this.alias.price.isGreaterThan(this.wallet.unlocked_balance);\r\n this.alias.reward = this.intToMoney.transform(this.alias.price, false);\r\n this.alias.rewardOriginal = this.intToMoney.transform(dataPrice['coast'], false);\r\n this.canRegister = !this.notEnoughMoney;\r\n });\r\n });\r\n } else {\r\n this.notEnoughMoney = false;\r\n this.alias.reward = '0';\r\n this.alias.rewardOriginal = '0';\r\n }\r\n });\r\n } else {\r\n this.notEnoughMoney = false;\r\n this.alias.reward = '0';\r\n this.alias.rewardOriginal = '0';\r\n }\r\n this.alias.name = newName;\r\n });\r\n }\r\n\r\n assignAlias() {\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n if (alias.hasOwnProperty('name')) {\r\n this.modalService.prepareModal('info', 'ASSIGN_ALIAS.ONE_ALIAS');\r\n } else {\r\n this.alias.comment = this.assignForm.get('comment').value;\r\n this.backend.registerAlias(this.wallet.wallet_id, this.alias.name, this.wallet.address, this.alias.fee, this.alias.comment, this.alias.rewardOriginal, (status, data) => {\r\n if (status) {\r\n this.wallet.wakeAlias = true;\r\n this.modalService.prepareModal('info', 'ASSIGN_ALIAS.REQUEST_ADD_REG');\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.assignFormSubscription.unsubscribe();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n {{ 'CONTRACTS.EMPTY' | translate }}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'CONTRACTS.CONTRACTS' | translate }}{{ 'CONTRACTS.DATE' | translate }}{{ 'CONTRACTS.AMOUNT' | translate }}{{ 'CONTRACTS.STATUS' | translate }}{{ 'CONTRACTS.COMMENTS' | translate }}
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{item.private_detailes.t}}\\r\\n
\\r\\n
\\r\\n
{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}
\\r\\n
\\r\\n
{{item.private_detailes.to_pay | intToMoney}} {{variablesService.defaultCurrency}}
\\r\\n
\\r\\n
\\r\\n {{item | contractStatusMessages}}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{item.private_detailes.c}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.empty-contracts {\\n font-size: 1.5rem; }\\n\\n.wrap-table {\\n margin: -3rem -3rem 0 -3rem;\\n overflow-x: auto; }\\n\\n.wrap-table table tbody tr {\\n cursor: pointer;\\n outline: none !important; }\\n\\n.wrap-table table tbody tr .contract {\\n position: relative;\\n display: flex;\\n align-items: center; }\\n\\n.wrap-table table tbody tr .contract .icon {\\n flex-shrink: 0; }\\n\\n.wrap-table table tbody tr .contract .icon.new, .wrap-table table tbody tr .contract .icon.alert {\\n position: absolute;\\n top: 0; }\\n\\n.wrap-table table tbody tr .contract .icon.new {\\n left: -2.3rem;\\n -webkit-mask: url('new.svg') no-repeat center;\\n mask: url('new.svg') no-repeat center;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-table table tbody tr .contract .icon.alert {\\n top: 0.2rem;\\n left: -2.1rem;\\n -webkit-mask: url('alert.svg') no-repeat center;\\n mask: url('alert.svg') no-repeat center;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.wrap-table table tbody tr .contract .icon.purchase, .wrap-table table tbody tr .contract .icon.sell {\\n margin-right: 1rem;\\n width: 1.5rem;\\n height: 1.5rem; }\\n\\n.wrap-table table tbody tr .contract .icon.purchase {\\n -webkit-mask: url('purchase.svg') no-repeat center;\\n mask: url('purchase.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .contract .icon.sell {\\n -webkit-mask: url('sell.svg') no-repeat center;\\n mask: url('sell.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .contract span {\\n text-overflow: ellipsis;\\n overflow: hidden; }\\n\\n.wrap-table table tbody tr .status, .wrap-table table tbody tr .comment {\\n text-overflow: ellipsis;\\n overflow: hidden; }\\n\\n.contracts-buttons {\\n display: flex;\\n margin: 3rem 0;\\n width: 50%; }\\n\\n.contracts-buttons button {\\n flex: 0 1 50%;\\n margin-right: 1.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29udHJhY3RzL0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGNvbnRyYWN0c1xcY29udHJhY3RzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsMkJBQTJCO0VBQzNCLGdCQUFnQixFQUFBOztBQUZsQjtJQVNRLGVBQWU7SUFDZix3QkFBd0IsRUFBQTs7QUFWaEM7TUFhVSxrQkFBa0I7TUFDbEIsYUFBYTtNQUNiLG1CQUFtQixFQUFBOztBQWY3QjtRQWtCWSxjQUFjLEVBQUE7O0FBbEIxQjtVQXFCYyxrQkFBa0I7VUFDbEIsTUFBTSxFQUFBOztBQXRCcEI7VUEwQmMsYUFBYTtVQUNiLDZDQUFzRDtrQkFBdEQscUNBQXNEO1VBQ3RELGFBQWE7VUFDYixjQUFjLEVBQUE7O0FBN0I1QjtVQWlDYyxXQUFXO1VBQ1gsYUFBYTtVQUNiLCtDQUF3RDtrQkFBeEQsdUNBQXdEO1VBQ3hELGFBQWE7VUFDYixjQUFjLEVBQUE7O0FBckM1QjtVQXlDYyxrQkFBa0I7VUFDbEIsYUFBYTtVQUNiLGNBQWMsRUFBQTs7QUEzQzVCO1VBK0NjLGtEQUEyRDtrQkFBM0QsMENBQTJELEVBQUE7O0FBL0N6RTtVQW1EYyw4Q0FBdUQ7a0JBQXZELHNDQUF1RCxFQUFBOztBQW5EckU7UUF3RFksdUJBQXVCO1FBQ3ZCLGdCQUFnQixFQUFBOztBQXpENUI7TUE4RFUsdUJBQXVCO01BQ3ZCLGdCQUFnQixFQUFBOztBQU8xQjtFQUNFLGFBQWE7RUFDYixjQUFjO0VBQ2QsVUFBVSxFQUFBOztBQUhaO0lBTUksYUFBYTtJQUNiLG9CQUFvQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvY29udHJhY3RzL2NvbnRyYWN0cy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmVtcHR5LWNvbnRyYWN0cyB7XHJcbiAgZm9udC1zaXplOiAxLjVyZW07XHJcbn1cclxuXHJcbi53cmFwLXRhYmxlIHtcclxuICBtYXJnaW46IC0zcmVtIC0zcmVtIDAgLTNyZW07XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xyXG5cclxuICAgICAgICAuY29udHJhY3Qge1xyXG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcclxuXHJcbiAgICAgICAgICAgICYubmV3LCAmLmFsZXJ0IHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLm5ldyB7XHJcbiAgICAgICAgICAgICAgbGVmdDogLTIuM3JlbTtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL25ldy5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDEuN3JlbTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5hbGVydCB7XHJcbiAgICAgICAgICAgICAgdG9wOiAwLjJyZW07XHJcbiAgICAgICAgICAgICAgbGVmdDogLTIuMXJlbTtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2FsZXJ0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgICB3aWR0aDogMS4ycmVtO1xyXG4gICAgICAgICAgICAgIGhlaWdodDogMS4ycmVtO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLnB1cmNoYXNlLCAmLnNlbGwge1xyXG4gICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgICAgICAgICAgICB3aWR0aDogMS41cmVtO1xyXG4gICAgICAgICAgICAgIGhlaWdodDogMS41cmVtO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLnB1cmNoYXNlIHtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3B1cmNoYXNlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5zZWxsIHtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbGwuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnN0YXR1cywgLmNvbW1lbnQge1xyXG4gICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmNvbnRyYWN0cy1idXR0b25zIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIG1hcmdpbjogM3JlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBmbGV4OiAwIDEgNTAlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW07XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\n\r\n@Component({\r\n selector: 'app-contracts',\r\n templateUrl: './contracts.component.html',\r\n styleUrls: ['./contracts.component.scss']\r\n})\r\nexport class ContractsComponent implements OnInit, OnDestroy {\r\n\r\n parentRouting;\r\n walletId;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private variablesService: VariablesService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n if (params.hasOwnProperty('id')) {\r\n this.walletId = params['id'];\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.CREATE_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n \\r\\n {{ 'COMMON.BACK' | translate }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".form-create {\\n margin: 2.4rem 0;\\n width: 50%; }\\n .form-create .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem; }\\n .form-create .wrap-buttons button {\\n margin: 0 0.7rem; }\\n .form-create .wrap-buttons button.transparent-button {\\n flex-basis: 50%; }\\n .form-create .wrap-buttons button.select-button {\\n flex-basis: 60%; }\\n .form-create .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY3JlYXRlLXdhbGxldC9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxjcmVhdGUtd2FsbGV0XFxjcmVhdGUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTtFQUZaO0lBS0ksYUFBYTtJQUNiLHNCQUFzQixFQUFBO0VBTjFCO01BU00sZ0JBQWdCLEVBQUE7RUFUdEI7UUFZUSxlQUFlLEVBQUE7RUFadkI7UUFnQlEsZUFBZSxFQUFBO0VBaEJ2QjtRQW9CUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9jcmVhdGUtd2FsbGV0L2NyZWF0ZS13YWxsZXQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1jcmVhdGUge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG5cclxuICAgICAgJi50cmFuc3BhcmVudC1idXR0b24ge1xyXG4gICAgICAgIGZsZXgtYmFzaXM6IDUwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5zZWxlY3QtYnV0dG9uIHtcclxuICAgICAgICBmbGV4LWJhc2lzOiA2MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuY3JlYXRlLWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMSAxIDUwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Router} from '@angular/router';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-create-wallet',\r\n templateUrl: './create-wallet.component.html',\r\n styleUrls: ['./create-wallet.component.scss']\r\n})\r\nexport class CreateWalletComponent implements OnInit {\r\n\r\n createForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n password: new FormControl(''),\r\n confirm: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirm').value ? null : {'confirm_mismatch': true};\r\n });\r\n\r\n wallet = {\r\n id: ''\r\n };\r\n\r\n walletSaved = false;\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n createWallet() {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/seed-phrase'], {queryParams: {wallet_id: this.wallet.id}});\r\n });\r\n }\r\n\r\n saveWallet() {\r\n if (this.createForm.valid) {\r\n this.backend.saveFileDialog(this.translate.instant('CREATE_WALLET.TITLE_SAVE'), '*', this.variablesService.settings.default_path, (file_status, file_data) => {\r\n if (file_status) {\r\n this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/'));\r\n this.backend.generateWallet(file_data.path, this.createForm.get('password').value, (generate_status, generate_data, errorCode) => {\r\n if (generate_status) {\r\n this.wallet.id = generate_data.wallet_id;\r\n this.variablesService.opening_wallet = new Wallet(\r\n generate_data.wallet_id,\r\n this.createForm.get('name').value,\r\n this.createForm.get('password').value,\r\n generate_data['wi'].path,\r\n generate_data['wi'].address,\r\n generate_data['wi'].balance,\r\n generate_data['wi'].unlocked_balance,\r\n generate_data['wi'].mined_total,\r\n generate_data['wi'].tracking_hey\r\n );\r\n this.ngZone.run(() => {\r\n this.walletSaved = true;\r\n });\r\n } else {\r\n if (errorCode && errorCode === 'ALREADY_EXISTS') {\r\n this.modalService.prepareModal('error', 'CREATE_WALLET.ERROR_CANNOT_SAVE_TOP');\r\n } else {\r\n this.modalService.prepareModal('error', 'CREATE_WALLET.ERROR_CANNOT_SAVE_SYSTEM');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.EDIT_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
0 && notEnoughMoney\\\">\\r\\n {{ 'EDIT_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"EDIT_ALIAS.COST\\\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \".form-edit {\\n margin: 2.4rem 0; }\\n .form-edit .alias-name {\\n width: 50%; }\\n .form-edit .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-edit .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-edit .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZWRpdC1hbGlhcy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxlZGl0LWFsaWFzXFxlZGl0LWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL2VkaXQtYWxpYXMvZWRpdC1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWVkaXQge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-edit-alias',\r\n templateUrl: './edit-alias.component.html',\r\n styleUrls: ['./edit-alias.component.scss']\r\n})\r\nexport class EditAliasComponent implements OnInit {\r\n\r\n wallet: Wallet;\r\n alias: any;\r\n oldAliasComment: string;\r\n notEnoughMoney: boolean;\r\n requestProcessing = false;\r\n\r\n constructor(\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n this.alias = {\r\n name: alias.name,\r\n address: alias.address,\r\n comment: alias.comment\r\n };\r\n this.oldAliasComment = alias.comment;\r\n this.notEnoughMoney = this.wallet.unlocked_balance.isLessThan(this.variablesService.default_fee_big);\r\n }\r\n\r\n updateAlias() {\r\n if (this.requestProcessing || this.notEnoughMoney || this.oldAliasComment === this.alias.comment) {\r\n return;\r\n }\r\n this.requestProcessing = true;\r\n this.backend.updateAlias(this.wallet.wallet_id, this.alias, this.variablesService.default_fee, (status) => {\r\n if (status) {\r\n this.modalService.prepareModal('success', '');\r\n this.wallet.alias['comment'] = this.alias.comment;\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n this.requestProcessing = false;\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'HISTORY.STATUS' | translate }}{{ 'HISTORY.DATE' | translate }}{{ 'HISTORY.AMOUNT' | translate }}{{ 'HISTORY.FEE' | translate }}{{ 'HISTORY.ADDRESS' | translate }}
\\r\\n
\\r\\n 0\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ (item.is_income ? 'HISTORY.RECEIVED' : 'HISTORY.SEND') | translate }}\\r\\n
\\r\\n
{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}\\r\\n {{item.sortAmount | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n \\r\\n {{item.sortFee | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n \\r\\n {{item | historyTypeMessages}}\\r\\n {{item.remote_addresses[0]}}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-table {\\n margin: -3rem; }\\n\\n.wrap-table table tbody tr td {\\n min-width: 10rem; }\\n\\n.wrap-table table tbody tr .status {\\n position: relative;\\n display: flex;\\n align-items: center; }\\n\\n.wrap-table table tbody tr .status .confirmation {\\n position: absolute;\\n top: 50%;\\n left: -2rem;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n display: flex;\\n align-items: flex-end;\\n width: 0.7rem;\\n height: 1.5rem; }\\n\\n.wrap-table table tbody tr .status .confirmation .fill {\\n width: 100%; }\\n\\n.wrap-table table tbody tr .status .icon {\\n margin-right: 1rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-table table tbody tr .status.send .icon {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .status.received .icon {\\n -webkit-mask: url('receive.svg') no-repeat center;\\n mask: url('receive.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .remote-address {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 25vw; }\\n\\n.wrap-table table tbody tr:not(.transaction-details) {\\n cursor: pointer; }\\n\\n.wrap-table table tbody tr.transaction-details {\\n transition: 0.5s height linear, 0s font-size;\\n transition-delay: 0s, 0.5s;\\n height: 0; }\\n\\n.wrap-table table tbody tr.transaction-details.open {\\n height: 13.2rem; }\\n\\n.wrap-table table tbody tr.transaction-details td {\\n position: relative;\\n overflow: hidden;\\n line-height: inherit;\\n padding-top: 0;\\n padding-bottom: 0; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaGlzdG9yeS9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxoaXN0b3J5XFxoaXN0b3J5LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYSxFQUFBOztBQURmO0lBVVUsZ0JBQWdCLEVBQUE7O0FBVjFCO0lBY1Usa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixtQkFBbUIsRUFBQTs7QUFoQjdCO01BbUJZLGtCQUFrQjtNQUNsQixRQUFRO01BQ1IsV0FBVztNQUNYLG1DQUEyQjtjQUEzQiwyQkFBMkI7TUFDM0IsYUFBYTtNQUNiLHFCQUFxQjtNQUNyQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQTFCMUI7UUE2QmMsV0FBVyxFQUFBOztBQTdCekI7TUFrQ1ksa0JBQWtCO01BQ2xCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBcEMxQjtNQTBDYyw4Q0FBdUQ7Y0FBdkQsc0NBQXVELEVBQUE7O0FBMUNyRTtNQWlEYyxpREFBMEQ7Y0FBMUQseUNBQTBELEVBQUE7O0FBakR4RTtJQXVEVSxnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLGVBQWUsRUFBQTs7QUF6RHpCO0lBNkRVLGVBQWUsRUFBQTs7QUE3RHpCO0lBa0VVLDRDQUE0QztJQUM1QywwQkFBMEI7SUFDMUIsU0FBUyxFQUFBOztBQXBFbkI7TUF1RVksZUFBZSxFQUFBOztBQXZFM0I7TUEyRVksa0JBQWtCO01BQ2xCLGdCQUFnQjtNQUNoQixvQkFBb0I7TUFDcEIsY0FBYztNQUNkLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvaGlzdG9yeS9oaXN0b3J5LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ud3JhcC10YWJsZSB7XHJcbiAgbWFyZ2luOiAtM3JlbTtcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuXHJcbiAgICAgICAgdGQge1xyXG4gICAgICAgICAgbWluLXdpZHRoOiAxMHJlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMge1xyXG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgLmNvbmZpcm1hdGlvbiB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgIGxlZnQ6IC0ycmVtO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICAgICAgICAgICAgd2lkdGg6IDAuN3JlbTtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxLjVyZW07XHJcblxyXG4gICAgICAgICAgICAuZmlsbCB7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaWNvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgICAgICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJi5zZW5kICB7XHJcblxyXG4gICAgICAgICAgICAuaWNvbiB7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9zZW5kLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYucmVjZWl2ZWQge1xyXG5cclxuICAgICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvcmVjZWl2ZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5yZW1vdGUtYWRkcmVzcyB7XHJcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICAgICAgICBtYXgtd2lkdGg6IDI1dnc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOm5vdCgudHJhbnNhY3Rpb24tZGV0YWlscykge1xyXG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi50cmFuc2FjdGlvbi1kZXRhaWxzIHtcclxuICAgICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogMC41cyBoZWlnaHQgbGluZWFyLCAwcyBmb250LXNpemU7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiAwLjVzIGhlaWdodCBsaW5lYXIsIDBzIGZvbnQtc2l6ZTtcclxuICAgICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzLCAwLjVzO1xyXG4gICAgICAgICAgaGVpZ2h0OiAwO1xyXG5cclxuICAgICAgICAgICYub3BlbiB7XHJcbiAgICAgICAgICAgIGhlaWdodDogMTMuMnJlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0ZCB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xyXG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy, AfterViewChecked, ViewChild, ElementRef} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-history',\r\n templateUrl: './history.component.html',\r\n styleUrls: ['./history.component.scss']\r\n})\r\nexport class HistoryComponent implements OnInit, OnDestroy, AfterViewChecked {\r\n parentRouting;\r\n openedDetails = false;\r\n calculatedWidth = [];\r\n @ViewChild('head') head: ElementRef;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private variablesService: VariablesService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n this.openedDetails = false;\r\n });\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.calculateWidth();\r\n }\r\n\r\n getHeight(item) {\r\n if ((this.variablesService.height_app - item.height >= 10 && item.height !== 0) || (item.is_mining === true && item.height === 0)) {\r\n return 100;\r\n } else {\r\n if (item.height === 0 || this.variablesService.height_app - item.height < 0) {\r\n return 0;\r\n } else {\r\n return (this.variablesService.height_app - item.height) * 10;\r\n }\r\n }\r\n }\r\n\r\n openDetails(tx_hash) {\r\n if (tx_hash === this.openedDetails) {\r\n this.openedDetails = false;\r\n } else {\r\n this.openedDetails = tx_hash;\r\n }\r\n }\r\n\r\n calculateWidth() {\r\n this.calculatedWidth = [];\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[0].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[1].clientWidth + this.head.nativeElement.childNodes[2].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[3].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[4].clientWidth);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'LOGIN.FORM_ERRORS.PASS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'LOGIN.FORM_ERRORS.CONFIRM_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'LOGIN.FORM_ERRORS.MISMATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'LOGIN.FORM_ERRORS.PASS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%; }\\n :host .content {\\n display: flex; }\\n :host .content .wrap-login {\\n margin: auto;\\n width: 100%;\\n max-width: 40rem; }\\n :host .content .wrap-login .logo {\\n background: url('logo.svg') no-repeat center;\\n width: 100%;\\n height: 20rem; }\\n :host .content .wrap-login .form-login {\\n display: flex;\\n flex-direction: column; }\\n :host .content .wrap-login .form-login button {\\n margin: 2.5rem auto;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbG9naW4vRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbG9naW5cXGxvZ2luLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZUFBZTtFQUNmLE1BQU07RUFDTixPQUFPO0VBQ1AsV0FBVztFQUNYLFlBQVksRUFBQTtFQUxkO0lBUUksYUFBYSxFQUFBO0VBUmpCO01BV00sWUFBWTtNQUNaLFdBQVc7TUFDWCxnQkFBZ0IsRUFBQTtFQWJ0QjtRQWdCUSw0Q0FBNkQ7UUFDN0QsV0FBVztRQUNYLGFBQWEsRUFBQTtFQWxCckI7UUFzQlEsYUFBYTtRQUNiLHNCQUFzQixFQUFBO0VBdkI5QjtVQTBCVSxtQkFBbUI7VUFDbkIsV0FBVztVQUNYLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvbG9naW4vbG9naW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuXHJcbiAgLmNvbnRlbnQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICAud3JhcC1sb2dpbiB7XHJcbiAgICAgIG1hcmdpbjogYXV0bztcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogNDByZW07XHJcblxyXG4gICAgICAubG9nbyB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9sb2dvLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDIwcmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZm9ybS1sb2dpbiB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cclxuICAgICAgICBidXR0b24ge1xyXG4gICAgICAgICAgbWFyZ2luOiAyLjVyZW0gYXV0bztcclxuICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiAxNXJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\nexport class LoginComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n\r\n regForm = new FormGroup({\r\n password: new FormControl('', Validators.required),\r\n confirmation: new FormControl('', Validators.required)\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirmation').value ? null : {'mismatch': true};\r\n });\r\n\r\n authForm = new FormGroup({\r\n password: new FormControl('', Validators.required)\r\n });\r\n\r\n type = 'reg';\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.type) {\r\n this.type = params.type;\r\n }\r\n });\r\n }\r\n\r\n onSubmitCreatePass(): void {\r\n if (this.regForm.valid) {\r\n this.variablesService.appPass = this.regForm.get('password').value;\r\n this.backend.storeSecureAppData((status, data) => {\r\n if (status) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n } else {\r\n console.log(data['error_code']);\r\n }\r\n });\r\n }\r\n }\r\n\r\n onSubmitAuthPass(): void {\r\n if (this.authForm.valid) {\r\n const appPass = this.authForm.get('password').value;\r\n this.backend.getSecureAppData({pass: appPass}, (status, data) => {\r\n if (!data.error_code) {\r\n this.variablesService.startCountdown();\r\n this.variablesService.appPass = appPass;\r\n if (this.variablesService.wallets.length) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.variablesService.wallets[0].wallet_id]);\r\n });\r\n return;\r\n }\r\n if (Object.keys(data).length !== 0) {\r\n let openWallets = 0;\r\n let runWallets = 0;\r\n data.forEach((wallet, wallet_index) => {\r\n this.backend.openWallet(wallet.path, wallet.pass, true, (open_status, open_data) => {\r\n if (open_status) {\r\n openWallets++;\r\n this.backend.runWallet(open_data.wallet_id, (run_status) => {\r\n if (run_status) {\r\n runWallets++;\r\n this.ngZone.run(() => {\r\n const new_wallet = new Wallet(\r\n open_data.wallet_id,\r\n wallet.name,\r\n wallet.pass,\r\n open_data['wi'].path,\r\n open_data['wi'].address,\r\n open_data['wi'].balance,\r\n open_data['wi'].unlocked_balance,\r\n open_data['wi'].mined_total,\r\n open_data['wi'].tracking_hey\r\n );\r\n new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);\r\n if (open_data.recent_history && open_data.recent_history.history) {\r\n new_wallet.prepareHistory(open_data.recent_history.history);\r\n }\r\n this.backend.getContracts(open_data.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n new_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n\r\n this.variablesService.wallets.push(new_wallet);\r\n if (this.variablesService.wallets.length === 1) {\r\n this.router.navigate(['/wallet/' + this.variablesService.wallets[0].wallet_id]);\r\n }\r\n });\r\n } else {\r\n if (wallet_index === data.length - 1 && runWallets === 0) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n // console.log(run_data['error_code']);\r\n }\r\n });\r\n } else {\r\n if (wallet_index === data.length - 1 && openWallets === 0) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n

{{ 'MAIN.TITLE' | translate }}

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'MAIN.HELP' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n flex: 1 0 auto;\\n padding: 3rem; }\\n\\n.content {\\n padding: 3rem;\\n min-height: 100%; }\\n\\n.add-wallet .add-wallet-title {\\n margin-bottom: 1rem; }\\n\\n.add-wallet .add-wallet-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin: 0 -0.5rem;\\n padding: 1.5rem 0; }\\n\\n.add-wallet .add-wallet-buttons button {\\n flex: 1 0 auto;\\n margin: 0 0.5rem; }\\n\\n.add-wallet .add-wallet-help {\\n display: flex;\\n cursor: pointer;\\n font-size: 1.3rem;\\n line-height: 1.4rem; }\\n\\n.add-wallet .add-wallet-help .icon {\\n -webkit-mask: url('howto.svg') no-repeat center;\\n mask: url('howto.svg') no-repeat center;\\n margin-right: 0.8rem;\\n width: 1.4rem;\\n height: 1.4rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWFpbi9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxtYWluXFxtYWluLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsY0FBYztFQUNkLGFBQWEsRUFBQTs7QUFHZjtFQUNFLGFBQWE7RUFDYixnQkFBZ0IsRUFBQTs7QUFHbEI7RUFHSSxtQkFBbUIsRUFBQTs7QUFIdkI7RUFPSSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLDhCQUE4QjtFQUM5QixpQkFBaUI7RUFDakIsaUJBQWlCLEVBQUE7O0FBWHJCO0lBY00sY0FBYztJQUNkLGdCQUFnQixFQUFBOztBQWZ0QjtFQW9CSSxhQUFhO0VBQ2IsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixtQkFBbUIsRUFBQTs7QUF2QnZCO0lBMEJNLCtDQUF3RDtZQUF4RCx1Q0FBd0Q7SUFDeEQsb0JBQW9CO0lBQ3BCLGFBQWE7SUFDYixjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9tYWluL21haW4uY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZmxleDogMSAwIGF1dG87XHJcbiAgcGFkZGluZzogM3JlbTtcclxufVxyXG5cclxuLmNvbnRlbnQge1xyXG4gIHBhZGRpbmc6IDNyZW07XHJcbiAgbWluLWhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLmFkZC13YWxsZXQge1xyXG5cclxuICAuYWRkLXdhbGxldC10aXRsZSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgLmFkZC13YWxsZXQtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbjogMCAtMC41cmVtO1xyXG4gICAgcGFkZGluZzogMS41cmVtIDA7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZmxleDogMSAwIGF1dG87XHJcbiAgICAgIG1hcmdpbjogMCAwLjVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWRkLXdhbGxldC1oZWxwIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjRyZW07XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2hvd3RvLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjhyZW07XHJcbiAgICAgIHdpZHRoOiAxLjRyZW07XHJcbiAgICAgIGhlaWdodDogMS40cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Router} from '@angular/router';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-main',\r\n templateUrl: './main.component.html',\r\n styleUrls: ['./main.component.scss']\r\n})\r\nexport class MainComponent implements OnInit {\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n openWallet() {\r\n this.backend.openFileDialog(this.translate.instant('MAIN.CHOOSE_PATH'), '*', this.variablesService.settings.default_path, (file_status, file_data) => {\r\n if (file_status) {\r\n this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/'));\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/open'], {queryParams: {path: file_data.path}});\r\n });\r\n } else {\r\n console.log(file_data['error_code']);\r\n }\r\n });\r\n }\r\n\r\n openInBrowser() {\r\n this.backend.openUrlInBrowser('zano.org');\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'MESSAGES.ADDRESS' | translate }}{{ 'MESSAGES.MESSAGE' | translate }}
\\r\\n {{message.address}}\\r\\n \\r\\n \\r\\n {{message.message}}\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-table {\\n margin: -3rem; }\\n\\n.wrap-table table tbody tr td:first-child {\\n position: relative;\\n padding-right: 5rem;\\n width: 18rem; }\\n\\n.wrap-table table tbody tr td:first-child span {\\n display: block;\\n line-height: 3.5rem;\\n max-width: 10rem; }\\n\\n.wrap-table table tbody tr td:first-child .icon {\\n position: absolute;\\n top: 50%;\\n right: 1rem;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n display: block;\\n -webkit-mask: url('alert.svg') no-repeat 0;\\n mask: url('alert.svg') no-repeat 0;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWVzc2FnZXMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbWVzc2FnZXNcXG1lc3NhZ2VzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYSxFQUFBOztBQURmO0lBWVksa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixZQUFZLEVBQUE7O0FBZHhCO01BaUJjLGNBQWM7TUFDZCxtQkFBbUI7TUFDbkIsZ0JBQWdCLEVBQUE7O0FBbkI5QjtNQXVCYyxrQkFBa0I7TUFDbEIsUUFBUTtNQUNSLFdBQVc7TUFDWCxtQ0FBMkI7Y0FBM0IsMkJBQTJCO01BQzNCLGNBQWM7TUFDZCwwQ0FBbUQ7Y0FBbkQsa0NBQW1EO01BQ25ELGFBQWE7TUFDYixjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9tZXNzYWdlcy9tZXNzYWdlcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLndyYXAtdGFibGUge1xyXG4gIG1hcmdpbjogLTNyZW07XHJcblxyXG4gIHRhYmxlIHtcclxuXHJcbiAgICB0Ym9keSB7XHJcblxyXG4gICAgICB0ciB7XHJcblxyXG4gICAgICAgIHRkIHtcclxuXHJcbiAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cmVtO1xyXG4gICAgICAgICAgICB3aWR0aDogMThyZW07XHJcblxyXG4gICAgICAgICAgICBzcGFuIHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMy41cmVtO1xyXG4gICAgICAgICAgICAgIG1heC13aWR0aDogMTByZW07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgICAgcmlnaHQ6IDFyZW07XHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvYWxlcnQuc3ZnKSBuby1yZXBlYXQgMDtcclxuICAgICAgICAgICAgICB3aWR0aDogMS4ycmVtO1xyXG4gICAgICAgICAgICAgIGhlaWdodDogMS4ycmVtO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-messages',\r\n templateUrl: './messages.component.html',\r\n styleUrls: ['./messages.component.scss']\r\n})\r\nexport class MessagesComponent implements OnInit {\r\n\r\n messages = [\r\n {\r\n is_new: true,\r\n address: '@bitmap',\r\n message: 'No more miners for you!'\r\n },\r\n {\r\n is_new: false,\r\n address: 'Hjkwey36gHasdhkajshd4bxnb5mcvowyefb2633FdsFGGWbb',\r\n message: 'Hey! What’s with our BBR deal?'\r\n },\r\n {\r\n is_new: false,\r\n address: '@john',\r\n message: 'I’m coming!'\r\n }\r\n ];\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.OPEN_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n \\r\\n {{ 'COMMON.BACK' | translate }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\"","module.exports = \".form-open {\\n margin: 2.4rem 0;\\n width: 50%; }\\n .form-open .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem; }\\n .form-open .wrap-buttons button {\\n margin: 0 0.7rem; }\\n .form-open .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcb3Blbi13YWxsZXRcXG9wZW4td2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTtFQUZaO0lBS0ksYUFBYTtJQUNiLHNCQUFzQixFQUFBO0VBTjFCO01BU00sZ0JBQWdCLEVBQUE7RUFUdEI7UUFZUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9vcGVuLXdhbGxldC9vcGVuLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLW9wZW4ge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-open-wallet',\r\n templateUrl: './open-wallet.component.html',\r\n styleUrls: ['./open-wallet.component.scss']\r\n})\r\nexport class OpenWalletComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n filePath: string;\r\n\r\n openForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n password: new FormControl('')\r\n });\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.path) {\r\n this.filePath = params.path;\r\n let filename = '';\r\n if (params.path.lastIndexOf('.') === -1) {\r\n filename = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n } else {\r\n filename = params.path.substr(params.path.lastIndexOf('/') + 1, params.path.lastIndexOf('.') - 1 - params.path.lastIndexOf('/'));\r\n }\r\n if (filename.length > 25) {\r\n filename = filename.slice(0, 25);\r\n }\r\n this.openForm.get('name').setValue(filename);\r\n this.openForm.get('name').markAsTouched();\r\n }\r\n });\r\n }\r\n\r\n openWallet() {\r\n if (this.openForm.valid) {\r\n this.backend.openWallet(this.filePath, this.openForm.get('password').value, false, (open_status, open_data, open_error) => {\r\n if (open_error && open_error === 'FILE_NOT_FOUND') {\r\n let error_translate = this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND1');\r\n error_translate += ':
' + this.filePath;\r\n error_translate += this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND2');\r\n this.modalService.prepareModal('error', error_translate);\r\n } else {\r\n if (open_status || open_error === 'FILE_RESTORED') {\r\n\r\n let exists = false;\r\n this.variablesService.wallets.forEach((wallet) => {\r\n if (wallet.address === open_data['wi'].address) {\r\n exists = true;\r\n }\r\n });\r\n\r\n if (exists) {\r\n this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');\r\n this.backend.closeWallet(open_data.wallet_id, (close_status, close_data) => {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n });\r\n } else {\r\n this.backend.runWallet(open_data.wallet_id, (run_status, run_data) => {\r\n if (run_status) {\r\n const new_wallet = new Wallet(\r\n open_data.wallet_id,\r\n this.openForm.get('name').value,\r\n this.openForm.get('password').value,\r\n open_data['wi'].path,\r\n open_data['wi'].address,\r\n open_data['wi'].balance,\r\n open_data['wi'].unlocked_balance,\r\n open_data['wi'].mined_total,\r\n open_data['wi'].tracking_hey\r\n );\r\n new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);\r\n if (open_data.recent_history && open_data.recent_history.history) {\r\n new_wallet.prepareHistory(open_data.recent_history.history);\r\n }\r\n this.backend.getContracts(open_data.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n new_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.variablesService.wallets.push(new_wallet);\r\n this.backend.storeSecureAppData((status, data) => {\r\n console.log('Store App Data', status, data);\r\n });\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + open_data.wallet_id]);\r\n });\r\n } else {\r\n console.log(run_data['error_code']);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n {{ 'BREADCRUMBS.CONTRACTS' | translate }}\\r\\n {{ 'BREADCRUMBS.NEW_PURCHASE' | translate }}\\r\\n {{ 'BREADCRUMBS.OLD_PURCHASE' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.DESC_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
= 100\\\">\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_SAME' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.YOUR_DEPOSIT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_DEPOSIT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
= 100\\\">\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.NEED_MONEY' | translate }}\\r\\n \\r\\n\\r\\n \\r\\n {{ 'PURCHASE.WAITING_SELLER' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.IGNORED_SELLER' | translate }}\\r\\n {{ 'PURCHASE.PLEDGE_UNBLOCKED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.WAITING_SHIP' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.IGNORED_CANCEL_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.EXPIRED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.WAIT' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.WAITING_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.COMPLETED' | translate }}\\r\\n {{ 'PURCHASE.RECEIVED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.NOT_RECEIVED' | translate }}\\r\\n {{ 'PURCHASE.NULLIFIED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.PROPOSAL_CANCEL_SELLER' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.BEING_CANCELLED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.CANCELLED' | translate }}\\r\\n {{ 'PURCHASE.PLEDGES_RETURNED' | translate }}\\r\\n \\r\\n\\r\\n \\r\\n {{ 'PURCHASE.WAITING_BUYER' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.IGNORED_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.IGNORED_CANCEL_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.EXPIRED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.WAIT' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.BUYER_WAIT' | translate }}\\r\\n {{ 'PURCHASE.PLEDGES_MADE' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.COMPLETED' | translate }}\\r\\n {{ 'PURCHASE.RECEIVED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.NOT_RECEIVED' | translate }}\\r\\n {{ 'PURCHASE.NULLIFIED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.PROPOSAL_CANCEL_BUYER' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.BEING_CANCELLED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.CANCELLED' | translate }}\\r\\n {{ 'PURCHASE.PLEDGES_RETURNED' | translate }}\\r\\n \\r\\n\\r\\n \\r\\n 0/10\\r\\n {{variablesService.height_app - currentContract.height}}/10\\r\\n {{(historyBlock.is_income ? '+' : '') + (historyBlock.sortAmount | intToMoney)}} {{variablesService.defaultCurrency}}\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.PROGRESS_NEW' | translate }}\\r\\n {{ 'PURCHASE.PROGRESS_WAIT' | translate }}\\r\\n {{ 'PURCHASE.PROGRESS_COMPLETE' | translate }}\\r\\n
\\r\\n
\\r\\n {{currentContract.expiration_time | contractTimeLeft: 0}}\\r\\n {{currentContract.cancel_expiration_time | contractTimeLeft: 2}}\\r\\n {{currentContract.expiration_time | contractTimeLeft: 1}}\\r\\n {{currentContract.cancel_expiration_time | contractTimeLeft: 1}}\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.head {\\n flex: 0 0 auto;\\n box-sizing: content-box;\\n margin: -3rem -3rem 0; }\\n\\n.form-purchase {\\n flex: 1 1 auto;\\n margin: 1.5rem -3rem 0;\\n padding: 0 3rem;\\n overflow-y: overlay; }\\n\\n.form-purchase .input-blocks-row {\\n display: flex; }\\n\\n.form-purchase .input-blocks-row .input-block {\\n flex-basis: 50%; }\\n\\n.form-purchase .input-blocks-row .input-block:first-child {\\n margin-right: 1.5rem; }\\n\\n.form-purchase .input-blocks-row .input-block:last-child {\\n margin-left: 1.5rem; }\\n\\n.form-purchase .input-blocks-row .input-block .checkbox-block {\\n display: flex; }\\n\\n.form-purchase .purchase-select {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-size: 1.3rem;\\n line-height: 1.3rem;\\n margin: 1.5rem 0 0;\\n padding: 0;\\n width: 100%;\\n max-width: 15rem;\\n height: 1.3rem; }\\n\\n.form-purchase .purchase-select .arrow {\\n margin-left: 1rem;\\n width: 0.8rem;\\n height: 0.8rem; }\\n\\n.form-purchase .purchase-select .arrow.down {\\n -webkit-mask: url('arrow-down.svg') no-repeat center;\\n mask: url('arrow-down.svg') no-repeat center; }\\n\\n.form-purchase .purchase-select .arrow.up {\\n -webkit-mask: url('arrow-up.svg') no-repeat center;\\n mask: url('arrow-up.svg') no-repeat center; }\\n\\n.form-purchase .additional-details {\\n display: flex;\\n margin-top: 1.5rem;\\n padding: 0.5rem 0 2rem; }\\n\\n.form-purchase .additional-details > div {\\n flex-basis: 25%; }\\n\\n.form-purchase .additional-details > div:first-child {\\n padding-left: 1.5rem;\\n padding-right: 1rem; }\\n\\n.form-purchase .additional-details > div:last-child {\\n padding-left: 1rem;\\n padding-right: 1.5rem; }\\n\\n.form-purchase .purchase-states {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n font-size: 1.2rem;\\n line-height: 2.9rem; }\\n\\n.form-purchase .send-button {\\n margin: 2.4rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n.form-purchase .purchase-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.4rem -0.5rem;\\n width: calc(100% + 1rem); }\\n\\n.form-purchase .purchase-buttons button {\\n flex: 0 1 33%;\\n margin: 0 0.5rem; }\\n\\n.progress-bar-container {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n padding: 0 3rem;\\n width: 100%;\\n height: 3rem; }\\n\\n.progress-bar-container .progress-bar {\\n position: absolute;\\n top: -0.7rem;\\n left: 0;\\n margin: 0 3rem;\\n width: calc(100% - 6rem);\\n height: 0.7rem; }\\n\\n.progress-bar-container .progress-bar .progress-bar-full {\\n height: 0.7rem; }\\n\\n.progress-bar-container .progress-labels {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n font-size: 1.2rem;\\n height: 100%; }\\n\\n.progress-bar-container .progress-labels span {\\n flex: 1 0 0;\\n text-align: center; }\\n\\n.progress-bar-container .progress-labels span:first-child {\\n text-align: left; }\\n\\n.progress-bar-container .progress-labels span:last-child {\\n text-align: right; }\\n\\n.progress-bar-container .progress-time {\\n position: absolute;\\n top: -3rem;\\n left: 50%;\\n -webkit-transform: translateX(-50%);\\n transform: translateX(-50%);\\n font-size: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHVyY2hhc2UvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccHVyY2hhc2VcXHB1cmNoYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGNBQWM7RUFDZCxzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLG1CQUFtQixFQUFBOztBQUpyQjtJQU9JLGFBQWEsRUFBQTs7QUFQakI7TUFVTSxlQUFlLEVBQUE7O0FBVnJCO1FBYVEsb0JBQW9CLEVBQUE7O0FBYjVCO1FBaUJRLG1CQUFtQixFQUFBOztBQWpCM0I7UUFxQlEsYUFBYSxFQUFBOztBQXJCckI7SUEyQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLFVBQVU7SUFDVixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLGlCQUFpQjtNQUNqQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQTFDcEI7UUE2Q1Esb0RBQTREO2dCQUE1RCw0Q0FBNEQsRUFBQTs7QUE3Q3BFO1FBaURRLGtEQUEwRDtnQkFBMUQsMENBQTBELEVBQUE7O0FBakRsRTtJQXVESSxhQUFhO0lBQ2Isa0JBQWtCO0lBQ2xCLHNCQUFzQixFQUFBOztBQXpEMUI7TUE0RE0sZUFBZSxFQUFBOztBQTVEckI7UUErRFEsb0JBQW9CO1FBQ3BCLG1CQUFtQixFQUFBOztBQWhFM0I7UUFvRVEsa0JBQWtCO1FBQ2xCLHFCQUFxQixFQUFBOztBQXJFN0I7SUEyRUksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFoRnZCO0lBb0ZJLGdCQUFnQjtJQUNoQixXQUFXO0lBQ1gsZ0JBQWdCLEVBQUE7O0FBdEZwQjtJQTBGSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLHNCQUFzQjtJQUN0Qix3QkFBd0IsRUFBQTs7QUE3RjVCO01BZ0dNLGFBQWE7TUFDYixnQkFBZ0IsRUFBQTs7QUFLdEI7RUFDRSxrQkFBa0I7RUFDbEIsU0FBUztFQUNULE9BQU87RUFDUCxlQUFlO0VBQ2YsV0FBVztFQUNYLFlBQVksRUFBQTs7QUFOZDtJQVNJLGtCQUFrQjtJQUNsQixZQUFZO0lBQ1osT0FBTztJQUNQLGNBQWM7SUFDZCx3QkFBd0I7SUFDeEIsY0FBYyxFQUFBOztBQWRsQjtNQWlCTSxjQUFjLEVBQUE7O0FBakJwQjtJQXNCSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLDhCQUE4QjtJQUM5QixpQkFBaUI7SUFDakIsWUFBWSxFQUFBOztBQTFCaEI7TUE2Qk0sV0FBVztNQUNYLGtCQUFrQixFQUFBOztBQTlCeEI7UUFpQ1EsZ0JBQWdCLEVBQUE7O0FBakN4QjtRQXFDUSxpQkFBaUIsRUFBQTs7QUFyQ3pCO0lBMkNJLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsU0FBUztJQUNULG1DQUEyQjtZQUEzQiwyQkFBMkI7SUFDM0IsaUJBQWlCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9wdXJjaGFzZS9wdXJjaGFzZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5oZWFkIHtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxuICBtYXJnaW46IC0zcmVtIC0zcmVtIDA7XHJcbn1cclxuXHJcbi5mb3JtLXB1cmNoYXNlIHtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuICBtYXJnaW46IDEuNXJlbSAtM3JlbSAwO1xyXG4gIHBhZGRpbmc6IDAgM3JlbTtcclxuICBvdmVyZmxvdy15OiBvdmVybGF5O1xyXG5cclxuICAuaW5wdXQtYmxvY2tzLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAgIC5pbnB1dC1ibG9jayB7XHJcbiAgICAgIGZsZXgtYmFzaXM6IDUwJTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMS41cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5jaGVja2JveC1ibG9jayB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLXNlbGVjdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xyXG4gICAgbWFyZ2luOiAxLjVyZW0gMCAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiAxNXJlbTtcclxuICAgIGhlaWdodDogMS4zcmVtO1xyXG5cclxuICAgIC5hcnJvdyB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG4gICAgICB3aWR0aDogMC44cmVtO1xyXG4gICAgICBoZWlnaHQ6IDAuOHJlbTtcclxuXHJcbiAgICAgICYuZG93biB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LWRvd24uc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnVwIHtcclxuICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYXJyb3ctdXAuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWRkaXRpb25hbC1kZXRhaWxzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW07XHJcbiAgICBwYWRkaW5nOiAwLjVyZW0gMCAycmVtO1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZmxleC1iYXNpczogMjUlO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucHVyY2hhc2Utc3RhdGVzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZm9udC1zaXplOiAxLjJyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi45cmVtO1xyXG4gIH1cclxuXHJcbiAgLnNlbmQtYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgfVxyXG5cclxuICAucHVyY2hhc2UtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgbWFyZ2luOiAyLjRyZW0gLTAuNXJlbTtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAxcmVtKTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBmbGV4OiAwIDEgMzMlO1xyXG4gICAgICBtYXJnaW46IDAgMC41cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAzcmVtO1xyXG5cclxuICAucHJvZ3Jlc3MtYmFyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTAuN3JlbTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBtYXJnaW46IDAgM3JlbTtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2cmVtKTtcclxuICAgIGhlaWdodDogMC43cmVtO1xyXG5cclxuICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcbiAgICAgIGhlaWdodDogMC43cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2dyZXNzLWxhYmVscyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIHNwYW4ge1xyXG4gICAgICBmbGV4OiAxIDAgMDtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2dyZXNzLXRpbWUge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAtM3JlbTtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, OnDestroy, NgZone} from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Location} from '@angular/common';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-purchase',\r\n templateUrl: './purchase.component.html',\r\n styleUrls: ['./purchase.component.scss']\r\n})\r\nexport class PurchaseComponent implements OnInit, OnDestroy {\r\n currentWalletId;\r\n newPurchase = false;\r\n parentRouting;\r\n subRouting;\r\n historyBlock;\r\n\r\n purchaseForm = new FormGroup({\r\n description: new FormControl('', Validators.required),\r\n seller: new FormControl('', [Validators.required, (g: FormControl) => {\r\n if (g.value === this.variablesService.currentWallet.address) {\r\n return {'address_same': true};\r\n }\r\n return null;\r\n }, (g: FormControl) => {\r\n if (g.value) {\r\n this.backend.validateAddress(g.value, (valid_status) => {\r\n this.ngZone.run(() => {\r\n if (valid_status === false) {\r\n g.setErrors(Object.assign({'address_not_valid': true}, g.errors) );\r\n } else {\r\n if (g.hasError('address_not_valid')) {\r\n delete g.errors['address_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n return (g.hasError('address_not_valid')) ? {'address_not_valid': true} : null;\r\n }\r\n return null;\r\n }]),\r\n amount: new FormControl(null, Validators.required),\r\n yourDeposit: new FormControl(null, Validators.required),\r\n sellerDeposit: new FormControl(null, Validators.required),\r\n sameAmount: new FormControl({value: false, disabled: false}),\r\n comment: new FormControl(''),\r\n fee: new FormControl(this.variablesService.default_fee),\r\n time: new FormControl({value: '12', disabled: false}),\r\n timeCancel: new FormControl({value: '12', disabled: false}),\r\n payment: new FormControl('')\r\n });\r\n\r\n additionalOptions = false;\r\n currentContract = null;\r\n heightAppEvent;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private location: Location,\r\n private intToMoneyPipe: IntToMoneyPipe,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n checkAndChangeHistory() {\r\n if (this.currentContract.state === 201) {\r\n this.historyBlock = this.variablesService.currentWallet.history.find(item => item.tx_type === 8 && item.contract[0].contract_id === this.currentContract.contract_id && item.contract[0].is_a === this.currentContract.is_a);\r\n } else if (this.currentContract.state === 601) {\r\n this.historyBlock = this.variablesService.currentWallet.history.find(item => item.tx_type === 12 && item.contract[0].contract_id === this.currentContract.contract_id && item.contract[0].is_a === this.currentContract.is_a);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n this.currentWalletId = params['id'];\r\n });\r\n this.subRouting = this.route.params.subscribe(params => {\r\n if (params.hasOwnProperty('id')) {\r\n this.currentContract = this.variablesService.currentWallet.getContract(params['id']);\r\n this.purchaseForm.controls['seller'].setValidators([]);\r\n this.purchaseForm.updateValueAndValidity();\r\n this.purchaseForm.setValue({\r\n description: this.currentContract.private_detailes.t,\r\n seller: this.currentContract.private_detailes.b_addr,\r\n amount: this.intToMoneyPipe.transform(this.currentContract.private_detailes.to_pay),\r\n yourDeposit: this.intToMoneyPipe.transform(this.currentContract.private_detailes.a_pledge),\r\n sellerDeposit: this.intToMoneyPipe.transform(this.currentContract.private_detailes.b_pledge),\r\n sameAmount: this.currentContract.private_detailes.to_pay.isEqualTo(this.currentContract.private_detailes.b_pledge),\r\n comment: this.currentContract.private_detailes.c,\r\n fee: this.variablesService.default_fee,\r\n time: '12',\r\n timeCancel: '12',\r\n payment: this.currentContract.payment_id\r\n });\r\n this.purchaseForm.get('sameAmount').disable();\r\n this.newPurchase = false;\r\n\r\n if (this.currentContract.is_new) {\r\n if (this.currentContract.is_a && this.currentContract.state === 2) {\r\n this.currentContract.state = 120;\r\n }\r\n if (this.currentContract.state === 130 && this.currentContract.cancel_expiration_time !== 0 && this.currentContract.cancel_expiration_time < this.variablesService.exp_med_ts) {\r\n this.currentContract.state = 2;\r\n }\r\n\r\n this.variablesService.settings.viewedContracts = (this.variablesService.settings.viewedContracts) ? this.variablesService.settings.viewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.viewedContracts[j].state = this.currentContract.state;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.viewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: this.currentContract.state\r\n });\r\n }\r\n this.currentContract.is_new = false;\r\n\r\n setTimeout(() => {\r\n this.variablesService.currentWallet.recountNewContracts();\r\n }, 0);\r\n }\r\n this.checkAndChangeHistory();\r\n\r\n } else {\r\n this.newPurchase = true;\r\n }\r\n });\r\n this.heightAppEvent = this.variablesService.getHeightAppEvent.subscribe((newHeight: number) => {\r\n if (this.currentContract && this.currentContract.state === 201 && this.currentContract.height !== 0 && (newHeight - this.currentContract.height) >= 10) {\r\n this.currentContract.state = 2;\r\n this.currentContract.is_new = true;\r\n this.variablesService.currentWallet.recountNewContracts();\r\n } else if (this.currentContract && this.currentContract.state === 601 && this.currentContract.height !== 0 && (newHeight - this.currentContract.height) >= 10) {\r\n this.currentContract.state = 6;\r\n this.currentContract.is_new = true;\r\n this.variablesService.currentWallet.recountNewContracts();\r\n }\r\n if (!this.newPurchase && this.currentContract.is_a && (this.currentContract.state === 201 || this.currentContract.state === 2 || this.currentContract.state === 120 || this.currentContract.state === 130)) {\r\n if (this.currentContract.cancel_expiration_time === 0 && (this.currentContract.height === 0 || (this.variablesService.height_app - this.currentContract.height) < 10)) {\r\n this.purchaseForm.get('timeCancel').disable();\r\n } else {\r\n this.purchaseForm.get('timeCancel').enable();\r\n }\r\n }\r\n });\r\n }\r\n\r\n toggleOptions() {\r\n this.additionalOptions = !this.additionalOptions;\r\n }\r\n\r\n getProgressBarWidth() {\r\n let progress = '9rem';\r\n if (!this.newPurchase) {\r\n if (this.currentContract) {\r\n if ([110, 3, 4, 6, 140].indexOf(this.currentContract.state) !== -1) {\r\n progress = '100%';\r\n } else {\r\n progress = '50%';\r\n }\r\n }\r\n }\r\n return progress;\r\n }\r\n\r\n sameAmountChange() {\r\n if (this.purchaseForm.get('sameAmount').value) {\r\n this.purchaseForm.get('sellerDeposit').clearValidators();\r\n this.purchaseForm.get('sellerDeposit').updateValueAndValidity();\r\n } else {\r\n this.purchaseForm.get('sellerDeposit').setValidators([Validators.required]);\r\n this.purchaseForm.get('sellerDeposit').updateValueAndValidity();\r\n }\r\n }\r\n\r\n createPurchase() {\r\n if (this.purchaseForm.valid) {\r\n if (this.purchaseForm.get('sameAmount').value) {\r\n this.purchaseForm.get('sellerDeposit').setValue(this.purchaseForm.get('amount').value);\r\n }\r\n this.backend.createProposal(\r\n this.variablesService.currentWallet.wallet_id,\r\n this.purchaseForm.get('description').value,\r\n this.purchaseForm.get('comment').value,\r\n this.variablesService.currentWallet.address,\r\n this.purchaseForm.get('seller').value,\r\n this.purchaseForm.get('amount').value,\r\n this.purchaseForm.get('yourDeposit').value,\r\n this.purchaseForm.get('sellerDeposit').value,\r\n this.purchaseForm.get('time').value,\r\n this.purchaseForm.get('payment').value,\r\n (create_status) => {\r\n if (create_status) {\r\n this.back();\r\n }\r\n });\r\n }\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n acceptState() {\r\n this.backend.acceptProposal(this.currentWalletId, this.currentContract.contract_id, (accept_status) => {\r\n if (accept_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.ACCEPT_STATE_WAIT_BIG');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n ignoredContract() {\r\n this.variablesService.settings.notViewedContracts = (this.variablesService.settings.notViewedContracts) ? this.variablesService.settings.notViewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.notViewedContracts[j].state = 110;\r\n this.variablesService.settings.notViewedContracts[j].time = this.currentContract.expiration_time;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.notViewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: 110,\r\n time: this.currentContract.expiration_time\r\n });\r\n }\r\n this.currentContract.is_new = true;\r\n this.currentContract.state = 110;\r\n this.currentContract.time = this.currentContract.expiration_time;\r\n\r\n this.variablesService.currentWallet.recountNewContracts();\r\n this.modalService.prepareModal('info', 'PURCHASE.IGNORED_ACCEPT');\r\n this.back();\r\n }\r\n\r\n\r\n productNotGot() {\r\n this.backend.releaseProposal(this.currentWalletId, this.currentContract.contract_id, 'REL_B', (release_status) => {\r\n if (release_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.BURN_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsFinish() {\r\n this.backend.releaseProposal(this.currentWalletId, this.currentContract.contract_id, 'REL_N', (release_status) => {\r\n if (release_status) {\r\n this.modalService.prepareModal('success', 'PURCHASE.SUCCESS_FINISH_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsCancel() {\r\n this.backend.requestCancelContract(this.currentWalletId, this.currentContract.contract_id, this.purchaseForm.get('timeCancel').value, (cancel_status) => {\r\n if (cancel_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.SEND_CANCEL_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsDontCanceling() {\r\n this.variablesService.settings.notViewedContracts = this.variablesService.settings.notViewedContracts ? this.variablesService.settings.notViewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.notViewedContracts[j].state = 130;\r\n this.variablesService.settings.notViewedContracts[j].time = this.currentContract.cancel_expiration_time;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.notViewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: 130,\r\n time: this.currentContract.cancel_expiration_time\r\n });\r\n }\r\n this.currentContract.is_new = true;\r\n this.currentContract.state = 130;\r\n this.currentContract.time = this.currentContract.cancel_expiration_time;\r\n\r\n this.variablesService.currentWallet.recountNewContracts();\r\n this.modalService.prepareModal('info', 'PURCHASE.IGNORED_CANCEL');\r\n this.back();\r\n }\r\n\r\n dealsDetailsSellerCancel() {\r\n this.backend.acceptCancelContract(this.currentWalletId, this.currentContract.contract_id, (accept_status) => {\r\n if (accept_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.DEALS_CANCELED_WAIT');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.subRouting.unsubscribe();\r\n this.heightAppEvent.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\\"qr-code\\\"\\r\\n
\\r\\n
{{variablesService.currentWallet.address}}
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-qr {\\n display: flex;\\n flex-direction: column;\\n align-items: center; }\\n\\n.wrap-qr img {\\n margin: 4rem 0; }\\n\\n.wrap-qr .wrap-address {\\n display: flex;\\n align-items: center;\\n font-size: 1.4rem;\\n line-height: 2.7rem; }\\n\\n.wrap-qr .wrap-address .btn-copy-address {\\n margin-left: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copy {\\n -webkit-mask: url('copy.svg') no-repeat center;\\n mask: url('copy.svg') no-repeat center; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copy:hover {\\n opacity: 0.75; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copied {\\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\\n mask: url('complete-testwallet.svg') no-repeat center; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVjZWl2ZS9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxyZWNlaXZlXFxyZWNlaXZlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixtQkFBbUIsRUFBQTs7QUFIckI7SUFNSSxjQUFjLEVBQUE7O0FBTmxCO0lBVUksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsbUJBQW1CLEVBQUE7O0FBYnZCO01BZ0JNLG1CQUFtQjtNQUNuQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQWxCcEI7UUFxQlEsOENBQXVEO2dCQUF2RCxzQ0FBdUQsRUFBQTs7QUFyQi9EO1VBd0JVLGFBQWEsRUFBQTs7QUF4QnZCO1FBNkJRLDZEQUFzRTtnQkFBdEUscURBQXNFLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9yZWNlaXZlL3JlY2VpdmUuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi53cmFwLXFyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgaW1nIHtcclxuICAgIG1hcmdpbjogNHJlbSAwO1xyXG4gIH1cclxuXHJcbiAgLndyYXAtYWRkcmVzcyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuXHJcbiAgICAuYnRuLWNvcHktYWRkcmVzcyB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5jb3B5IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2NvcHkuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNzU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmNvcGllZCB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, OnDestroy} from '@angular/core';\r\nimport QRCode from 'qrcode';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-receive',\r\n templateUrl: './receive.component.html',\r\n styleUrls: ['./receive.component.scss']\r\n})\r\nexport class ReceiveComponent implements OnInit, OnDestroy {\r\n qrImageSrc: string;\r\n parentRouting;\r\n copyAnimation = false;\r\n copyAnimationTimeout;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n private variablesService: VariablesService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n QRCode.toDataURL(this.variablesService.currentWallet.address, {\r\n width: 106,\r\n height: 106\r\n }).then(url => {\r\n this.qrImageSrc = url;\r\n }).catch(err => {\r\n console.error(err);\r\n });\r\n });\r\n }\r\n\r\n public copyAddress() {\r\n this.backend.setClipboard(this.variablesService.currentWallet.address);\r\n this.copyAnimation = true;\r\n this.copyAnimationTimeout = window.setTimeout(() => {\r\n this.copyAnimation = false;\r\n }, 2000);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n clearTimeout(this.copyAnimationTimeout);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.RESTORE_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n \\r\\n {{ 'COMMON.BACK' | translate }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".form-restore {\\n margin: 2.4rem 0;\\n width: 100%; }\\n .form-restore .input-block.half-block {\\n width: 50%; }\\n .form-restore .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem;\\n width: 50%; }\\n .form-restore .wrap-buttons button {\\n margin: 0 0.7rem; }\\n .form-restore .wrap-buttons button.transparent-button {\\n flex-basis: 50%; }\\n .form-restore .wrap-buttons button.select-button {\\n flex-basis: 60%; }\\n .form-restore .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzdG9yZS13YWxsZXQvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccmVzdG9yZS13YWxsZXRcXHJlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCO0VBQ2hCLFdBQVcsRUFBQTtFQUZiO0lBT00sVUFBVSxFQUFBO0VBUGhCO0lBWUksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixVQUFVLEVBQUE7RUFkZDtNQWlCTSxnQkFBZ0IsRUFBQTtFQWpCdEI7UUFvQlEsZUFBZSxFQUFBO0VBcEJ2QjtRQXdCUSxlQUFlLEVBQUE7RUF4QnZCO1FBNEJRLGFBQWEsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3Jlc3RvcmUtd2FsbGV0L3Jlc3RvcmUtd2FsbGV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tcmVzdG9yZSB7XHJcbiAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmLmhhbGYtYmxvY2sge1xyXG4gICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuICAgIHdpZHRoOiA1MCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuXHJcbiAgICAgICYudHJhbnNwYXJlbnQtYnV0dG9uIHtcclxuICAgICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuc2VsZWN0LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNjAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmNyZWF0ZS1idXR0b24ge1xyXG4gICAgICAgIGZsZXg6IDEgMSA1MCU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-restore-wallet',\r\n templateUrl: './restore-wallet.component.html',\r\n styleUrls: ['./restore-wallet.component.scss']\r\n})\r\nexport class RestoreWalletComponent implements OnInit {\r\n\r\n restoreForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n key: new FormControl('', Validators.required),\r\n password: new FormControl(''),\r\n confirm: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirm').value ? null : {'confirm_mismatch': true};\r\n });\r\n\r\n wallet = {\r\n id: ''\r\n };\r\n\r\n walletSaved = false;\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n createWallet() {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/seed-phrase'], {queryParams: {wallet_id: this.wallet.id}});\r\n });\r\n }\r\n\r\n saveWallet() {\r\n if (this.restoreForm.valid) {\r\n this.backend.isValidRestoreWalletText(this.restoreForm.get('key').value, (valid_status, valid_data) => {\r\n\r\n if (valid_data === 'FALSE') {\r\n this.ngZone.run(() => {\r\n this.restoreForm.get('key').setErrors({key_not_valid: true});\r\n });\r\n } else {\r\n this.backend.saveFileDialog(this.translate.instant('RESTORE_WALLET.CHOOSE_PATH'), '*', this.variablesService.settings.default_path, (save_status, save_data) => {\r\n if (save_status) {\r\n this.variablesService.settings.default_path = save_data.path.substr(0, save_data.path.lastIndexOf('/'));\r\n this.backend.restoreWallet(save_data.path, this.restoreForm.get('password').value, this.restoreForm.get('key').value, (restore_status, restore_data) => {\r\n if (restore_status) {\r\n this.wallet.id = restore_data.wallet_id;\r\n this.variablesService.opening_wallet = new Wallet(\r\n restore_data.wallet_id,\r\n this.restoreForm.get('name').value,\r\n this.restoreForm.get('password').value,\r\n restore_data['wi'].path,\r\n restore_data['wi'].address,\r\n restore_data['wi'].balance,\r\n restore_data['wi'].unlocked_balance,\r\n restore_data['wi'].mined_total,\r\n restore_data['wi'].tracking_hey\r\n );\r\n this.variablesService.opening_wallet.alias = this.backend.getWalletAlias(this.variablesService.opening_wallet.address);\r\n if (restore_data.recent_history && restore_data.recent_history.history) {\r\n this.variablesService.opening_wallet.prepareHistory(restore_data.recent_history.history);\r\n }\r\n this.backend.getContracts(this.variablesService.opening_wallet.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n this.variablesService.opening_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.ngZone.run(() => {\r\n this.walletSaved = true;\r\n });\r\n } else {\r\n this.modalService.prepareModal('error', 'RESTORE_WALLET.NOT_CORRECT_FILE_OR_PASSWORD');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.SAVE_PHRASE' | translate }}\\r\\n
\\r\\n \\r\\n \\r\\n {{ 'COMMON.BACK' | translate }}\\r\\n \\r\\n
\\r\\n\\r\\n

{{ 'SEED_PHRASE.TITLE' | translate }}

\\r\\n\\r\\n
\\r\\n \\r\\n
{{(index + 1) + '. ' + word}}
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\"","module.exports = \".seed-phrase-title {\\n line-height: 2.2rem;\\n padding: 2.2rem 0; }\\n\\n.seed-phrase-content {\\n display: flex;\\n flex-direction: column;\\n flex-wrap: wrap;\\n padding: 1.4rem;\\n width: 100%;\\n height: 12rem; }\\n\\n.seed-phrase-content .word {\\n line-height: 2.2rem;\\n max-width: 13rem; }\\n\\nbutton {\\n margin: 2.8rem 0;\\n width: 25%;\\n min-width: 1.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VlZC1waHJhc2UvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2VlZC1waHJhc2VcXHNlZWQtcGhyYXNlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsbUJBQW1CO0VBQ25CLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLGVBQWU7RUFDZixXQUFXO0VBQ1gsYUFBYSxFQUFBOztBQU5mO0lBU0ksbUJBQW1CO0lBQ25CLGdCQUFnQixFQUFBOztBQUlwQjtFQUNFLGdCQUFnQjtFQUNoQixVQUFVO0VBQ1YsaUJBQWlCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zZWVkLXBocmFzZS9zZWVkLXBocmFzZS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5zZWVkLXBocmFzZS10aXRsZSB7XHJcbiAgbGluZS1oZWlnaHQ6IDIuMnJlbTtcclxuICBwYWRkaW5nOiAyLjJyZW0gMDtcclxufVxyXG5cclxuLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgcGFkZGluZzogMS40cmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTJyZW07XHJcblxyXG4gIC53b3JkIHtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjJyZW07XHJcbiAgICBtYXgtd2lkdGg6IDEzcmVtO1xyXG4gIH1cclxufVxyXG5cclxuYnV0dG9uIHtcclxuICBtYXJnaW46IDIuOHJlbSAwO1xyXG4gIHdpZHRoOiAyNSU7XHJcbiAgbWluLXdpZHRoOiAxLjVyZW07XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\n\r\n@Component({\r\n selector: 'app-seed-phrase',\r\n templateUrl: './seed-phrase.component.html',\r\n styleUrls: ['./seed-phrase.component.scss']\r\n})\r\nexport class SeedPhraseComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n seedPhrase = '';\r\n wallet_id: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.wallet_id) {\r\n this.wallet_id = params.wallet_id;\r\n this.backend.getSmartWalletInfo(params.wallet_id, (status, data) => {\r\n if (data.hasOwnProperty('restore_key')) {\r\n this.ngZone.run(() => {\r\n this.seedPhrase = data['restore_key'].trim();\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n runWallet() {\r\n let exists = false;\r\n this.variablesService.wallets.forEach((wallet) => {\r\n if (wallet.address === this.variablesService.opening_wallet.address) {\r\n exists = true;\r\n }\r\n });\r\n if (!exists) {\r\n this.backend.runWallet(this.wallet_id, (run_status, run_data) => {\r\n if (run_status) {\r\n this.variablesService.wallets.push(this.variablesService.opening_wallet);\r\n this.backend.storeSecureAppData((status, data) => {\r\n console.log('Store App Data', status, data);\r\n });\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet_id]);\r\n });\r\n } else {\r\n console.log(run_data['error_code']);\r\n }\r\n });\r\n } else {\r\n this.variablesService.opening_wallet = null;\r\n this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');\r\n this.backend.closeWallet(this.wallet_id, (close_status, close_data) => {\r\n console.log(close_status, close_data);\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.ADDRESS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.ADDRESS_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_ZERO' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.FEE_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.FEE_MINIMUM' | translate : {fee: variablesService.default_fee} }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.form-send .input-blocks-row {\\n display: flex; }\\n\\n.form-send .input-blocks-row > div {\\n flex-basis: 50%; }\\n\\n.form-send .input-blocks-row > div:first-child {\\n margin-right: 1.5rem; }\\n\\n.form-send .input-blocks-row > div:last-child {\\n margin-left: 1.5rem; }\\n\\n.form-send .send-select {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-size: 1.3rem;\\n line-height: 1.3rem;\\n margin: 1.5rem 0 0;\\n padding: 0;\\n width: 100%;\\n max-width: 15rem;\\n height: 1.3rem; }\\n\\n.form-send .send-select .arrow {\\n margin-left: 1rem;\\n width: 0.8rem;\\n height: 0.8rem; }\\n\\n.form-send .send-select .arrow.down {\\n -webkit-mask: url('arrow-down.svg') no-repeat center;\\n mask: url('arrow-down.svg') no-repeat center; }\\n\\n.form-send .send-select .arrow.up {\\n -webkit-mask: url('arrow-up.svg') no-repeat center;\\n mask: url('arrow-up.svg') no-repeat center; }\\n\\n.form-send .additional-details {\\n display: flex;\\n margin-top: 1.5rem;\\n padding: 0.5rem 0 2rem; }\\n\\n.form-send .additional-details > div {\\n flex-basis: 25%; }\\n\\n.form-send .additional-details > div:first-child {\\n padding-left: 1.5rem;\\n padding-right: 1rem; }\\n\\n.form-send .additional-details > div:last-child {\\n padding-left: 1rem;\\n padding-right: 1.5rem; }\\n\\n.form-send button {\\n margin: 2.4rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VuZC9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzZW5kXFxzZW5kLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsV0FBVyxFQUFBOztBQUdiO0VBR0ksYUFBYSxFQUFBOztBQUhqQjtJQU1NLGVBQWUsRUFBQTs7QUFOckI7TUFTUSxvQkFBb0IsRUFBQTs7QUFUNUI7TUFhUSxtQkFBbUIsRUFBQTs7QUFiM0I7RUFtQkksYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLGlCQUFpQjtFQUNqQixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLFVBQVU7RUFDVixXQUFXO0VBQ1gsZ0JBQWdCO0VBQ2hCLGNBQWMsRUFBQTs7QUE3QmxCO0lBZ0NNLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsY0FBYyxFQUFBOztBQWxDcEI7TUFxQ1Esb0RBQTREO2NBQTVELDRDQUE0RCxFQUFBOztBQXJDcEU7TUF5Q1Esa0RBQTBEO2NBQTFELDBDQUEwRCxFQUFBOztBQXpDbEU7RUErQ0ksYUFBYTtFQUNiLGtCQUFrQjtFQUNsQixzQkFBc0IsRUFBQTs7QUFqRDFCO0lBb0RNLGVBQWUsRUFBQTs7QUFwRHJCO01BdURRLG9CQUFvQjtNQUNwQixtQkFBbUIsRUFBQTs7QUF4RDNCO01BNERRLGtCQUFrQjtNQUNsQixxQkFBcUIsRUFBQTs7QUE3RDdCO0VBbUVJLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zZW5kL3NlbmQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5mb3JtLXNlbmQge1xyXG5cclxuICAuaW5wdXQtYmxvY2tzLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZmxleC1iYXNpczogNTAlO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNlbmQtc2VsZWN0IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjNyZW07XHJcbiAgICBtYXJnaW46IDEuNXJlbSAwIDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gICAgaGVpZ2h0OiAxLjNyZW07XHJcblxyXG4gICAgLmFycm93IHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgICAgIHdpZHRoOiAwLjhyZW07XHJcbiAgICAgIGhlaWdodDogMC44cmVtO1xyXG5cclxuICAgICAgJi5kb3duIHtcclxuICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYXJyb3ctZG93bi5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYudXAge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy11cC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5hZGRpdGlvbmFsLWRldGFpbHMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcclxuICAgIHBhZGRpbmc6IDAuNXJlbSAwIDJyZW07XHJcblxyXG4gICAgPiBkaXYge1xyXG4gICAgICBmbGV4LWJhc2lzOiAyNSU7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, OnDestroy, NgZone} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Component({\r\n selector: 'app-send',\r\n templateUrl: './send.component.html',\r\n styleUrls: ['./send.component.scss']\r\n})\r\nexport class SendComponent implements OnInit, OnDestroy {\r\n\r\n currentWalletId = null;\r\n parentRouting;\r\n sendForm = new FormGroup({\r\n address: new FormControl('', [Validators.required, (g: FormControl) => {\r\n if (g.value) {\r\n this.backend.validateAddress(g.value, (valid_status) => {\r\n this.ngZone.run(() => {\r\n if (valid_status === false) {\r\n g.setErrors(Object.assign({'address_not_valid': true}, g.errors) );\r\n } else {\r\n if (g.hasError('address_not_valid')) {\r\n delete g.errors['address_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n return (g.hasError('address_not_valid')) ? {'address_not_valid': true} : null;\r\n }\r\n return null;\r\n }]),\r\n amount: new FormControl(null, [Validators.required, (g: FormControl) => {\r\n if (new BigNumber(g.value).eq(0)) {\r\n return {'zero': true};\r\n }\r\n return null;\r\n }]),\r\n comment: new FormControl(null),\r\n mixin: new FormControl(0, Validators.required),\r\n fee: new FormControl(this.variablesService.default_fee, [Validators.required, (g: FormControl) => {\r\n if ((new BigNumber(g.value)).isLessThan(this.variablesService.default_fee)) {\r\n return {'less_min': true};\r\n }\r\n return null;\r\n }])\r\n });\r\n additionalOptions = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n this.currentWalletId = params['id'];\r\n this.sendForm.reset({\r\n address: this.variablesService.currentWallet.send_data['address'],\r\n amount: this.variablesService.currentWallet.send_data['amount'],\r\n comment: this.variablesService.currentWallet.send_data['comment'],\r\n mixin: this.variablesService.currentWallet.send_data['mixin'] || 0,\r\n fee: this.variablesService.currentWallet.send_data['fee'] || this.variablesService.default_fee\r\n });\r\n });\r\n }\r\n\r\n onSend() {\r\n if (this.sendForm.valid) {\r\n this.backend.validateAddress(this.sendForm.get('address').value, (valid_status) => {\r\n if (valid_status === false) {\r\n this.ngZone.run(() => {\r\n this.sendForm.get('address').setErrors({address_not_valid: true});\r\n });\r\n } else {\r\n this.backend.sendMoney(\r\n this.currentWalletId,\r\n this.sendForm.get('address').value,\r\n this.sendForm.get('amount').value,\r\n this.sendForm.get('fee').value,\r\n this.sendForm.get('mixin').value,\r\n this.sendForm.get('comment').value,\r\n (send_status, send_data) => {\r\n if (send_status) {\r\n this.modalService.prepareModal('success', 'SEND.SUCCESS_SENT');\r\n this.variablesService.currentWallet.send_data = {address: null, amount: null, comment: null, mixin: null, fee: null};\r\n this.sendForm.reset({address: null, amount: null, comment: null, mixin: 0, fee: this.variablesService.default_fee});\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleOptions() {\r\n this.additionalOptions = !this.additionalOptions;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.variablesService.currentWallet.send_data = {\r\n address: this.sendForm.get('address').value,\r\n amount: this.sendForm.get('amount').value,\r\n comment: this.sendForm.get('comment').value,\r\n mixin: this.sendForm.get('mixin').value,\r\n fee: this.sendForm.get('fee').value\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n

{{ 'SETTINGS.TITLE' | translate }}

\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n {{ 'SETTINGS.MASTER_PASSWORD.TITLE' | translate }}\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.PASS_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
{{ 'SETTINGS.LAST_BUILD' | translate : {value: variablesService.last_build_available} }}
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".head {\\n justify-content: flex-end; }\\n\\n.settings-title {\\n font-size: 1.7rem; }\\n\\n.theme-selection {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n margin: 2.4rem 0;\\n width: 50%; }\\n\\n.theme-selection .radio-block {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n font-size: 1.3rem;\\n line-height: 2.7rem; }\\n\\n.master-password {\\n width: 50%; }\\n\\n.master-password .master-password-title {\\n display: flex;\\n font-size: 1.5rem;\\n line-height: 2.7rem;\\n margin-bottom: 1rem; }\\n\\n.master-password button {\\n margin: 2.5rem auto;\\n width: 100%;\\n max-width: 15rem; }\\n\\n.last-build {\\n position: absolute;\\n bottom: 3rem;\\n right: 3rem;\\n font-size: 1.3rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2V0dGluZ3MvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2V0dGluZ3NcXHNldHRpbmdzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UseUJBQXlCLEVBQUE7O0FBRzNCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBR25CO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFMWjtJQVFJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsMkJBQTJCO0lBQzNCLGlCQUFpQjtJQUNqQixtQkFBbUIsRUFBQTs7QUFJdkI7RUFDRSxVQUFVLEVBQUE7O0FBRFo7SUFJSSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixtQkFBbUIsRUFBQTs7QUFQdkI7SUFXSSxtQkFBbUI7SUFDbkIsV0FBVztJQUNYLGdCQUFnQixFQUFBOztBQUlwQjtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztFQUNYLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuaGVhZCB7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxufVxyXG5cclxuLnNldHRpbmdzLXRpdGxlIHtcclxuICBmb250LXNpemU6IDEuN3JlbTtcclxufVxyXG5cclxuLnRoZW1lLXNlbGVjdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLnJhZGlvLWJsb2NrIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLm1hc3Rlci1wYXNzd29yZCB7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLm1hc3Rlci1wYXNzd29yZC10aXRsZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcclxuICB9XHJcblxyXG4gIGJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNXJlbSBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmxhc3QtYnVpbGQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBib3R0b206IDNyZW07XHJcbiAgcmlnaHQ6IDNyZW07XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbn1cclxuIl19 */\"","import {Component, OnInit, Renderer2} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {Location} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.scss']\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n theme: string;\r\n changeForm: any;\r\n\r\n constructor(private renderer: Renderer2, private variablesService: VariablesService, private backend: BackendService, private location: Location) {\r\n this.theme = this.variablesService.settings.theme;\r\n this.changeForm = new FormGroup({\r\n password: new FormControl('', Validators.required),\r\n new_password: new FormControl('', Validators.required),\r\n new_confirmation: new FormControl('', Validators.required)\r\n }, [(g: FormGroup) => {\r\n return g.get('new_password').value === g.get('new_confirmation').value ? null : {'confirm_mismatch': true};\r\n }, (g: FormGroup) => {\r\n return g.get('password').value === this.variablesService.appPass ? null : {'pass_mismatch': true};\r\n }]);\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n setTheme(theme) {\r\n this.renderer.removeClass(document.body, 'theme-' + this.theme);\r\n this.theme = theme;\r\n this.variablesService.settings.theme = this.theme;\r\n this.renderer.addClass(document.body, 'theme-' + this.theme);\r\n this.backend.storeAppData();\r\n }\r\n\r\n onSubmitChangePass() {\r\n if (this.changeForm.valid) {\r\n this.variablesService.appPass = this.changeForm.get('new_password').value;\r\n this.backend.storeSecureAppData((status, data) => {\r\n if (status) {\r\n this.changeForm.reset();\r\n } else {\r\n console.log(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n

{{ 'SIDEBAR.TITLE' | translate }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.OFFLINE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.SYNCING' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ONLINE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ variablesService.sync.progress_value_text }}%
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n flex: 0 0 25rem;\\n padding: 0 3rem 3rem; }\\n\\n.sidebar-accounts {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto; }\\n\\n.sidebar-accounts .sidebar-accounts-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex: 0 0 auto;\\n height: 8rem;\\n font-weight: 400; }\\n\\n.sidebar-accounts .sidebar-accounts-header h3 {\\n font-size: 1.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-header button {\\n background: transparent;\\n border: none;\\n outline: none; }\\n\\n.sidebar-accounts .sidebar-accounts-list {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto;\\n margin: 0 -3rem;\\n overflow-y: overlay; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account {\\n display: flex;\\n flex-direction: column;\\n flex-shrink: 0;\\n cursor: pointer;\\n padding: 2rem 3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance {\\n line-height: 2.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance .title {\\n font-size: 1.5rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance .balance {\\n font-size: 1.8rem;\\n font-weight: 600; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias {\\n font-size: 1.3rem;\\n line-height: 3.4rem;\\n margin-bottom: 0.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .icon {\\n margin-left: 0.5rem;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .icon.comment {\\n -webkit-mask: url('alert.svg') no-repeat center;\\n mask: url('alert.svg') no-repeat center; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-staking {\\n line-height: 2.9rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-staking .text {\\n font-size: 1.3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages {\\n line-height: 2.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages .text {\\n font-size: 1.3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages .indicator {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: 1rem;\\n font-size: 1rem;\\n min-width: 24px;\\n height: 16px;\\n padding: 0 5px; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\\n flex-direction: column;\\n height: 5.6rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .status {\\n align-self: flex-start;\\n font-size: 1.3rem;\\n line-height: 2.6rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container {\\n display: flex;\\n margin: 0.4rem 0;\\n height: 0.7rem;\\n width: 100%; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-bar {\\n flex: 1 0 auto; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-bar .fill {\\n height: 100%; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-percent {\\n flex: 0 0 auto;\\n font-size: 1.3rem;\\n line-height: 0.7rem;\\n padding-left: 0.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account:focus {\\n outline: none; }\\n\\n.sidebar-settings {\\n flex: 0 0 auto;\\n padding-bottom: 1rem; }\\n\\n.sidebar-settings button {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n line-height: 3rem;\\n outline: none;\\n padding: 0;\\n font-weight: 400; }\\n\\n.sidebar-settings button .icon {\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.sidebar-settings button .icon.settings {\\n -webkit-mask: url('settings.svg') no-repeat center;\\n mask: url('settings.svg') no-repeat center; }\\n\\n.sidebar-settings button .icon.logout {\\n -webkit-mask: url('logout.svg') no-repeat center;\\n mask: url('logout.svg') no-repeat center; }\\n\\n.sidebar-synchronization-status {\\n position: relative;\\n display: flex;\\n align-items: flex-end;\\n justify-content: flex-start;\\n flex: 0 0 4rem;\\n font-size: 1.3rem; }\\n\\n.sidebar-synchronization-status .status-container .offline, .sidebar-synchronization-status .status-container .online {\\n position: relative;\\n display: block;\\n line-height: 1.2rem;\\n padding-left: 2.2rem; }\\n\\n.sidebar-synchronization-status .status-container .offline:before, .sidebar-synchronization-status .status-container .online:before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n border-radius: 50%;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.sidebar-synchronization-status .status-container .syncing, .sidebar-synchronization-status .status-container .loading {\\n line-height: 4rem; }\\n\\n.sidebar-synchronization-status .progress-bar-container {\\n position: absolute;\\n bottom: -0.7rem;\\n left: 0;\\n height: 0.7rem;\\n width: 100%; }\\n\\n.sidebar-synchronization-status .progress-bar-container .syncing {\\n display: flex; }\\n\\n.sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\\n flex: 1 0 auto; }\\n\\n.sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\\n height: 100%; }\\n\\n.sidebar-synchronization-status .progress-bar-container .syncing .progress-percent {\\n flex: 0 0 auto;\\n font-size: 1.3rem;\\n line-height: 0.7rem;\\n padding-left: 0.7rem; }\\n\\n.sidebar-synchronization-status .progress-bar-container .loading {\\n background-image: url('loading.png');\\n height: 100%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2lkZWJhci9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzaWRlYmFyXFxzaWRlYmFyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qiw4QkFBOEI7RUFDOUIsZUFBZTtFQUNmLG9CQUFvQixFQUFBOztBQUd0QjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsY0FBYyxFQUFBOztBQUhoQjtJQU1JLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCO0lBQzlCLGNBQWM7SUFDZCxZQUFZO0lBQ1osZ0JBQWdCLEVBQUE7O0FBWHBCO01BY00saUJBQWlCLEVBQUE7O0FBZHZCO01Ba0JNLHVCQUF1QjtNQUN2QixZQUFZO01BQ1osYUFBYSxFQUFBOztBQXBCbkI7SUF5QkksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixjQUFjO0lBQ2QsZUFBZTtJQUNmLG1CQUFtQixFQUFBOztBQTdCdkI7TUFnQ00sYUFBYTtNQUNiLHNCQUFzQjtNQUN0QixjQUFjO01BQ2QsZUFBZTtNQUNmLGtCQUFrQixFQUFBOztBQXBDeEI7UUF1Q1EsYUFBYTtRQUNiLG1CQUFtQjtRQUNuQiw4QkFBOEIsRUFBQTs7QUF6Q3RDO1VBNENVLG1CQUFtQixFQUFBOztBQTVDN0I7WUErQ1ksaUJBQWlCLEVBQUE7O0FBL0M3QjtZQW1EWSxpQkFBaUI7WUFDakIsZ0JBQWdCLEVBQUE7O0FBcEQ1QjtVQXlEVSxpQkFBaUI7VUFDakIsbUJBQW1CO1VBQ25CLHFCQUFxQixFQUFBOztBQTNEL0I7WUE4RFksbUJBQW1CO1lBQ25CLGFBQWE7WUFDYixjQUFjLEVBQUE7O0FBaEUxQjtjQW1FYywrQ0FBd0Q7c0JBQXhELHVDQUF3RCxFQUFBOztBQW5FdEU7VUF5RVUsbUJBQW1CLEVBQUE7O0FBekU3QjtZQTRFWSxpQkFBaUIsRUFBQTs7QUE1RTdCO1VBaUZVLG1CQUFtQixFQUFBOztBQWpGN0I7WUFvRlksaUJBQWlCLEVBQUE7O0FBcEY3QjtZQXdGWSxhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGVBQWU7WUFDZixZQUFZO1lBQ1osY0FBYyxFQUFBOztBQS9GMUI7VUFvR1Usc0JBQXNCO1VBQ3RCLGNBQWMsRUFBQTs7QUFyR3hCO1lBd0dZLHNCQUFzQjtZQUN0QixpQkFBaUI7WUFDakIsbUJBQW1CLEVBQUE7O0FBMUcvQjtZQThHWSxhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxXQUFXLEVBQUE7O0FBakh2QjtjQW9IYyxjQUFjLEVBQUE7O0FBcEg1QjtnQkF1SGdCLFlBQVksRUFBQTs7QUF2SDVCO2NBNEhjLGNBQWM7Y0FDZCxpQkFBaUI7Y0FDakIsbUJBQW1CO2NBQ25CLG9CQUFvQixFQUFBOztBQS9IbEM7UUFzSVEsYUFBYSxFQUFBOztBQU1yQjtFQUNFLGNBQWM7RUFDZCxvQkFBb0IsRUFBQTs7QUFGdEI7SUFLSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixVQUFVO0lBQ1YsZ0JBQWdCLEVBQUE7O0FBWnBCO01BZU0sb0JBQW9CO01BQ3BCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBakJwQjtRQW9CUSxrREFBMkQ7Z0JBQTNELDBDQUEyRCxFQUFBOztBQXBCbkU7UUF3QlEsZ0RBQXlEO2dCQUF6RCx3Q0FBeUQsRUFBQTs7QUFNakU7RUFDRSxrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLHFCQUFxQjtFQUNyQiwyQkFBMkI7RUFDM0IsY0FBYztFQUNkLGlCQUFpQixFQUFBOztBQU5uQjtJQVdNLGtCQUFrQjtJQUNsQixjQUFjO0lBQ2QsbUJBQW1CO0lBQ25CLG9CQUFvQixFQUFBOztBQWQxQjtNQWlCUSxXQUFXO01BQ1gsa0JBQWtCO01BQ2xCLE1BQU07TUFDTixPQUFPO01BQ1Asa0JBQWtCO01BQ2xCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBdkJ0QjtJQTRCTSxpQkFBaUIsRUFBQTs7QUE1QnZCO0lBaUNJLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsT0FBTztJQUNQLGNBQWM7SUFDZCxXQUFXLEVBQUE7O0FBckNmO01Bd0NNLGFBQWEsRUFBQTs7QUF4Q25CO1FBMkNRLGNBQWMsRUFBQTs7QUEzQ3RCO1VBOENVLFlBQVksRUFBQTs7QUE5Q3RCO1FBbURRLGNBQWM7UUFDZCxpQkFBaUI7UUFDakIsbUJBQW1CO1FBQ25CLG9CQUFvQixFQUFBOztBQXRENUI7TUEyRE0sb0NBQXdEO01BQ3hELFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGZsZXg6IDAgMCAyNXJlbTtcclxuICBwYWRkaW5nOiAwIDNyZW0gM3JlbTtcclxufVxyXG5cclxuLnNpZGViYXItYWNjb3VudHMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuXHJcbiAgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgZmxleDogMCAwIGF1dG87XHJcbiAgICBoZWlnaHQ6IDhyZW07XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG5cclxuICAgIGgzIHtcclxuICAgICAgZm9udC1zaXplOiAxLjdyZW07XHJcbiAgICB9XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLWFjY291bnRzLWxpc3Qge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4OiAxIDEgYXV0bztcclxuICAgIG1hcmdpbjogMCAtM3JlbTtcclxuICAgIG92ZXJmbG93LXk6IG92ZXJsYXk7XHJcblxyXG4gICAgLnNpZGViYXItYWNjb3VudCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDJyZW0gM3JlbTtcclxuXHJcbiAgICAgIC5zaWRlYmFyLWFjY291bnQtcm93IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgICAgICAmLmFjY291bnQtdGl0bGUtYmFsYW5jZSB7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG5cclxuICAgICAgICAgIC50aXRsZSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5iYWxhbmNlIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjY291bnQtYWxpYXMge1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMy40cmVtO1xyXG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC43cmVtO1xyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcclxuICAgICAgICAgICAgd2lkdGg6IDEuMnJlbTtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxLjJyZW07XHJcblxyXG4gICAgICAgICAgICAmLmNvbW1lbnQge1xyXG4gICAgICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvYWxlcnQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjY291bnQtc3Rha2luZyB7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMi45cmVtO1xyXG5cclxuICAgICAgICAgIC50ZXh0IHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjY291bnQtbWVzc2FnZXMge1xyXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuXHJcbiAgICAgICAgICAudGV4dCB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5pbmRpY2F0b3Ige1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICAgICAgICBtaW4td2lkdGg6IDI0cHg7XHJcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcclxuICAgICAgICAgICAgcGFkZGluZzogMCA1cHg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcclxuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgICBoZWlnaHQ6IDUuNnJlbTtcclxuXHJcbiAgICAgICAgICAuc3RhdHVzIHtcclxuICAgICAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyLjZyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBtYXJnaW46IDAuNHJlbSAwO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDAuN3JlbTtcclxuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcclxuICAgICAgICAgICAgICBmbGV4OiAxIDAgYXV0bztcclxuXHJcbiAgICAgICAgICAgICAgLmZpbGwge1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLnByb2dyZXNzLXBlcmNlbnQge1xyXG4gICAgICAgICAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwLjdyZW07XHJcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjdyZW07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6Zm9jdXMge1xyXG4gICAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5zaWRlYmFyLXNldHRpbmdzIHtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcclxuXHJcbiAgYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBsaW5lLWhlaWdodDogM3JlbTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMS4ycmVtO1xyXG4gICAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuN3JlbTtcclxuXHJcbiAgICAgICYuc2V0dGluZ3Mge1xyXG4gICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvc2V0dGluZ3Muc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmxvZ291dCB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9sb2dvdXQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGZsZXg6IDAgMCA0cmVtO1xyXG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG5cclxuICAuc3RhdHVzLWNvbnRhaW5lciB7XHJcblxyXG4gICAgLm9mZmxpbmUsIC5vbmxpbmUge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBsaW5lLWhlaWdodDogMS4ycmVtO1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbTtcclxuXHJcbiAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIHdpZHRoOiAxLjJyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjJyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc3luY2luZywgLmxvYWRpbmcge1xyXG4gICAgICBsaW5lLWhlaWdodDogNHJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGJvdHRvbTogLTAuN3JlbTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBoZWlnaHQ6IDAuN3JlbTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgIC5zeW5jaW5nIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICAgIC5wcm9ncmVzcy1iYXIge1xyXG4gICAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG5cclxuICAgICAgICAuZmlsbCB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAucHJvZ3Jlc3MtcGVyY2VudCB7XHJcbiAgICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDAuN3JlbTtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuN3JlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5sb2FkaW5nIHtcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vYXNzZXRzL2ltYWdlcy9sb2FkaW5nLnBuZ1wiKTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute, NavigationStart, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss']\r\n})\r\nexport class SidebarComponent implements OnInit, OnDestroy {\r\n walletSubRouting;\r\n\r\n walletActive: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n public variablesService: VariablesService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n if (this.router.url.indexOf('/wallet/') !== -1) {\r\n const localPathArr = this.router.url.split('/');\r\n if (localPathArr.length >= 3) {\r\n this.walletActive = parseInt(localPathArr[2], 10);\r\n }\r\n } else if (this.router.url.indexOf('/details') !== -1) {\r\n this.walletActive = this.variablesService.currentWallet.wallet_id;\r\n } else {\r\n this.walletActive = null;\r\n }\r\n\r\n this.walletSubRouting = this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationStart) {\r\n if (event.url.indexOf('/wallet/') !== -1) {\r\n const localPathArr = event.url.split('/');\r\n if (localPathArr.length >= 3) {\r\n this.walletActive = parseInt(localPathArr[2], 10);\r\n }\r\n } else if (event.url.indexOf('/details') !== -1) {\r\n this.walletActive = this.variablesService.currentWallet.wallet_id;\r\n } else {\r\n this.walletActive = null;\r\n }\r\n }\r\n });\r\n }\r\n\r\n logOut() {\r\n this.variablesService.stopCountdown();\r\n this.variablesService.appPass = '';\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.walletSubRouting.unsubscribe();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE' | translate }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_PENDING' | translate }}\\r\\n {{pending.total | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_TOTAL' | translate }}\\r\\n {{total | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{selectedDate.date | date : 'MMM. EEEE, dd, yyyy'}}\\r\\n {{selectedDate.amount}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_PERIOD' | translate }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.chart-header {\\n display: flex;\\n flex: 0 0 auto; }\\n\\n.chart-header .general {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n flex-grow: 1;\\n font-size: 1.3rem;\\n margin: -0.5rem 0; }\\n\\n.chart-header .general > div {\\n display: flex;\\n align-items: center;\\n margin: 0.5rem 0;\\n height: 2rem; }\\n\\n.chart-header .general > div .label {\\n display: inline-block;\\n width: 9rem; }\\n\\n.chart-header .selected {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-end;\\n justify-content: center;\\n flex-grow: 1;\\n font-size: 1.8rem; }\\n\\n.chart-header .selected span {\\n line-height: 2.9rem; }\\n\\n.chart {\\n display: flex;\\n align-items: center;\\n flex: 1 1 auto;\\n min-height: 40rem; }\\n\\n.chart > div {\\n width: 100%;\\n height: 100%; }\\n\\n.chart-options {\\n display: flex;\\n align-items: center;\\n height: 2.4rem;\\n flex: 0 0 auto; }\\n\\n.chart-options .title {\\n font-size: 1.3rem;\\n width: 9rem; }\\n\\n.chart-options .options {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1;\\n height: 100%; }\\n\\n.chart-options .options button {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 1 auto;\\n cursor: pointer;\\n font-size: 1.3rem;\\n margin: 0 0.1rem;\\n padding: 0;\\n height: 100%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc3Rha2luZy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxzdGFraW5nXFxzdGFraW5nLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxhQUFhO0VBQ2IsY0FBYyxFQUFBOztBQUZoQjtJQUtJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osaUJBQWlCO0lBQ2pCLGlCQUFpQixFQUFBOztBQVhyQjtNQWNNLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsZ0JBQWdCO01BQ2hCLFlBQVksRUFBQTs7QUFqQmxCO1FBb0JRLHFCQUFxQjtRQUNyQixXQUFXLEVBQUE7O0FBckJuQjtJQTJCSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQixFQUFBOztBQWhDckI7TUFtQ00sbUJBQW1CLEVBQUE7O0FBS3pCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsaUJBQWlCLEVBQUE7O0FBSm5CO0lBT0ksV0FBVztJQUNYLFlBQVksRUFBQTs7QUFJaEI7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGNBQWM7RUFDZCxjQUFjLEVBQUE7O0FBSmhCO0lBT0ksaUJBQWlCO0lBQ2pCLFdBQVcsRUFBQTs7QUFSZjtJQVlJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsWUFBWTtJQUNaLFlBQVksRUFBQTs7QUFmaEI7TUFrQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsY0FBYztNQUNkLGVBQWU7TUFDZixpQkFBaUI7TUFDakIsZ0JBQWdCO01BQ2hCLFVBQVU7TUFDVixZQUFZLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zdGFraW5nL3N0YWtpbmcuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uY2hhcnQtaGVhZGVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG5cclxuICAuZ2VuZXJhbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogLTAuNXJlbSAwO1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luOiAwLjVyZW0gMDtcclxuICAgICAgaGVpZ2h0OiAycmVtO1xyXG5cclxuICAgICAgLmxhYmVsIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDlyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWxlY3RlZCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZm9udC1zaXplOiAxLjhyZW07XHJcblxyXG4gICAgc3BhbiB7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAyLjlyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhcnQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuICBtaW4taGVpZ2h0OiA0MHJlbTtcclxuXHJcbiAgPiBkaXYge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhcnQtb3B0aW9ucyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGhlaWdodDogMi40cmVtO1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG5cclxuICAudGl0bGUge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICB3aWR0aDogOXJlbTtcclxuICB9XHJcblxyXG4gIC5vcHRpb25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICBtYXJnaW46IDAgMC4xcmVtO1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Chart} from 'angular-highcharts';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-staking',\r\n templateUrl: './staking.component.html',\r\n styleUrls: ['./staking.component.scss']\r\n})\r\nexport class StakingComponent implements OnInit, OnDestroy {\r\n\r\n parentRouting;\r\n heightAppEvent;\r\n refreshStackingEvent;\r\n\r\n periods = [\r\n {\r\n title: this.translate.instant('STAKING.DAY'),\r\n key: '1 day',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.WEEK'),\r\n key: '1 week',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.MONTH'),\r\n key: '1 month',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.YEAR'),\r\n key: '1 year',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.ALL'),\r\n key: 'All',\r\n active: true\r\n }\r\n ];\r\n\r\n selectedDate = {\r\n date: null,\r\n amount: null\r\n };\r\n\r\n originalData = [];\r\n\r\n chart: Chart;\r\n\r\n total = 0;\r\n pending = {\r\n list: [],\r\n total: 0\r\n };\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private variablesService: VariablesService,\r\n private backend: BackendService,\r\n private ngZone: NgZone,\r\n private intToMoneyPipe: IntToMoneyPipe,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n this.getMiningHistory();\r\n });\r\n this.heightAppEvent = this.variablesService.getHeightAppEvent.subscribe((newHeight: number) => {\r\n if (this.pending.total) {\r\n const pendingCount = this.pending.list.length;\r\n for (let i = pendingCount - 1; i >= 0; i--) {\r\n if (newHeight - this.pending.list[i].h >= 10) {\r\n this.pending.list.splice(i, 1);\r\n }\r\n }\r\n if (pendingCount !== this.pending.list.length) {\r\n this.pending.total = 0;\r\n for (let i = 0; i < this.pending.list.length; i++) {\r\n this.pending.total += this.pending.list[i].a;\r\n }\r\n }\r\n }\r\n });\r\n this.refreshStackingEvent = this.variablesService.getRefreshStackingEvent.subscribe((wallet_id: number) => {\r\n if (this.variablesService.currentWallet.wallet_id === wallet_id) {\r\n this.getMiningHistory();\r\n }\r\n });\r\n }\r\n\r\n\r\n drawChart(data) {\r\n this.chart = new Chart({\r\n title: {text: ''},\r\n credits: {enabled: false},\r\n exporting: {enabled: false},\r\n legend: {enabled: false},\r\n chart: {\r\n type: 'line',\r\n backgroundColor: 'transparent',\r\n height: null,\r\n zoomType: null\r\n },\r\n\r\n yAxis: {\r\n min: 0,\r\n tickAmount: 5,\r\n title: {\r\n text: ''\r\n },\r\n gridLineColor: '#2b3644',\r\n gridLineWidth: 2,\r\n lineColor: '#2b3644',\r\n lineWidth: 2,\r\n tickWidth: 2,\r\n tickLength: 120,\r\n tickColor: '#2b3644',\r\n labels: {\r\n y: -8,\r\n align: 'left',\r\n x: -120,\r\n style: {\r\n 'color': '#e0e0e0',\r\n 'fontSize': '13px'\r\n },\r\n format: '{value} ' + this.variablesService.defaultCurrency\r\n },\r\n showLastLabel: false,\r\n },\r\n\r\n xAxis: {\r\n type: 'datetime',\r\n gridLineColor: '#2b3644',\r\n lineColor: '#2b3644',\r\n lineWidth: 2,\r\n tickWidth: 2,\r\n tickLength: 10,\r\n tickColor: '#2b3644',\r\n labels: {\r\n style: {\r\n 'color': '#e0e0e0',\r\n 'fontSize': '13px'\r\n }\r\n },\r\n minPadding: 0,\r\n maxPadding: 0,\r\n minRange: 86400000,\r\n // tickInterval: 86400000,\r\n minTickInterval: 3600000,\r\n },\r\n\r\n tooltip: {\r\n enabled: false\r\n },\r\n\r\n plotOptions: {\r\n area: {\r\n fillColor: {\r\n linearGradient: {\r\n x1: 0,\r\n y1: 0,\r\n x2: 0,\r\n y2: 1\r\n },\r\n stops: [\r\n [0, 'rgba(124,181,236,0.2)'],\r\n [1, 'rgba(124,181,236,0)']\r\n ]\r\n },\r\n marker: {\r\n enabled: false,\r\n radius: 2\r\n },\r\n lineWidth: 2,\r\n threshold: null\r\n },\r\n\r\n series: {\r\n point: {\r\n events: {\r\n mouseOver: (obj) => {\r\n this.selectedDate.date = obj.target['x'];\r\n this.selectedDate.amount = obj.target['y'];\r\n }\r\n }\r\n },\r\n events: {\r\n mouseOut: () => {\r\n this.selectedDate.date = null;\r\n this.selectedDate.amount = null;\r\n }\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: 'area',\r\n data: data\r\n }\r\n ]\r\n });\r\n }\r\n\r\n\r\n getMiningHistory() {\r\n if (this.variablesService.currentWallet.loaded) {\r\n this.backend.getMiningHistory(this.variablesService.currentWallet.wallet_id, (status, data) => {\r\n this.total = 0;\r\n this.pending.list = [];\r\n this.pending.total = 0;\r\n this.originalData = [];\r\n if (data.mined_entries) {\r\n data.mined_entries.forEach((item, key) => {\r\n if (item.t.toString().length === 10) {\r\n data.mined_entries[key].t = (new Date(item.t * 1000)).setUTCMilliseconds(0);\r\n }\r\n });\r\n data.mined_entries.forEach((item) => {\r\n this.total += item.a;\r\n if (this.variablesService.height_app - item.h < 10) {\r\n this.pending.list.push(item);\r\n this.pending.total += item.a;\r\n }\r\n this.originalData.push([parseInt(item.t, 10), parseFloat(this.intToMoneyPipe.transform(item.a))]);\r\n });\r\n this.originalData = this.originalData.sort(function (a, b) {\r\n return a[0] - b[0];\r\n });\r\n }\r\n this.ngZone.run(() => {\r\n this.drawChart(JSON.parse(JSON.stringify(this.originalData)));\r\n });\r\n });\r\n }\r\n\r\n }\r\n\r\n changePeriod(period) {\r\n this.periods.forEach((p) => {\r\n p.active = false;\r\n });\r\n period.active = true;\r\n\r\n const d = new Date();\r\n let min = null;\r\n const newData = [];\r\n\r\n if (period.key === '1 day') {\r\n this.originalData.forEach((item) => {\r\n const time = (new Date(item[0])).setUTCMinutes(0, 0, 0);\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] += item[1];\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - 1, 0, 0, 0, 0);\r\n } else if (period.key === '1 week') {\r\n this.originalData.forEach((item) => {\r\n const time = (new Date(item[0])).setUTCHours(0, 0, 0, 0);\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] += item[1];\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - 7, 0, 0, 0, 0);\r\n } else if (period.key === '1 month') {\r\n this.originalData.forEach((item) => {\r\n const time = (new Date(item[0])).setUTCHours(0, 0, 0, 0);\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] += item[1];\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth() - 1, d.getDate(), 0, 0, 0, 0);\r\n } else if (period.key === '1 year') {\r\n this.originalData.forEach((item) => {\r\n const time = (new Date(item[0])).setUTCHours(0, 0, 0, 0);\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] += item[1];\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear() - 1, d.getMonth(), d.getDate(), 0, 0, 0, 0);\r\n } else {\r\n this.chart.ref.series[0].setData(this.originalData, true);\r\n }\r\n\r\n this.chart.ref.xAxis[0].setExtremes(min, null);\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.heightAppEvent.unsubscribe();\r\n this.refreshStackingEvent.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.TRANSFER_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
0 && (transferAddressAlias || !transferAddressValid || (transferAddressValid && !permissionSend) || notEnoughMoney)\\\">\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.WRONG_ADDRESS' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.ALIAS_EXISTS' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"TRANSFER_ALIAS.COST\\\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".form-transfer {\\n margin: 2.4rem 0; }\\n .form-transfer .alias-name {\\n width: 50%; }\\n .form-transfer .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-transfer .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-transfer .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHJhbnNmZXItYWxpYXMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHJhbnNmZXItYWxpYXNcXHRyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsZ0JBQWdCLEVBQUE7RUFEbEI7SUFJSSxVQUFVLEVBQUE7RUFKZDtJQVFJLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBQTtFQVRwQjtJQWFJLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsc0JBQXNCLEVBQUE7RUFmMUI7TUFrQk0sZ0JBQWdCO01BQ2hCLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvYXBwL3RyYW5zZmVyLWFsaWFzL3RyYW5zZmVyLWFsaWFzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvcm0tdHJhbnNmZXIge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-transfer-alias',\r\n templateUrl: './transfer-alias.component.html',\r\n styleUrls: ['./transfer-alias.component.scss']\r\n})\r\nexport class TransferAliasComponent implements OnInit {\r\n\r\n wallet: Wallet;\r\n alias: any;\r\n transferAddress = '';\r\n transferAddressValid: boolean;\r\n transferAddressAlias: boolean;\r\n permissionSend: boolean;\r\n notEnoughMoney: boolean;\r\n requestProcessing = false;\r\n\r\n constructor(\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n this.alias = {\r\n name: alias.name,\r\n address: alias.address,\r\n comment: alias.comment,\r\n tracking_key: alias.tracking_key\r\n };\r\n this.notEnoughMoney = this.wallet.unlocked_balance.isLessThan(this.variablesService.default_fee_big);\r\n }\r\n\r\n changeAddress() {\r\n this.backend.validateAddress(this.transferAddress, status => {\r\n this.transferAddressValid = status;\r\n if (status) {\r\n this.backend.getPoolInfo((statusPool, dataPool) => {\r\n if (dataPool.hasOwnProperty('aliases_que') && dataPool.aliases_que.length) {\r\n this.setStatus(!dataPool.aliases_que.some((el) => el.address === this.transferAddress));\r\n } else {\r\n this.setStatus(status);\r\n }\r\n });\r\n } else {\r\n this.setStatus(false);\r\n }\r\n });\r\n }\r\n\r\n setStatus(statusSet) {\r\n this.permissionSend = statusSet;\r\n if (statusSet) {\r\n this.backend.getAliasByAddress(this.transferAddress, (status) => {\r\n this.ngZone.run(() => {\r\n if (status) {\r\n this.transferAddressAlias = true;\r\n this.permissionSend = false;\r\n } else {\r\n this.transferAddressAlias = false;\r\n }\r\n });\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.transferAddressAlias = false;\r\n });\r\n }\r\n }\r\n\r\n transferAlias() {\r\n if (this.requestProcessing || !this.permissionSend || !this.transferAddressValid || this.notEnoughMoney) {\r\n return;\r\n }\r\n this.requestProcessing = true;\r\n const newAlias = {\r\n name: this.alias.name,\r\n address: this.transferAddress,\r\n comment: this.alias.comment,\r\n tracking_key: this.alias.tracking_key\r\n };\r\n this.backend.updateAlias(this.wallet.wallet_id, newAlias, this.variablesService.default_fee, (status, data) => {\r\n if (status && data.hasOwnProperty('success') && data.success) {\r\n this.modalService.prepareModal('info', 'TRANSFER_ALIAS.REQUEST_SEND_REG');\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n this.requestProcessing = false;\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n @bitmain\\r\\n
\\r\\n \\r\\n \\r\\n {{ 'COMMON.BACK' | translate }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
10:39
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
11:44
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
12:15
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
13:13
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.head {\\n flex: 0 0 auto;\\n box-sizing: content-box;\\n margin: -3rem -3rem 0; }\\n\\n.messages-content {\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n flex-grow: 1; }\\n\\n.messages-content .messages-list {\\n display: flex;\\n flex-direction: column;\\n font-size: 1.3rem;\\n margin: 1rem -3rem;\\n padding: 0 3rem;\\n overflow-y: overlay; }\\n\\n.messages-content .messages-list div {\\n margin: 0.7rem 0; }\\n\\n.messages-content .messages-list div.date {\\n text-align: center; }\\n\\n.messages-content .messages-list div.my, .messages-content .messages-list div.buddy {\\n position: relative;\\n padding: 1.8rem;\\n max-width: 60%; }\\n\\n.messages-content .messages-list div.buddy {\\n align-self: flex-end; }\\n\\n.messages-content .type-message {\\n display: flex;\\n flex: 0 0 auto;\\n width: 100%;\\n height: 4.2rem; }\\n\\n.messages-content .type-message .input-block {\\n width: 100%; }\\n\\n.messages-content .type-message .input-block > textarea {\\n min-height: 4.2rem; }\\n\\n.messages-content .type-message button {\\n flex: 0 0 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcdHlwaW5nLW1lc3NhZ2VcXHR5cGluZy1tZXNzYWdlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7RUFDRSxjQUFjO0VBQ2QsdUJBQXVCO0VBQ3ZCLHFCQUFxQixFQUFBOztBQUd2QjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsOEJBQThCO0VBQzlCLFlBQVksRUFBQTs7QUFKZDtJQU9JLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtJQUNsQixlQUFlO0lBQ2YsbUJBQW1CLEVBQUE7O0FBWnZCO01BZU0sZ0JBQWdCLEVBQUE7O0FBZnRCO1FBa0JRLGtCQUFrQixFQUFBOztBQWxCMUI7UUFzQlEsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixjQUFjLEVBQUE7O0FBeEJ0QjtRQTRCUSxvQkFBb0IsRUFBQTs7QUE1QjVCO0lBa0NJLGFBQWE7SUFDYixjQUFjO0lBQ2QsV0FBVztJQUNYLGNBQWMsRUFBQTs7QUFyQ2xCO01Bd0NNLFdBQVcsRUFBQTs7QUF4Q2pCO1FBMkNRLGtCQUFrQixFQUFBOztBQTNDMUI7TUFnRE0sZUFBZSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvdHlwaW5nLW1lc3NhZ2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gIC5tZXNzYWdlcy1saXN0IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW46IDFyZW0gLTNyZW07XHJcbiAgICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgICBvdmVyZmxvdy15OiBvdmVybGF5O1xyXG5cclxuICAgIGRpdiB7XHJcbiAgICAgIG1hcmdpbjogMC43cmVtIDA7XHJcblxyXG4gICAgICAmLmRhdGUge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5teSwgJi5idWRkeSB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHBhZGRpbmc6IDEuOHJlbTtcclxuICAgICAgICBtYXgtd2lkdGg6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5idWRkeSB7XHJcbiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50eXBlLW1lc3NhZ2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDQuMnJlbTtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgID4gdGV4dGFyZWEge1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDQuMnJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGZsZXg6IDAgMCAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-typing-message',\r\n templateUrl: './typing-message.component.html',\r\n styleUrls: ['./typing-message.component.scss']\r\n})\r\nexport class TypingMessageComponent implements OnInit {\r\n\r\n messagesId: number;\r\n private subMessages: any;\r\n\r\n constructor(private route: ActivatedRoute) {\r\n this.route.params.subscribe( params => console.log(params) );\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.name}}\\r\\n {{ 'BREADCRUMBS.WALLET_DETAILS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
{{ 'WALLET_DETAILS.SEED_PHRASE_HINT' | translate }}
\\r\\n
\\r\\n \\r\\n
{{(index + 1) + '. ' + word}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".form-details {\\n margin-top: 1.8rem; }\\n .form-details .input-block:first-child {\\n width: 50%; }\\n .form-details .seed-phrase {\\n display: flex;\\n font-size: 1.4rem;\\n line-height: 1.5rem;\\n padding: 1.4rem;\\n width: 100%;\\n height: 8.8rem; }\\n .form-details .seed-phrase .seed-phrase-hint {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n cursor: pointer;\\n width: 100%;\\n height: 100%; }\\n .form-details .seed-phrase .seed-phrase-content {\\n display: flex;\\n flex-direction: column;\\n flex-wrap: wrap;\\n width: 100%;\\n height: 100%; }\\n .form-details .wallet-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n .form-details .wallet-buttons button {\\n margin: 2.9rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0LWRldGFpbHMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcd2FsbGV0LWRldGFpbHNcXHdhbGxldC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCLEVBQUE7RUFEcEI7SUFNTSxVQUFVLEVBQUE7RUFOaEI7SUFXSSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsV0FBVztJQUNYLGNBQWMsRUFBQTtFQWhCbEI7TUFtQk0sYUFBYTtNQUNiLG1CQUFtQjtNQUNuQix1QkFBdUI7TUFDdkIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUF4QmxCO01BNEJNLGFBQWE7TUFDYixzQkFBc0I7TUFDdEIsZUFBZTtNQUNmLFdBQVc7TUFDWCxZQUFZLEVBQUE7RUFoQ2xCO0lBcUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCLEVBQUE7RUF2Q2xDO01BMENNLGdCQUFnQjtNQUNoQixXQUFXO01BQ1gsZ0JBQWdCLEVBQUEiLCJmaWxlIjoic3JjL2FwcC93YWxsZXQtZGV0YWlscy93YWxsZXQtZGV0YWlscy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLWRldGFpbHMge1xyXG4gIG1hcmdpbi10b3A6IDEuOHJlbTtcclxuXHJcbiAgLmlucHV0LWJsb2NrIHtcclxuXHJcbiAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWVkLXBocmFzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMS40cmVtO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDguOHJlbTtcclxuXHJcbiAgICAuc2VlZC1waHJhc2UtaGludCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAud2FsbGV0LWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAyLjlyZW0gMDtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Router} from '@angular/router';\r\nimport {Location} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-wallet-details',\r\n templateUrl: './wallet-details.component.html',\r\n styleUrls: ['./wallet-details.component.scss']\r\n})\r\nexport class WalletDetailsComponent implements OnInit, OnDestroy {\r\n seedPhrase = '';\r\n showSeed = false;\r\n\r\n detailsForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n if (this.variablesService.wallets[i].wallet_id === this.variablesService.currentWallet.wallet_id) {\r\n return {'same': true};\r\n } else {\r\n return {'duplicate': true};\r\n }\r\n }\r\n }\r\n return null;\r\n }]),\r\n path: new FormControl('')\r\n });\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private location: Location\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.showSeed = false;\r\n this.detailsForm.get('name').setValue(this.variablesService.currentWallet.name);\r\n this.detailsForm.get('path').setValue(this.variablesService.currentWallet.path);\r\n this.backend.getSmartWalletInfo(this.variablesService.currentWallet.wallet_id, (status, data) => {\r\n if (data.hasOwnProperty('restore_key')) {\r\n this.ngZone.run(() => {\r\n this.seedPhrase = data['restore_key'].trim();\r\n });\r\n }\r\n });\r\n }\r\n\r\n showSeedPhrase() {\r\n this.showSeed = true;\r\n }\r\n\r\n onSubmitEdit() {\r\n if (this.detailsForm.value) {\r\n this.variablesService.currentWallet.name = this.detailsForm.get('name').value;\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.variablesService.currentWallet.wallet_id]);\r\n });\r\n }\r\n }\r\n\r\n closeWallet() {\r\n this.backend.closeWallet(this.variablesService.currentWallet.wallet_id, () => {\r\n for (let i = this.variablesService.wallets.length - 1; i >= 0; i--) {\r\n if (this.variablesService.wallets[i].wallet_id === this.variablesService.currentWallet.wallet_id) {\r\n this.variablesService.wallets.splice(i, 1);\r\n }\r\n }\r\n this.backend.storeSecureAppData(() => {\r\n this.ngZone.run(() => {\r\n if (this.variablesService.wallets.length) {\r\n this.variablesService.currentWallet = this.variablesService.wallets[0];\r\n this.router.navigate(['/wallet/' + this.variablesService.currentWallet.wallet_id]);\r\n } else {\r\n this.router.navigate(['/']);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n

{{variablesService.currentWallet.name}}

\\r\\n \\r\\n \\r\\n
\\r\\n {{variablesService.currentWallet.alias['name']}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.address}}\\r\\n \\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.balance | intToMoney : '3'}} {{variablesService.defaultCurrency}}\\r\\n $ {{variablesService.currentWallet.getMoneyEquivalent(variablesService.moneyEquivalent) | intToMoney | number : '1.2-2'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{ tab.title | translate }}\\r\\n {{variablesService.currentWallet.new_contracts}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n padding: 0 3rem 3rem;\\n min-width: 95rem;\\n width: 100%;\\n height: 100%; }\\n\\n.header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex: 0 0 auto;\\n height: 8rem; }\\n\\n.header > div {\\n display: flex;\\n align-items: center; }\\n\\n.header > div :not(:last-child) {\\n margin-right: 3.2rem; }\\n\\n.header h3 {\\n font-size: 1.7rem;\\n font-weight: 600; }\\n\\n.header button {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n cursor: pointer;\\n font-weight: 400;\\n outline: none;\\n padding: 0; }\\n\\n.header button .icon {\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.header button .icon.account {\\n -webkit-mask: url('account.svg') no-repeat center;\\n mask: url('account.svg') no-repeat center; }\\n\\n.header button .icon.details {\\n -webkit-mask: url('details.svg') no-repeat center;\\n mask: url('details.svg') no-repeat center; }\\n\\n.header button .icon.lock {\\n -webkit-mask: url('lock.svg') no-repeat center;\\n mask: url('lock.svg') no-repeat center; }\\n\\n.header .alias {\\n display: flex;\\n align-items: center;\\n font-size: 1.3rem; }\\n\\n.header .alias .icon {\\n cursor: pointer;\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.header .alias .icon.edit {\\n -webkit-mask: url('details.svg') no-repeat center;\\n mask: url('details.svg') no-repeat center; }\\n\\n.header .alias .icon.transfer {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.address {\\n display: flex;\\n align-items: center;\\n flex: 0 0 auto;\\n font-size: 1.4rem;\\n line-height: 1.7rem; }\\n\\n.address .icon {\\n cursor: pointer;\\n margin-left: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.address .icon.copy {\\n -webkit-mask: url('copy.svg') no-repeat center;\\n mask: url('copy.svg') no-repeat center; }\\n\\n.address .icon.copy:hover {\\n opacity: 0.75; }\\n\\n.address .icon.copied {\\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\\n mask: url('complete-testwallet.svg') no-repeat center; }\\n\\n.balance {\\n display: flex;\\n align-items: flex-end;\\n justify-content: flex-start;\\n flex: 0 0 auto;\\n margin: 2.6rem 0; }\\n\\n.balance :first-child {\\n font-size: 3.3rem;\\n font-weight: 600;\\n line-height: 2.4rem;\\n margin-right: 3.5rem; }\\n\\n.balance :last-child {\\n font-size: 1.8rem;\\n font-weight: 600;\\n line-height: 1.3rem; }\\n\\n.tabs {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto; }\\n\\n.tabs .tabs-header {\\n display: flex;\\n justify-content: space-between;\\n flex: 0 0 auto; }\\n\\n.tabs .tabs-header .tab {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 0 auto;\\n cursor: pointer;\\n padding: 0 1rem;\\n height: 5rem; }\\n\\n.tabs .tabs-header .tab .icon {\\n margin-right: 1.3rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.tabs .tabs-header .tab .icon.send {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.receive {\\n -webkit-mask: url('receive.svg') no-repeat center;\\n mask: url('receive.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.history {\\n -webkit-mask: url('history.svg') no-repeat center;\\n mask: url('history.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.contracts {\\n -webkit-mask: url('contracts.svg') no-repeat center;\\n mask: url('contracts.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.messages {\\n -webkit-mask: url('message.svg') no-repeat center;\\n mask: url('message.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.staking {\\n -webkit-mask: url('staking.svg') no-repeat center;\\n mask: url('staking.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .indicator {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: 1rem;\\n font-size: 1rem;\\n font-weight: 600;\\n margin-left: 1.3rem;\\n padding: 0 0.5rem;\\n min-width: 1.6rem;\\n height: 1.6rem; }\\n\\n.tabs .tabs-header .tab.disabled {\\n cursor: not-allowed; }\\n\\n.tabs .tabs-header .tab:not(:last-child) {\\n margin-right: 0.3rem; }\\n\\n.tabs .tabs-content {\\n display: flex;\\n padding: 3rem;\\n flex: 1 1 auto;\\n overflow-x: hidden;\\n overflow-y: overlay; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0L0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHdhbGxldFxcd2FsbGV0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsb0JBQW9CO0VBQ3BCLGdCQUFnQjtFQUNoQixXQUFXO0VBQ1gsWUFBWSxFQUFBOztBQUdkO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsY0FBYztFQUNkLFlBQVksRUFBQTs7QUFMZDtJQVFJLGFBQWE7SUFDYixtQkFBbUIsRUFBQTs7QUFUdkI7TUFZTSxvQkFBb0IsRUFBQTs7QUFaMUI7SUFpQkksaUJBQWlCO0lBQ2pCLGdCQUFnQixFQUFBOztBQWxCcEI7SUFzQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLFVBQVUsRUFBQTs7QUE3QmQ7TUFnQ00sb0JBQW9CO01BQ3BCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBbENwQjtRQXFDUSxpREFBMEQ7Z0JBQTFELHlDQUEwRCxFQUFBOztBQXJDbEU7UUF5Q1EsaURBQTBEO2dCQUExRCx5Q0FBMEQsRUFBQTs7QUF6Q2xFO1FBNkNRLDhDQUF1RDtnQkFBdkQsc0NBQXVELEVBQUE7O0FBN0MvRDtJQW1ESSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLGlCQUFpQixFQUFBOztBQXJEckI7TUF3RE0sZUFBZTtNQUNmLG9CQUFvQjtNQUNwQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQTNEcEI7UUE4RFEsaURBQTBEO2dCQUExRCx5Q0FBMEQsRUFBQTs7QUE5RGxFO1FBa0VRLDhDQUF1RDtnQkFBdkQsc0NBQXVELEVBQUE7O0FBTS9EO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsaUJBQWlCO0VBQ2pCLG1CQUFtQixFQUFBOztBQUxyQjtJQVFJLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLGNBQWMsRUFBQTs7QUFYbEI7TUFjTSw4Q0FBdUQ7Y0FBdkQsc0NBQXVELEVBQUE7O0FBZDdEO1FBaUJRLGFBQWEsRUFBQTs7QUFqQnJCO01Bc0JNLDZEQUFzRTtjQUF0RSxxREFBc0UsRUFBQTs7QUFLNUU7RUFDRSxhQUFhO0VBQ2IscUJBQXFCO0VBQ3JCLDJCQUEyQjtFQUMzQixjQUFjO0VBQ2QsZ0JBQWdCLEVBQUE7O0FBTGxCO0lBUUksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsb0JBQW9CLEVBQUE7O0FBWHhCO0lBZUksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixtQkFBbUIsRUFBQTs7QUFJdkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLGNBQWMsRUFBQTs7QUFIaEI7SUFNSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLGNBQWMsRUFBQTs7QUFSbEI7TUFXTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixjQUFjO01BQ2QsZUFBZTtNQUNmLGVBQWU7TUFDZixZQUFZLEVBQUE7O0FBakJsQjtRQW9CUSxvQkFBb0I7UUFDcEIsYUFBYTtRQUNiLGNBQWMsRUFBQTs7QUF0QnRCO1VBeUJVLDhDQUF1RDtrQkFBdkQsc0NBQXVELEVBQUE7O0FBekJqRTtVQTZCVSxpREFBMEQ7a0JBQTFELHlDQUEwRCxFQUFBOztBQTdCcEU7VUFpQ1UsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUFqQ3BFO1VBcUNVLG1EQUE0RDtrQkFBNUQsMkNBQTRELEVBQUE7O0FBckN0RTtVQXlDVSxpREFBMEQ7a0JBQTFELHlDQUEwRCxFQUFBOztBQXpDcEU7VUE2Q1UsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUE3Q3BFO1FBa0RRLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGNBQWMsRUFBQTs7QUEzRHRCO1FBK0RRLG1CQUFtQixFQUFBOztBQS9EM0I7UUFtRVEsb0JBQW9CLEVBQUE7O0FBbkU1QjtJQXlFSSxhQUFhO0lBQ2IsYUFBYTtJQUNiLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsbUJBQW1CLEVBQUEiLCJmaWxlIjoic3JjL2FwcC93YWxsZXQvd2FsbGV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgcGFkZGluZzogMCAzcmVtIDNyZW07XHJcbiAgbWluLXdpZHRoOiA5NXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbi5oZWFkZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgaGVpZ2h0OiA4cmVtO1xyXG5cclxuICA+IGRpdiB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICA6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMy4ycmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaDMge1xyXG4gICAgZm9udC1zaXplOiAxLjdyZW07XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDEuMnJlbTtcclxuICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAmLmFjY291bnQge1xyXG4gICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvYWNjb3VudC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZGV0YWlscyB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9kZXRhaWxzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5sb2NrIHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2xvY2suc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWxpYXMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5lZGl0IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2RldGFpbHMuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnRyYW5zZmVyIHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYWRkcmVzcyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gIC5pY29uIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XHJcbiAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgJi5jb3B5IHtcclxuICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9jb3B5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmNvcGllZCB7XHJcbiAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29tcGxldGUtdGVzdHdhbGxldC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYmFsYW5jZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIG1hcmdpbjogMi42cmVtIDA7XHJcblxyXG4gIDpmaXJzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDMuM3JlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAzLjVyZW07XHJcbiAgfVxyXG5cclxuICA6bGFzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLnRhYnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuXHJcbiAgLnRhYnMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgICAudGFiIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgICAgaGVpZ2h0OiA1cmVtO1xyXG5cclxuICAgICAgLmljb24ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMS4zcmVtO1xyXG4gICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAgICYuc2VuZCB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5yZWNlaXZlIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvcmVjZWl2ZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmhpc3Rvcnkge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9oaXN0b3J5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuY29udHJhY3RzIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29udHJhY3RzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubWVzc2FnZXMge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9tZXNzYWdlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuc3Rha2luZyB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3N0YWtpbmcuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmluZGljYXRvciB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuM3JlbTtcclxuICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcclxuICAgICAgICBtaW4td2lkdGg6IDEuNnJlbTtcclxuICAgICAgICBoZWlnaHQ6IDEuNnJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuM3JlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnRhYnMtY29udGVudCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgcGFkZGluZzogM3JlbTtcclxuICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy, NgZone, ViewChild, ElementRef} from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-wallet',\r\n templateUrl: './wallet.component.html',\r\n styleUrls: ['./wallet.component.scss']\r\n})\r\nexport class WalletComponent implements OnInit, OnDestroy {\r\n subRouting;\r\n walletID;\r\n copyAnimation = false;\r\n copyAnimationTimeout;\r\n\r\n @ViewChild('scrolledContent') private scrolledContent: ElementRef;\r\n\r\n tabs = [\r\n {\r\n title: 'WALLET.TABS.HISTORY',\r\n icon: 'history',\r\n link: '/history',\r\n indicator: false,\r\n active: true\r\n },\r\n {\r\n title: 'WALLET.TABS.SEND',\r\n icon: 'send',\r\n link: '/send',\r\n indicator: false,\r\n active: false\r\n },\r\n {\r\n title: 'WALLET.TABS.RECEIVE',\r\n icon: 'receive',\r\n link: '/receive',\r\n indicator: false,\r\n active: false\r\n },\r\n {\r\n title: 'WALLET.TABS.CONTRACTS',\r\n icon: 'contracts',\r\n link: '/contracts',\r\n indicator: 1,\r\n active: false\r\n },\r\n /*{\r\n title: 'WALLET.TABS.MESSAGES',\r\n icon: 'messages',\r\n link: '/messages',\r\n indicator: 32,\r\n active: false\r\n },*/\r\n {\r\n title: 'WALLET.TABS.STAKING',\r\n icon: 'staking',\r\n link: '/staking',\r\n indicator: false,\r\n active: false\r\n }\r\n ];\r\n aliasSubscription: Subscription;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService,\r\n private intToMoneyPipe: IntToMoneyPipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.subRouting = this.route.params.subscribe(params => {\r\n this.walletID = +params['id'];\r\n this.variablesService.setCurrentWallet(this.walletID);\r\n for (let i = 0; i < this.tabs.length; i++) {\r\n this.tabs[i].active = (this.tabs[i].link === '/' + this.route.snapshot.firstChild.url[0].path);\r\n }\r\n this.scrolledContent.nativeElement.scrollTop = 0;\r\n clearTimeout(this.copyAnimationTimeout);\r\n this.copyAnimation = false;\r\n });\r\n if (this.variablesService.currentWallet.alias.hasOwnProperty('name')) {\r\n this.variablesService.currentWallet.wakeAlias = false;\r\n }\r\n this.aliasSubscription = this.variablesService.getAliasChangedEvent.subscribe(() => {\r\n if (this.variablesService.currentWallet.alias.hasOwnProperty('name')) {\r\n this.variablesService.currentWallet.wakeAlias = false;\r\n }\r\n })\r\n }\r\n\r\n changeTab(index) {\r\n if ((this.tabs[index].link === '/send' || this.tabs[index].link === '/contracts' || this.tabs[index].link === '/staking') && this.variablesService.daemon_state !== 2) {\r\n return;\r\n }\r\n this.tabs.forEach((tab) => {\r\n tab.active = false;\r\n });\r\n this.tabs[index].active = true;\r\n this.ngZone.run( () => {\r\n this.scrolledContent.nativeElement.scrollTop = 0;\r\n this.router.navigate(['wallet/' + this.walletID + this.tabs[index].link]);\r\n });\r\n }\r\n\r\n copyAddress() {\r\n this.backend.setClipboard(this.variablesService.currentWallet.address);\r\n this.copyAnimation = true;\r\n this.copyAnimationTimeout = window.setTimeout(() => {\r\n this.copyAnimation = false;\r\n }, 2000);\r\n }\r\n\r\n getTooltip() {\r\n const tooltip = document.createElement('div');\r\n const available = document.createElement('span');\r\n available.setAttribute('class', 'available');\r\n available.innerHTML = this.translate.instant('WALLET.AVAILABLE_BALANCE', {available: this.intToMoneyPipe.transform(this.variablesService.currentWallet.unlocked_balance), currency: this.variablesService.defaultCurrency});\r\n tooltip.appendChild(available);\r\n const locked = document.createElement('span');\r\n locked.setAttribute('class', 'locked');\r\n locked.innerHTML = this.translate.instant('WALLET.LOCKED_BALANCE', {locked: this.intToMoneyPipe.transform(this.variablesService.currentWallet.balance.minus(this.variablesService.currentWallet.unlocked_balance)), currency: this.variablesService.defaultCurrency});\r\n tooltip.appendChild(locked);\r\n const link = document.createElement('span');\r\n link.setAttribute('class', 'link');\r\n link.innerHTML = this.translate.instant('WALLET.LOCKED_BALANCE_LINK');\r\n link.addEventListener('click', () => {\r\n this.openInBrowser('docs.zano.org/docs/locked-balance');\r\n });\r\n tooltip.appendChild(link);\r\n return tooltip;\r\n }\r\n\r\n openInBrowser(link) {\r\n this.backend.openUrlInBrowser(link);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subRouting.unsubscribe();\r\n this.aliasSubscription.unsubscribe();\r\n clearTimeout(this.copyAnimationTimeout);\r\n }\r\n\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/_helpers/directives/input-disable-selection/input-disable-selection.directive.ts","webpack:///./src/app/_helpers/directives/input-validate/input-validate.directive.ts","webpack:///./src/app/_helpers/directives/modal-container/modal-container.component.html","webpack:///./src/app/_helpers/directives/modal-container/modal-container.component.scss","webpack:///./src/app/_helpers/directives/modal-container/modal-container.component.ts","webpack:///./src/app/_helpers/directives/progress-container/progress-container.component.html","webpack:///./src/app/_helpers/directives/progress-container/progress-container.component.scss","webpack:///./src/app/_helpers/directives/progress-container/progress-container.component.ts","webpack:///./src/app/_helpers/directives/staking-switch/staking-switch.component.html","webpack:///./src/app/_helpers/directives/staking-switch/staking-switch.component.scss","webpack:///./src/app/_helpers/directives/staking-switch/staking-switch.component.ts","webpack:///./src/app/_helpers/directives/tooltip.directive.ts","webpack:///./src/app/_helpers/directives/transaction-details/transaction-details.component.html","webpack:///./src/app/_helpers/directives/transaction-details/transaction-details.component.scss","webpack:///./src/app/_helpers/directives/transaction-details/transaction-details.component.ts","webpack:///./src/app/_helpers/models/transaction.model.ts","webpack:///./src/app/_helpers/models/wallet.model.ts","webpack:///./src/app/_helpers/pipes/contract-status-messages.pipe.ts","webpack:///./src/app/_helpers/pipes/contract-time-left.pipe.ts","webpack:///./src/app/_helpers/pipes/history-type-messages.pipe.ts","webpack:///./src/app/_helpers/pipes/int-to-money.pipe.ts","webpack:///./src/app/_helpers/pipes/money-to-int.pipe.ts","webpack:///./src/app/_helpers/services/backend.service.ts","webpack:///./src/app/_helpers/services/modal.service.ts","webpack:///./src/app/_helpers/services/variables.service.ts","webpack:///./src/app/app-routing.module.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.scss","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/assign-alias/assign-alias.component.html","webpack:///./src/app/assign-alias/assign-alias.component.scss","webpack:///./src/app/assign-alias/assign-alias.component.ts","webpack:///./src/app/contracts/contracts.component.html","webpack:///./src/app/contracts/contracts.component.scss","webpack:///./src/app/contracts/contracts.component.ts","webpack:///./src/app/create-wallet/create-wallet.component.html","webpack:///./src/app/create-wallet/create-wallet.component.scss","webpack:///./src/app/create-wallet/create-wallet.component.ts","webpack:///./src/app/edit-alias/edit-alias.component.html","webpack:///./src/app/edit-alias/edit-alias.component.scss","webpack:///./src/app/edit-alias/edit-alias.component.ts","webpack:///./src/app/history/history.component.html","webpack:///./src/app/history/history.component.scss","webpack:///./src/app/history/history.component.ts","webpack:///./src/app/login/login.component.html","webpack:///./src/app/login/login.component.scss","webpack:///./src/app/login/login.component.ts","webpack:///./src/app/main/main.component.html","webpack:///./src/app/main/main.component.scss","webpack:///./src/app/main/main.component.ts","webpack:///./src/app/messages/messages.component.html","webpack:///./src/app/messages/messages.component.scss","webpack:///./src/app/messages/messages.component.ts","webpack:///./src/app/open-wallet/open-wallet.component.html","webpack:///./src/app/open-wallet/open-wallet.component.scss","webpack:///./src/app/open-wallet/open-wallet.component.ts","webpack:///./src/app/purchase/purchase.component.html","webpack:///./src/app/purchase/purchase.component.scss","webpack:///./src/app/purchase/purchase.component.ts","webpack:///./src/app/receive/receive.component.html","webpack:///./src/app/receive/receive.component.scss","webpack:///./src/app/receive/receive.component.ts","webpack:///./src/app/restore-wallet/restore-wallet.component.html","webpack:///./src/app/restore-wallet/restore-wallet.component.scss","webpack:///./src/app/restore-wallet/restore-wallet.component.ts","webpack:///./src/app/seed-phrase/seed-phrase.component.html","webpack:///./src/app/seed-phrase/seed-phrase.component.scss","webpack:///./src/app/seed-phrase/seed-phrase.component.ts","webpack:///./src/app/send/send.component.html","webpack:///./src/app/send/send.component.scss","webpack:///./src/app/send/send.component.ts","webpack:///./src/app/settings/settings.component.html","webpack:///./src/app/settings/settings.component.scss","webpack:///./src/app/settings/settings.component.ts","webpack:///./src/app/sidebar/sidebar.component.html","webpack:///./src/app/sidebar/sidebar.component.scss","webpack:///./src/app/sidebar/sidebar.component.ts","webpack:///./src/app/staking/staking.component.html","webpack:///./src/app/staking/staking.component.scss","webpack:///./src/app/staking/staking.component.ts","webpack:///./src/app/transfer-alias/transfer-alias.component.html","webpack:///./src/app/transfer-alias/transfer-alias.component.scss","webpack:///./src/app/transfer-alias/transfer-alias.component.ts","webpack:///./src/app/typing-message/typing-message.component.html","webpack:///./src/app/typing-message/typing-message.component.scss","webpack:///./src/app/typing-message/typing-message.component.ts","webpack:///./src/app/wallet-details/wallet-details.component.html","webpack:///./src/app/wallet-details/wallet-details.component.scss","webpack:///./src/app/wallet-details/wallet-details.component.ts","webpack:///./src/app/wallet/wallet.component.html","webpack:///./src/app/wallet/wallet.component.scss","webpack:///./src/app/wallet/wallet.component.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import {Directive, HostListener} from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'input'\r\n})\r\nexport class InputDisableSelectionDirective {\r\n\r\n constructor() {}\r\n\r\n @HostListener('mousedown', ['$event'])\r\n handleInput(event: Event) {\r\n if ((event.target).readOnly) {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import {Directive, ElementRef, Input, HostListener} from '@angular/core';\r\nimport {VariablesService} from '../../services/variables.service';\r\n\r\n@Directive({\r\n selector: '[appInputValidate]'\r\n})\r\nexport class InputValidateDirective {\r\n\r\n private type: string;\r\n\r\n constructor(private el: ElementRef, private variablesService: VariablesService) {\r\n }\r\n\r\n @Input('appInputValidate')\r\n public set defineInputType(type: string) {\r\n this.type = type;\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n handleInput(event: Event) {\r\n if ( this.type === 'money' ) {\r\n this.moneyValidation(event);\r\n } else if ( this.type === 'integer' ) {\r\n this.integerValidation(event);\r\n }\r\n }\r\n\r\n private moneyValidation(event: Event) {\r\n let currentValue = (event.target).value;\r\n const originalValue = currentValue;\r\n const OnlyD = /[^\\d\\.]/g;\r\n const _has_error = currentValue.match(OnlyD);\r\n if (_has_error && _has_error.length) {\r\n currentValue = currentValue.replace(',', '.').replace(OnlyD, '');\r\n }\r\n const _double_separator = currentValue.match(/\\./g);\r\n if (_double_separator && _double_separator.length > 1) {\r\n currentValue = currentValue.substr(0, currentValue.lastIndexOf('.'));\r\n }\r\n if (currentValue.indexOf('.') === 0) {\r\n currentValue = '0' + currentValue;\r\n }\r\n const _zero_fill = currentValue.split('.');\r\n if (_zero_fill[0].length > 7) {\r\n _zero_fill[0] = _zero_fill[0].substr(0, 7);\r\n }\r\n\r\n if (1 in _zero_fill && _zero_fill[1].length) {\r\n _zero_fill[1] = _zero_fill[1].substr(0, this.variablesService.digits);\r\n }\r\n currentValue = _zero_fill.join('.');\r\n if (currentValue !== originalValue) {\r\n const cursorPosition = (event.target).selectionEnd;\r\n (event.target).value = currentValue;\r\n (event.target).setSelectionRange(cursorPosition, cursorPosition);\r\n (event.target).dispatchEvent(new Event('input'));\r\n }\r\n }\r\n\r\n private integerValidation(event: Event) {\r\n let currentValue = (event.target).value;\r\n const originalValue = currentValue;\r\n const OnlyD = /[^\\d]/g;\r\n const _has_error = currentValue.match(OnlyD);\r\n if (_has_error && _has_error.length) {\r\n currentValue = currentValue.replace(OnlyD, '');\r\n }\r\n if (currentValue !== originalValue) {\r\n const cursorPosition = (event.target).selectionEnd;\r\n (event.target).value = currentValue;\r\n (event.target).setSelectionRange(cursorPosition, cursorPosition);\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n {{title}}\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \":host {\\n position: fixed;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: rgba(255, 255, 255, 0.25); }\\n\\n.modal {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n background-position: center;\\n background-size: 200%;\\n padding: 2rem;\\n width: 34rem; }\\n\\n.modal .content {\\n display: flex;\\n margin: 1.2rem 0; }\\n\\n.modal .content .icon {\\n flex: 0 0 auto;\\n width: 4.4rem;\\n height: 4.4rem; }\\n\\n.modal .content .icon.error {\\n -webkit-mask: url('modal-alert.svg') no-repeat center;\\n mask: url('modal-alert.svg') no-repeat center; }\\n\\n.modal .content .icon.success {\\n -webkit-mask: url('modal-success.svg') no-repeat center;\\n mask: url('modal-success.svg') no-repeat center; }\\n\\n.modal .content .icon.info {\\n -webkit-mask: url('modal-info.svg') no-repeat center;\\n mask: url('modal-info.svg') no-repeat center; }\\n\\n.modal .content .message-container {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n margin-left: 2rem; }\\n\\n.modal .content .message-container .title {\\n font-size: 1.8rem;\\n font-weight: 600;\\n line-height: 2.2rem; }\\n\\n.modal .content .message-container .message {\\n font-size: 1.3rem;\\n line-height: 1.8rem;\\n margin-top: 0.4rem; }\\n\\n.modal .action-button {\\n margin: 1.2rem auto 0.6rem;\\n width: 10rem;\\n height: 2.4rem; }\\n\\n.modal .close-button {\\n position: absolute;\\n top: 0;\\n right: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: transparent;\\n margin: 0;\\n padding: 0;\\n width: 2.4rem;\\n height: 2.4rem; }\\n\\n.modal .close-button .icon {\\n -webkit-mask: url('close.svg') no-repeat center;\\n mask: url('close.svg') no-repeat center;\\n width: 2.4rem;\\n height: 2.4rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9tb2RhbC1jb250YWluZXIvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXF9oZWxwZXJzXFxkaXJlY3RpdmVzXFxtb2RhbC1jb250YWluZXJcXG1vZGFsLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGVBQWU7RUFDZixNQUFNO0VBQ04sU0FBUztFQUNULE9BQU87RUFDUCxRQUFRO0VBQ1IsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIscUNBQXFDLEVBQUE7O0FBRXZDO0VBQ0Usa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsMkJBQTJCO0VBQzNCLHFCQUFxQjtFQUNyQixhQUFhO0VBQ2IsWUFBWSxFQUFBOztBQVBkO0lBVUksYUFBYTtJQUNiLGdCQUFnQixFQUFBOztBQVhwQjtNQWNNLGNBQWM7TUFDZCxhQUFhO01BQ2IsY0FBYyxFQUFBOztBQWhCcEI7UUFtQlEscURBQTZEO2dCQUE3RCw2Q0FBNkQsRUFBQTs7QUFuQnJFO1FBdUJRLHVEQUErRDtnQkFBL0QsK0NBQStELEVBQUE7O0FBdkJ2RTtRQTJCUSxvREFBNEQ7Z0JBQTVELDRDQUE0RCxFQUFBOztBQTNCcEU7TUFnQ00sYUFBYTtNQUNiLHNCQUFzQjtNQUN0Qix1QkFBdUI7TUFDdkIsdUJBQXVCO01BQ3ZCLGlCQUFpQixFQUFBOztBQXBDdkI7UUF1Q1EsaUJBQWlCO1FBQ2pCLGdCQUFnQjtRQUNoQixtQkFBbUIsRUFBQTs7QUF6QzNCO1FBNkNRLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFDbkIsa0JBQWtCLEVBQUE7O0FBL0MxQjtJQXFESSwwQkFBMEI7SUFDMUIsWUFBWTtJQUNaLGNBQWMsRUFBQTs7QUF2RGxCO0lBMkRJLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sUUFBUTtJQUNSLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLHVCQUF1QjtJQUN2QixTQUFTO0lBQ1QsVUFBVTtJQUNWLGFBQWE7SUFDYixjQUFjLEVBQUE7O0FBckVsQjtNQXdFTSwrQ0FBdUQ7Y0FBdkQsdUNBQXVEO01BQ3ZELGFBQWE7TUFDYixjQUFjLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9faGVscGVycy9kaXJlY3RpdmVzL21vZGFsLWNvbnRhaW5lci9tb2RhbC1jb250YWluZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogMDtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcclxufVxyXG4ubW9kYWwge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xyXG4gIGJhY2tncm91bmQtc2l6ZTogMjAwJTtcclxuICBwYWRkaW5nOiAycmVtO1xyXG4gIHdpZHRoOiAzNHJlbTtcclxuXHJcbiAgLmNvbnRlbnQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIG1hcmdpbjogMS4ycmVtIDA7XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgICAgd2lkdGg6IDQuNHJlbTtcclxuICAgICAgaGVpZ2h0OiA0LjRyZW07XHJcblxyXG4gICAgICAmLmVycm9yIHtcclxuICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvbW9kYWwtYWxlcnQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnN1Y2Nlc3Mge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9tb2RhbC1zdWNjZXNzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5pbmZvIHtcclxuICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvbW9kYWwtaW5mby5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAubWVzc2FnZS1jb250YWluZXIge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAycmVtO1xyXG5cclxuICAgICAgLnRpdGxlIHtcclxuICAgICAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyLjJyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5tZXNzYWdlIHtcclxuICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS44cmVtO1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDAuNHJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmFjdGlvbi1idXR0b24ge1xyXG4gICAgbWFyZ2luOiAxLjJyZW0gYXV0byAwLjZyZW07XHJcbiAgICB3aWR0aDogMTByZW07XHJcbiAgICBoZWlnaHQ6IDIuNHJlbTtcclxuICB9XHJcblxyXG4gIC5jbG9zZS1idXR0b24ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgd2lkdGg6IDIuNHJlbTtcclxuICAgIGhlaWdodDogMi40cmVtO1xyXG5cclxuICAgIC5pY29uIHtcclxuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Nsb3NlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDIuNHJlbTtcclxuICAgICAgaGVpZ2h0OiAyLjRyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-modal-container',\r\n templateUrl: './modal-container.component.html',\r\n styleUrls: ['./modal-container.component.scss']\r\n})\r\nexport class ModalContainerComponent implements OnInit {\r\n\r\n public title: string;\r\n @Input() type: string;\r\n @Input() message: string;\r\n @Output() close = new EventEmitter();\r\n @ViewChild('btn') button: ElementRef;\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n ngOnInit() {\r\n this.button.nativeElement.focus();\r\n switch (this.type) {\r\n case 'error': this.title = this.translate.instant('MODALS.ERROR'); break;\r\n case 'success': this.title = this.translate.instant('MODALS.SUCCESS'); break;\r\n case 'info': this.title = this.translate.instant('MODALS.INFO'); break;\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ label | translate }}\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \".progress-bar-container {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n padding: 0 3rem;\\n width: 100%;\\n height: 3rem; }\\n .progress-bar-container .progress-bar {\\n position: absolute;\\n top: -0.7rem;\\n left: 0;\\n margin: 0 3rem;\\n width: calc(100% - 6rem);\\n height: 0.7rem; }\\n .progress-bar-container .progress-bar .progress-bar-full {\\n height: 0.7rem; }\\n .progress-bar-container .progress-labels {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n font-size: 1.2rem;\\n height: 100%; }\\n .progress-bar-container .progress-labels span {\\n flex: 1 0 0;\\n text-align: center; }\\n .progress-bar-container .progress-labels span:first-child {\\n text-align: left; }\\n .progress-bar-container .progress-labels span:last-child {\\n text-align: right; }\\n .progress-bar-container .progress-time {\\n position: absolute;\\n top: -3rem;\\n left: 50%;\\n -webkit-transform: translateX(-50%);\\n transform: translateX(-50%);\\n font-size: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9wcm9ncmVzcy1jb250YWluZXIvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXF9oZWxwZXJzXFxkaXJlY3RpdmVzXFxwcm9ncmVzcy1jb250YWluZXJcXHByb2dyZXNzLWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQjtFQUNsQixTQUFTO0VBQ1QsT0FBTztFQUNQLGVBQWU7RUFDZixXQUFXO0VBQ1gsWUFBWSxFQUFBO0VBTmQ7SUFTSSxrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLE9BQU87SUFDUCxjQUFjO0lBQ2Qsd0JBQXdCO0lBQ3hCLGNBQWMsRUFBQTtFQWRsQjtNQWlCTSxjQUFjLEVBQUE7RUFqQnBCO0lBc0JJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCO0lBQzlCLGlCQUFpQjtJQUNqQixZQUFZLEVBQUE7RUExQmhCO01BNkJNLFdBQVc7TUFDWCxrQkFBa0IsRUFBQTtFQTlCeEI7UUFpQ1EsZ0JBQWdCLEVBQUE7RUFqQ3hCO1FBcUNRLGlCQUFpQixFQUFBO0VBckN6QjtJQTJDSSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLFNBQVM7SUFDVCxtQ0FBMkI7WUFBM0IsMkJBQTJCO0lBQzNCLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9wcm9ncmVzcy1jb250YWluZXIvcHJvZ3Jlc3MtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBib3R0b206IDA7XHJcbiAgbGVmdDogMDtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAzcmVtO1xyXG5cclxuICAucHJvZ3Jlc3MtYmFyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTAuN3JlbTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBtYXJnaW46IDAgM3JlbTtcclxuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2cmVtKTtcclxuICAgIGhlaWdodDogMC43cmVtO1xyXG5cclxuICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcbiAgICAgIGhlaWdodDogMC43cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2dyZXNzLWxhYmVscyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIHNwYW4ge1xyXG4gICAgICBmbGV4OiAxIDAgMDtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2dyZXNzLXRpbWUge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAtM3JlbTtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-progress-container',\r\n templateUrl: './progress-container.component.html',\r\n styleUrls: ['./progress-container.component.scss']\r\n})\r\nexport class ProgressContainerComponent implements OnInit {\r\n\r\n @Input() width: string;\r\n @Input() labels: [];\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","module.exports = \"
\\r\\n {{ 'STAKING.SWITCH.ON' | translate }}\\r\\n \\r\\n {{ 'STAKING.SWITCH.OFF' | translate }}\\r\\n
\\r\\n\"","module.exports = \".switch {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n border-radius: 1rem;\\n cursor: pointer;\\n font-size: 1rem;\\n padding: 0.5rem;\\n width: 5rem;\\n height: 2rem; }\\n .switch .circle {\\n border-radius: 1rem;\\n width: 1.2rem;\\n height: 1.2rem; }\\n .switch .option {\\n margin: 0 0.2rem;\\n line-height: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy9zdGFraW5nLXN3aXRjaC9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcX2hlbHBlcnNcXGRpcmVjdGl2ZXNcXHN0YWtpbmctc3dpdGNoXFxzdGFraW5nLXN3aXRjaC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsOEJBQThCO0VBQzlCLG1CQUFtQjtFQUNuQixlQUFlO0VBQ2YsZUFBZTtFQUNmLGVBQWU7RUFDZixXQUFXO0VBQ1gsWUFBWSxFQUFBO0VBVGQ7SUFZSSxtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLGNBQWMsRUFBQTtFQWRsQjtJQWtCSSxnQkFBZ0I7SUFDaEIsbUJBQW1CLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9faGVscGVycy9kaXJlY3RpdmVzL3N0YWtpbmctc3dpdGNoL3N0YWtpbmctc3dpdGNoLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnN3aXRjaCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBib3JkZXItcmFkaXVzOiAxcmVtO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBmb250LXNpemU6IDFyZW07XHJcbiAgcGFkZGluZzogMC41cmVtO1xyXG4gIHdpZHRoOiA1cmVtO1xyXG4gIGhlaWdodDogMnJlbTtcclxuXHJcbiAgLmNpcmNsZSB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xyXG4gICAgd2lkdGg6IDEuMnJlbTtcclxuICAgIGhlaWdodDogMS4ycmVtO1xyXG4gIH1cclxuXHJcbiAgLm9wdGlvbiB7XHJcbiAgICBtYXJnaW46IDAgMC4ycmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuMnJlbTtcclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\r\nimport {BackendService} from '../../services/backend.service';\r\nimport {VariablesService} from '../../services/variables.service';\r\n\r\n@Component({\r\n selector: 'app-staking-switch',\r\n templateUrl: './staking-switch.component.html',\r\n styleUrls: ['./staking-switch.component.scss']\r\n})\r\nexport class StakingSwitchComponent implements OnInit {\r\n\r\n @Input() wallet_id: boolean;\r\n @Input() staking: boolean;\r\n @Output() stakingChange = new EventEmitter();\r\n\r\n constructor(private backend: BackendService, private variablesService: VariablesService) {}\r\n\r\n ngOnInit() {}\r\n\r\n toggleStaking() {\r\n const wallet = this.variablesService.getWallet(this.wallet_id);\r\n if (wallet && wallet.loaded) {\r\n this.stakingChange.emit(!this.staking);\r\n if (!this.staking) {\r\n this.backend.startPosMining(this.wallet_id);\r\n } else {\r\n this.backend.stopPosMining(this.wallet_id);\r\n }\r\n }\r\n }\r\n}\r\n","import {Directive, Input, ElementRef, HostListener, Renderer2, HostBinding, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Directive({\r\n selector: '[tooltip]'\r\n})\r\n\r\nexport class TooltipDirective implements OnDestroy {\r\n\r\n @HostBinding('style.cursor') cursor;\r\n\r\n @Input('tooltip') tooltipInner: any;\r\n @Input() placement: string;\r\n @Input() tooltipClass: string;\r\n @Input() timeout = 0;\r\n @Input() delay = 0;\r\n @Input() showWhenNoOverflow = true;\r\n tooltip: HTMLElement;\r\n\r\n removeTooltipTimeout;\r\n removeTooltipTimeoutInner;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2, private route: ActivatedRoute) {\r\n }\r\n\r\n @HostListener('mouseenter') onMouseEnter() {\r\n if (this.showWhenNoOverflow || (!this.showWhenNoOverflow && this.el.nativeElement.offsetWidth < this.el.nativeElement.scrollWidth)) {\r\n this.cursor = 'pointer';\r\n if (!this.tooltip) {\r\n this.show();\r\n } else {\r\n this.cancelHide();\r\n }\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n if (this.tooltip) {\r\n this.hide();\r\n }\r\n }\r\n\r\n show() {\r\n this.create();\r\n this.placement = this.placement === null ? 'top' : this.placement;\r\n this.setPosition(this.placement);\r\n }\r\n\r\n hide() {\r\n this.removeTooltipTimeout = setTimeout(() => {\r\n this.renderer.setStyle(this.tooltip, 'opacity', '0');\r\n this.removeTooltipTimeoutInner = setTimeout(() => {\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null;\r\n }, this.delay);\r\n }, this.timeout);\r\n }\r\n\r\n cancelHide() {\r\n clearTimeout(this.removeTooltipTimeout);\r\n clearTimeout(this.removeTooltipTimeoutInner);\r\n this.renderer.setStyle(this.tooltip, 'opacity', '1');\r\n }\r\n\r\n create() {\r\n if (typeof this.tooltipInner === 'string') {\r\n this.tooltip = this.renderer.createElement('div');\r\n this.tooltip.innerHTML = this.tooltipInner;\r\n } else {\r\n this.tooltip = this.tooltipInner;\r\n }\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n\r\n this.tooltip.addEventListener('mouseenter', () => {\r\n this.cancelHide();\r\n });\r\n this.tooltip.addEventListener('mouseleave', () => {\r\n if (this.tooltip) {\r\n this.hide();\r\n }\r\n });\r\n\r\n this.renderer.setStyle(document.body, 'position', 'relative');\r\n this.renderer.setStyle(this.tooltip, 'position', 'absolute');\r\n if (this.tooltipClass !== null) {\r\n const classes = this.tooltipClass.split(' ');\r\n for (let i = 0; i < classes.length; i++) {\r\n this.renderer.addClass(this.tooltip, classes[i]);\r\n }\r\n }\r\n this.renderer.setStyle(this.tooltip, 'opacity', '0');\r\n this.renderer.setStyle(this.tooltip, '-webkit-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-moz-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-o-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, 'transition', `opacity ${this.delay}ms`);\r\n window.setTimeout(() => {\r\n this.renderer.setStyle(this.tooltip, 'opacity', '1');\r\n }, 0);\r\n }\r\n\r\n setPosition(placement) {\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n this.renderer.addClass(this.tooltip, 'ng-tooltip-' + placement);\r\n const topExit = hostPos.top - this.tooltip.getBoundingClientRect().height - parseInt(getComputedStyle(this.tooltip).marginTop, 10) < 0;\r\n const bottomExit = window.innerHeight < hostPos.bottom + this.tooltip.getBoundingClientRect().height + parseInt(getComputedStyle(this.tooltip).marginTop, 10);\r\n\r\n switch (placement) {\r\n case 'top':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + (hostPos.right - hostPos.left) / 2 - this.tooltip.getBoundingClientRect().width / 2 + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'top-left':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom-left');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'top-right':\r\n if (topExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('bottom-right');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right - this.tooltip.offsetWidth + 'px');\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top - this.tooltip.getBoundingClientRect().height + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + (hostPos.right - hostPos.left) / 2 - this.tooltip.getBoundingClientRect().width / 2 + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom-left':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top-left');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'bottom-right':\r\n if (bottomExit) {\r\n this.renderer.removeClass(this.tooltip, 'ng-tooltip-' + placement);\r\n this.setPosition('top-right');\r\n return;\r\n } else {\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right - this.tooltip.offsetWidth + 'px');\r\n this.checkSides();\r\n }\r\n break;\r\n case 'left':\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.left - this.tooltip.getBoundingClientRect().width + 'px');\r\n break;\r\n case 'right':\r\n this.renderer.setStyle(this.tooltip, 'top', hostPos.top + 'px');\r\n this.renderer.setStyle(this.tooltip, 'left', hostPos.right + 'px');\r\n break;\r\n }\r\n }\r\n\r\n checkSides() {\r\n if (this.tooltip.getBoundingClientRect().left < 0) {\r\n this.renderer.setStyle(this.tooltip, 'left', 0);\r\n }\r\n if (this.tooltip.getBoundingClientRect().right > window.innerWidth) {\r\n this.renderer.setStyle(this.tooltip, 'left', window.innerWidth - this.tooltip.getBoundingClientRect().width + 'px');\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n clearTimeout(this.removeTooltipTimeout);\r\n clearTimeout(this.removeTooltipTimeoutInner);\r\n if (this.tooltip) {\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null;\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.ID' | translate }}\\r\\n {{transaction.tx_hash}}\\r\\n {{ 'HISTORY.DETAILS.SIZE' | translate }}\\r\\n {{ 'HISTORY.DETAILS.SIZE_VALUE' | translate : {value: transaction.tx_blob_size} }}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.HEIGHT' | translate }}\\r\\n {{transaction.height}}\\r\\n {{ 'HISTORY.DETAILS.CONFIRMATION' | translate }}\\r\\n {{transaction.height === 0 ? 0 : variablesService.height_app - transaction.height}}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.INPUTS' | translate }}\\r\\n {{inputs.join(', ')}}\\r\\n {{ 'HISTORY.DETAILS.OUTPUTS' | translate }}\\r\\n {{outputs.join(', ')}}\\r\\n
\\r\\n
\\r\\n {{ 'HISTORY.DETAILS.COMMENT' | translate }}\\r\\n {{transaction.comment}}\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%; }\\n\\n.table {\\n border-top: 0.2rem solid #ebebeb;\\n margin: 0 3rem;\\n padding: 0.5rem 0; }\\n\\n.table .row {\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n border-top: none;\\n line-height: 3rem;\\n margin: 0 -3rem;\\n width: 100%;\\n height: 3rem; }\\n\\n.table .row .cell {\\n flex-shrink: 0;\\n flex-grow: 0;\\n padding: 0 1rem;\\n overflow: hidden;\\n text-overflow: ellipsis; }\\n\\n.table .row .cell:first-child {\\n padding-left: 3rem; }\\n\\n.table .row .cell:last-child {\\n padding-right: 3rem; }\\n\\n.table .row .cell.key-value {\\n cursor: pointer; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvX2hlbHBlcnMvZGlyZWN0aXZlcy90cmFuc2FjdGlvbi1kZXRhaWxzL0Q6XFx6YW5vX3phbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxfaGVscGVyc1xcZGlyZWN0aXZlc1xcdHJhbnNhY3Rpb24tZGV0YWlsc1xcdHJhbnNhY3Rpb24tZGV0YWlscy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sT0FBTztFQUNQLFdBQVcsRUFBQTs7QUFHYjtFQUNFLGdDQUFnQztFQUNoQyxjQUFjO0VBQ2QsaUJBQWlCLEVBQUE7O0FBSG5CO0lBTUksYUFBYTtJQUNiLDJCQUEyQjtJQUMzQixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixlQUFlO0lBQ2YsV0FBVztJQUNYLFlBQVksRUFBQTs7QUFiaEI7TUFnQk0sY0FBYztNQUNkLFlBQVk7TUFDWixlQUFlO01BQ2YsZ0JBQWdCO01BQ2hCLHVCQUF1QixFQUFBOztBQXBCN0I7UUF1QlEsa0JBQWtCLEVBQUE7O0FBdkIxQjtRQTJCUSxtQkFBbUIsRUFBQTs7QUEzQjNCO1FBK0JRLGVBQWUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL19oZWxwZXJzL2RpcmVjdGl2ZXMvdHJhbnNhY3Rpb24tZGV0YWlscy90cmFuc2FjdGlvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLnRhYmxlIHtcclxuICBib3JkZXItdG9wOiAwLjJyZW0gc29saWQgI2ViZWJlYjtcclxuICBtYXJnaW46IDAgM3JlbTtcclxuICBwYWRkaW5nOiAwLjVyZW0gMDtcclxuXHJcbiAgLnJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJvcmRlci10b3A6IG5vbmU7XHJcbiAgICBsaW5lLWhlaWdodDogM3JlbTtcclxuICAgIG1hcmdpbjogMCAtM3JlbTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAzcmVtO1xyXG5cclxuICAgIC5jZWxsIHtcclxuICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgIGZsZXgtZ3JvdzogMDtcclxuICAgICAgcGFkZGluZzogMCAxcmVtO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogM3JlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmtleS12YWx1ZSB7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, OnDestroy, Input} from '@angular/core';\r\nimport {Transaction} from '../../models/transaction.model';\r\nimport {VariablesService} from '../../services/variables.service';\r\nimport {BackendService} from '../../services/backend.service';\r\nimport {IntToMoneyPipe} from '../../pipes/int-to-money.pipe';\r\n\r\n@Component({\r\n selector: 'app-transaction-details',\r\n templateUrl: './transaction-details.component.html',\r\n styleUrls: ['./transaction-details.component.scss']\r\n})\r\nexport class TransactionDetailsComponent implements OnInit, OnDestroy {\r\n\r\n @Input() transaction: Transaction;\r\n @Input() sizes: Array;\r\n inputs: Array = [];\r\n outputs: Array = [];\r\n\r\n constructor(public variablesService: VariablesService, private backendService: BackendService, private intToMoneyPipe: IntToMoneyPipe) {}\r\n\r\n ngOnInit() {\r\n for (const input in this.transaction.td['spn']) {\r\n if (this.transaction.td['spn'].hasOwnProperty(input)) {\r\n this.inputs.push(this.intToMoneyPipe.transform(this.transaction.td['spn'][input]));\r\n }\r\n }\r\n for (const output in this.transaction.td['rcv']) {\r\n if (this.transaction.td['rcv'].hasOwnProperty(output)) {\r\n this.outputs.push(this.intToMoneyPipe.transform(this.transaction.td['rcv'][output]));\r\n }\r\n }\r\n }\r\n\r\n openInBrowser(tr) {\r\n this.backendService.openUrlInBrowser('explorer.zano.org/transaction/' + tr);\r\n }\r\n\r\n ngOnDestroy() {}\r\n}\r\n","import {BigNumber} from 'bignumber.js';\r\n\r\nexport class Transaction {\r\n amount: BigNumber;\r\n comment: string;\r\n contract: any[];\r\n fee: BigNumber;\r\n height: number;\r\n is_income: boolean;\r\n is_mining: boolean;\r\n is_mixing: boolean;\r\n is_service: boolean;\r\n payment_id: string;\r\n show_sender: boolean;\r\n td: object;\r\n timestamp: number;\r\n tx_blob_size: number;\r\n tx_hash: string;\r\n tx_type: number;\r\n unlock_time: number;\r\n\r\n sortAmount?: BigNumber;\r\n sortFee?: BigNumber;\r\n}\r\n","import {Contract} from './contract.model';\r\nimport {Transaction} from './transaction.model';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\nexport class Wallet {\r\n wallet_id: number;\r\n name: string;\r\n pass: string;\r\n path: string;\r\n address: string;\r\n balance: BigNumber;\r\n unlocked_balance: BigNumber;\r\n mined_total: number;\r\n tracking_hey: string;\r\n alias_available: boolean;\r\n\r\n alias?: object;\r\n wakeAlias?: boolean;\r\n staking?: boolean;\r\n new_messages?: number;\r\n new_contracts?: number;\r\n\r\n history: Array = [];\r\n excluded_history: Array = [];\r\n\r\n contracts: Array = [];\r\n\r\n progress?: number;\r\n loaded?: boolean;\r\n\r\n send_data?: any = {\r\n address: null,\r\n amount: null,\r\n comment: null,\r\n mixin: null,\r\n fee: null\r\n };\r\n\r\n constructor(id, name, pass, path, address, balance, unlocked_balance, mined = 0, tracking = '') {\r\n this.wallet_id = id;\r\n this.name = name;\r\n this.pass = pass;\r\n this.path = path;\r\n this.address = address;\r\n this.balance = balance;\r\n this.unlocked_balance = unlocked_balance;\r\n this.mined_total = mined;\r\n this.tracking_hey = tracking;\r\n\r\n this.alias = {};\r\n this.staking = false;\r\n this.new_messages = 0;\r\n this.new_contracts = 0;\r\n\r\n this.history = [];\r\n this.excluded_history = [];\r\n\r\n this.progress = 0;\r\n this.loaded = false;\r\n }\r\n\r\n getMoneyEquivalent(equivalent) {\r\n return this.balance.multipliedBy(equivalent).toFixed(0);\r\n }\r\n\r\n havePass(): boolean {\r\n return (this.pass !== '' && this.pass !== null);\r\n }\r\n\r\n isActive(id): boolean {\r\n return this.wallet_id === id;\r\n }\r\n\r\n prepareHistoryItem(item: Transaction): any {\r\n if (item.tx_type === 4) {\r\n item.sortFee = item.amount.plus(item.fee).negated();\r\n item.sortAmount = new BigNumber(0);\r\n } else if (item.tx_type === 3) {\r\n item.sortFee = new BigNumber(0);\r\n } else if ((item.hasOwnProperty('contract') && (item.contract[0].state === 3 || item.contract[0].state === 6 || item.contract[0].state === 601) && !item.contract[0].is_a)) {\r\n item.sortFee = item.fee.negated();\r\n item.sortAmount = item.amount.negated();\r\n } else {\r\n if (!item.is_income) {\r\n item.sortFee = item.fee.negated();\r\n item.sortAmount = item.amount.negated();\r\n } else {\r\n item.sortAmount = item.amount;\r\n }\r\n }\r\n return item;\r\n }\r\n\r\n prepareHistory(items: Transaction[]): void {\r\n for (let i = 0; i < items.length; i++) {\r\n if ((items[i].tx_type === 7 && items[i].is_income) || (items[i].tx_type === 11 && items[i].is_income) || (items[i].amount.eq(0) && items[i].fee.eq(0))) {\r\n let exists = false;\r\n for (let j = 0; j < this.excluded_history.length; j++) {\r\n if (this.excluded_history[j].tx_hash === items[i].tx_hash) {\r\n exists = true;\r\n if (this.excluded_history[j].height !== items[i].height) {\r\n this.excluded_history[j] = items[i];\r\n }\r\n break;\r\n }\r\n }\r\n if (!exists) {\r\n this.excluded_history.push(items[i]);\r\n }\r\n } else {\r\n let exists = false;\r\n for (let j = 0; j < this.history.length; j++) {\r\n if (this.history[j].tx_hash === items[i].tx_hash) {\r\n exists = true;\r\n if (this.history[j].height !== items[i].height) {\r\n this.history[j] = this.prepareHistoryItem(items[i]);\r\n }\r\n break;\r\n }\r\n }\r\n if (!exists) {\r\n if (this.history.length && items[i].timestamp >= this.history[0].timestamp) {\r\n this.history.unshift(this.prepareHistoryItem(items[i]));\r\n } else {\r\n this.history.push(this.prepareHistoryItem(items[i]));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeFromHistory(hash: string): void {\r\n for (let i = 0; i < this.history.length; i++) {\r\n if (this.history[i].tx_hash === hash) {\r\n this.history.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n prepareContractsAfterOpen(items: any[], exp_med_ts, height_app, viewedContracts, notViewedContracts): void {\r\n const wallet = this;\r\n for (let i = 0; i < items.length; i++) {\r\n const contract = items[i];\r\n let contractTransactionExist = false;\r\n if (wallet && wallet.history) {\r\n contractTransactionExist = wallet.history.some(elem => elem.contract && elem.contract.length && elem.contract[0].contract_id === contract.contract_id);\r\n }\r\n if (!contractTransactionExist && wallet && wallet.excluded_history) {\r\n contractTransactionExist = wallet.excluded_history.some(elem => elem.contract && elem.contract.length && elem.contract[0].contract_id === contract.contract_id);\r\n }\r\n\r\n if (!contractTransactionExist) {\r\n contract.state = 140;\r\n } else if (contract.state === 1 && contract.expiration_time < exp_med_ts) {\r\n contract.state = 110;\r\n } else if (contract.state === 2 && contract.cancel_expiration_time !== 0 && contract.cancel_expiration_time < exp_med_ts && contract.height === 0) {\r\n const searchResult1 = viewedContracts.some(elem => elem.state === 2 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (!searchResult1) {\r\n contract.state = 130;\r\n contract.is_new = true;\r\n }\r\n } else if (contract.state === 1) {\r\n const searchResult2 = notViewedContracts.find(elem => elem.state === 110 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult2) {\r\n if (searchResult2.time === contract.expiration_time) {\r\n contract.state = 110;\r\n } else {\r\n for (let j = 0; j < notViewedContracts.length; j++) {\r\n if (notViewedContracts[j].contract_id === contract.contract_id && notViewedContracts[j].is_a === contract.is_a) {\r\n notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < viewedContracts.length; j++) {\r\n if (viewedContracts[j].contract_id === contract.contract_id && viewedContracts[j].is_a === contract.is_a) {\r\n viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 2 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 201;\r\n } else if (contract.state === 2) {\r\n const searchResult3 = viewedContracts.some(elem => elem.state === 120 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult3) {\r\n contract.state = 120;\r\n }\r\n } else if (contract.state === 5) {\r\n const searchResult4 = notViewedContracts.find(elem => elem.state === 130 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult4) {\r\n if (searchResult4.time === contract.cancel_expiration_time) {\r\n contract.state = 130;\r\n } else {\r\n for (let j = 0; j < notViewedContracts.length; j++) {\r\n if (notViewedContracts[j].contract_id === contract.contract_id && notViewedContracts[j].is_a === contract.is_a) {\r\n notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < viewedContracts.length; j++) {\r\n if (viewedContracts[j].contract_id === contract.contract_id && viewedContracts[j].is_a === contract.is_a) {\r\n viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 6 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 601;\r\n }\r\n const searchResult = viewedContracts.some(elem => elem.state === contract.state && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n contract.is_new = !searchResult;\r\n\r\n contract['private_detailes'].a_pledge = contract['private_detailes'].a_pledge.plus(contract['private_detailes'].to_pay);\r\n\r\n wallet.contracts.push(contract);\r\n }\r\n this.recountNewContracts();\r\n }\r\n\r\n recountNewContracts() {\r\n this.new_contracts = (this.contracts.filter(item => item.is_new === true )).length;\r\n }\r\n\r\n getContract(id): Contract {\r\n for (let i = 0; i < this.contracts.length; i++) {\r\n if (this.contracts[i].contract_id === id) {\r\n return this.contracts[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'contractStatusMessages'\r\n})\r\nexport class ContractStatusMessagesPipe implements PipeTransform {\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n getStateSeller(stateNum: number): string {\r\n const state = {part1: '', part2: ''};\r\n switch (stateNum) {\r\n case 1:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NEW_CONTRACT');\r\n break;\r\n case 110:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.IGNORED');\r\n break;\r\n case 201:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.ACCEPTED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.WAIT');\r\n break;\r\n case 2:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.BUYER_WAIT');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.PLEDGES_MADE');\r\n break;\r\n case 3:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.COMPLETED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.RECEIVED');\r\n break;\r\n case 4:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NOT_RECEIVED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.NULLIFIED');\r\n break;\r\n case 5:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.PROPOSAL_CANCEL');\r\n break;\r\n case 601:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.BEING_CANCELLED');\r\n break;\r\n case 6:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.CANCELLED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.PLEDGES_RETURNED');\r\n break;\r\n case 130:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.IGNORED_CANCEL');\r\n break;\r\n case 140:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.SELLER.EXPIRED');\r\n break;\r\n }\r\n return state.part1 + (state.part2.length ? '. ' + state.part2 : '');\r\n }\r\n\r\n getStateBuyer(stateNum: number): string {\r\n const state = {part1: '', part2: ''};\r\n switch (stateNum) {\r\n case 1:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.PLEDGE_RESERVED');\r\n break;\r\n case 110:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.IGNORED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.PLEDGE_UNBLOCKED');\r\n break;\r\n case 201:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.ACCEPTED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAIT');\r\n break;\r\n case 2:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.ACCEPTED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.PLEDGES_MADE');\r\n break;\r\n case 120:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING_SELLER');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.PLEDGES_MADE');\r\n break;\r\n case 3:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.COMPLETED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.RECEIVED');\r\n break;\r\n case 4:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.NOT_RECEIVED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.NULLIFIED');\r\n break;\r\n case 5:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.WAITING_CANCEL');\r\n break;\r\n case 601:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.BEING_CANCELLED');\r\n break;\r\n case 6:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.CANCELLED');\r\n state.part2 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.PLEDGES_RETURNED');\r\n break;\r\n case 130:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.IGNORED_CANCEL');\r\n break;\r\n case 140:\r\n state.part1 = this.translate.instant('CONTRACTS.STATUS_MESSAGES.BUYER.EXPIRED');\r\n break;\r\n }\r\n return state.part1 + (state.part2.length ? '. ' + state.part2 : '');\r\n }\r\n\r\n transform(item: any, args?: any): any {\r\n if (item.is_a) {\r\n return this.getStateBuyer(item.state);\r\n } else {\r\n return this.getStateSeller(item.state);\r\n }\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'contractTimeLeft'\r\n})\r\nexport class ContractTimeLeftPipe implements PipeTransform {\r\n\r\n constructor(private service: VariablesService, private translate: TranslateService) {}\r\n\r\n transform(value: any, arg?: any): any {\r\n const time = parseInt(((parseInt(value, 10) - this.service.exp_med_ts) / 3600).toFixed(0), 10);\r\n const type = arg || 0;\r\n if (time === 0) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_LESS_ONE');\r\n }\r\n if (this.service.settings.language === 'en') {\r\n if (type === 0) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY', {time: time});\r\n }\r\n } else if (type === 1) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_RESPONSE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_RESPONSE', {time: time});\r\n }\r\n } else if (type === 2) {\r\n if (time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_WAITING', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_WAITING', {time: time});\r\n }\r\n }\r\n } else {\r\n const rest = time % 10;\r\n if (type === 0) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT', {time: time});\r\n }\r\n } else if (type === 1) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_RESPONSE', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_RESPONSE', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT_RESPONSE', {time: time});\r\n }\r\n } else if (type === 2) {\r\n if (((time > 20 ) && (rest === 1)) || time === 1) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_ONE_WAITING', {time: time});\r\n } else if ((time > 1) && (time < 5) || ((time > 20 ) && (rest === 2 || rest === 3 || rest === 4))) {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_WAITING', {time: time});\r\n } else {\r\n return this.translate.instant('CONTRACTS.TIME_LEFT.REMAINING_MANY_ALT_WAITING', {time: time});\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Pipe({\r\n name: 'historyTypeMessages'\r\n})\r\nexport class HistoryTypeMessagesPipe implements PipeTransform {\r\n\r\n constructor(private translate: TranslateService) {}\r\n\r\n transform(item: any, args?: any): any {\r\n\r\n if (item.tx_type === 0) {\r\n if (item.remote_addresses && item.remote_addresses[0]) {\r\n return item.remote_addresses[0];\r\n } else {\r\n if (item.is_income) {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.HIDDEN');\r\n } else {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UNDEFINED');\r\n }\r\n }\r\n } else if (item.tx_type === 6 && item.height === 0) {\r\n return 'unknown';\r\n } else if (item.tx_type === 9) {\r\n if (item.hasOwnProperty('contract') && item.contract[0].is_a) {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.COMPLETE_BUYER');\r\n } else {\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.COMPLETE_SELLER');\r\n }\r\n } else {\r\n switch (item.tx_type) {\r\n // case 0:\r\n // return '';\r\n // case 1:\r\n // return '';\r\n // case 2:\r\n // return '';\r\n // case 3:\r\n // return '';\r\n case 4:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CREATE_ALIAS');\r\n case 5:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UPDATE_ALIAS');\r\n case 6:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.MINED');\r\n case 7:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CREATE_CONTRACT');\r\n case 8:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.PLEDGE_CONTRACT');\r\n // case 9:\r\n // return '';\r\n case 10:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.NULLIFY_CONTRACT');\r\n case 11:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.PROPOSAL_CANCEL_CONTRACT');\r\n case 12:\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.CANCEL_CONTRACT');\r\n }\r\n }\r\n\r\n return this.translate.instant('HISTORY.TYPE_MESSAGES.UNDEFINED');\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Pipe({\r\n name: 'intToMoney'\r\n})\r\nexport class IntToMoneyPipe implements PipeTransform {\r\n\r\n constructor(private variablesService: VariablesService) {}\r\n\r\n transform(value: any, args?: any): any {\r\n if (value === 0 || value === undefined) {\r\n return '0';\r\n }\r\n let maxFraction = this.variablesService.digits;\r\n if (args) {\r\n maxFraction = parseInt(args, 10);\r\n }\r\n const power = Math.pow(10, this.variablesService.digits);\r\n let str = (new BigNumber(value)).div(power).toFixed(maxFraction);\r\n\r\n for (let i = str.length - 1; i >= 0; i--) {\r\n if (str[i] !== '0') {\r\n str = str.substr(0, i + 1);\r\n break;\r\n }\r\n }\r\n if (str[str.length - 1] === '.') {\r\n str = str.substr(0, str.length - 1);\r\n }\r\n return str;\r\n }\r\n\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\nimport {VariablesService} from '../services/variables.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Pipe({\r\n name: 'moneyToInt'\r\n})\r\nexport class MoneyToIntPipe implements PipeTransform {\r\n\r\n constructor(private variablesService: VariablesService) {}\r\n\r\n transform(value: any, args?: any): any {\r\n const CURRENCY_DISPLAY_DECIMAL_POINT = this.variablesService.digits;\r\n let result;\r\n if (value) {\r\n let am_str = value.toString().trim();\r\n const point_index = am_str.indexOf('.');\r\n let fraction_size = 0;\r\n if (-1 !== point_index) {\r\n fraction_size = am_str.length - point_index - 1;\r\n while (CURRENCY_DISPLAY_DECIMAL_POINT < fraction_size && '0' === am_str[am_str.length - 1]) {\r\n am_str = am_str.slice(0, am_str.length - 1);\r\n --fraction_size;\r\n }\r\n if (CURRENCY_DISPLAY_DECIMAL_POINT < fraction_size) {\r\n return undefined;\r\n }\r\n am_str = am_str.slice(0, point_index) + am_str.slice(point_index + 1, am_str.length);\r\n } else {\r\n fraction_size = 0;\r\n }\r\n if (!am_str.length) {\r\n return undefined;\r\n }\r\n if (fraction_size < CURRENCY_DISPLAY_DECIMAL_POINT) {\r\n for (let i = 0; i !== CURRENCY_DISPLAY_DECIMAL_POINT - fraction_size; i++) {\r\n am_str = am_str + '0';\r\n }\r\n }\r\n result = (new BigNumber(am_str)).integerValue();\r\n }\r\n return result;\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {VariablesService} from './variables.service';\r\nimport {ModalService} from './modal.service';\r\nimport {MoneyToIntPipe} from '../pipes/money-to-int.pipe';\r\nimport JSONBigNumber from 'json-bignumber';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Injectable()\r\nexport class BackendService {\r\n\r\n backendObject: any;\r\n backendLoaded = false;\r\n\r\n constructor(private translate: TranslateService, private variablesService: VariablesService, private modalService: ModalService, private moneyToIntPipe: MoneyToIntPipe) {}\r\n\r\n private Debug(type, message) {\r\n switch (type) {\r\n case 0:\r\n console.error(message);\r\n break;\r\n case 1:\r\n console.warn(message);\r\n break;\r\n case 2:\r\n console.log(message);\r\n break;\r\n default:\r\n console.log(message);\r\n break;\r\n }\r\n }\r\n\r\n private informerRun(error, params, command) {\r\n let error_translate = '';\r\n\r\n switch (error) {\r\n case 'NOT_ENOUGH_MONEY':\r\n error_translate = 'ERRORS.NOT_ENOUGH_MONEY';\r\n break;\r\n case 'CORE_BUSY':\r\n if (command !== 'get_all_aliases') {\r\n error_translate = 'ERRORS.CORE_BUSY';\r\n }\r\n break;\r\n case 'OVERFLOW':\r\n if (command !== 'get_all_aliases') {\r\n error_translate = '';\r\n }\r\n break;\r\n case 'INTERNAL_ERROR:daemon is busy':\r\n error_translate = 'ERRORS.DAEMON_BUSY';\r\n break;\r\n case 'INTERNAL_ERROR:not enough money':\r\n case 'INTERNAL_ERROR:NOT_ENOUGH_MONEY':\r\n if (command === 'cancel_offer') {\r\n error_translate = this.translate.instant('ERRORS.NO_MONEY_REMOVE_OFFER', {\r\n 'fee': this.variablesService.default_fee,\r\n 'currency': this.variablesService.defaultCurrency\r\n });\r\n } else {\r\n error_translate = 'INFORMER.NO_MONEY';\r\n }\r\n break;\r\n case 'INTERNAL_ERROR:not enough outputs to mix':\r\n error_translate = 'ERRORS.NOT_ENOUGH_OUTPUTS_TO_MIX';\r\n break;\r\n case 'INTERNAL_ERROR:transaction is too big':\r\n error_translate = 'ERRORS.TRANSACTION_IS_TO_BIG';\r\n break;\r\n case 'INTERNAL_ERROR:Transfer attempt while daemon offline':\r\n error_translate = 'ERRORS.TRANSFER_ATTEMPT';\r\n break;\r\n case 'ACCESS_DENIED':\r\n error_translate = 'ERRORS.ACCESS_DENIED';\r\n break;\r\n case 'INTERNAL_ERROR:transaction was rejected by daemon':\r\n // if (command === 'request_alias_registration') {\r\n // error_translate = 'INFORMER.ALIAS_IN_REGISTER';\r\n // } else {\r\n error_translate = 'ERRORS.TRANSACTION_ERROR';\r\n // }\r\n break;\r\n case 'INTERNAL_ERROR':\r\n error_translate = 'ERRORS.TRANSACTION_ERROR';\r\n break;\r\n case 'BAD_ARG':\r\n error_translate = 'ERRORS.BAD_ARG';\r\n break;\r\n case 'WALLET_WRONG_ID':\r\n error_translate = 'ERRORS.WALLET_WRONG_ID';\r\n break;\r\n case 'WRONG_PASSWORD':\r\n case 'WRONG_PASSWORD:invalid password':\r\n params = JSON.parse(params);\r\n if (!params.testEmpty) {\r\n error_translate = 'ERRORS.WRONG_PASSWORD';\r\n }\r\n break;\r\n case 'FILE_RESTORED':\r\n if (command === 'open_wallet') {\r\n error_translate = 'ERRORS.FILE_RESTORED';\r\n }\r\n break;\r\n case 'FILE_NOT_FOUND':\r\n if (command !== 'open_wallet' && command !== 'get_alias_info_by_name' && command !== 'get_alias_info_by_address') {\r\n error_translate = this.translate.instant('ERRORS.FILE_NOT_FOUND');\r\n params = JSON.parse(params);\r\n if (params.path) {\r\n error_translate += ': ' + params.path;\r\n }\r\n }\r\n break;\r\n case 'NOT_FOUND': if (command !== 'open_wallet' && command !== 'get_alias_info_by_name' && command !== 'get_alias_info_by_address') {\r\n error_translate = this.translate.instant('ERRORS.FILE_NOT_FOUND');\r\n params = JSON.parse(params);\r\n if (params.path) {\r\n error_translate += ': ' + params.path;\r\n }\r\n }\r\n break;\r\n case 'CANCELED':\r\n case '':\r\n break;\r\n case 'FAIL':\r\n if (command === 'create_proposal' || command === 'accept_proposal' || command === 'release_contract' || command === 'request_cancel_contract' || command === 'accept_cancel_contract') {\r\n error_translate = ' ';\r\n }\r\n break;\r\n case 'ALREADY_EXISTS':\r\n error_translate = 'ERRORS.FILE_EXIST';\r\n break;\r\n default:\r\n error_translate = error;\r\n }\r\n if (error.indexOf('FAIL:failed to save file') > -1) {\r\n error_translate = 'ERRORS.FILE_NOT_SAVED';\r\n }\r\n if (error_translate !== '') {\r\n this.modalService.prepareModal('error', error_translate);\r\n }\r\n }\r\n\r\n private bigNumberParser(key, val) {\r\n if (val.constructor.name === 'BigNumber' && ['balance', 'unlocked_balance', 'amount', 'fee', 'b_fee', 'to_pay', 'a_pledge', 'b_pledge', 'coast', 'a'].indexOf(key) === -1) {\r\n return val.toNumber();\r\n }\r\n if (key === 'rcv' || key === 'spn') {\r\n for (let i = 0; i < val.length; i++) {\r\n val[i] = new BigNumber(val[i]);\r\n }\r\n }\r\n return val;\r\n }\r\n\r\n private commandDebug(command, params, result) {\r\n this.Debug(2, '----------------- ' + command + ' -----------------');\r\n const debug = {\r\n _send_params: params,\r\n _result: result\r\n };\r\n this.Debug(2, debug);\r\n try {\r\n this.Debug(2, JSONBigNumber.parse(result, this.bigNumberParser));\r\n } catch (e) {\r\n this.Debug(2, {response_data: result, error_code: 'OK'});\r\n }\r\n }\r\n\r\n private asVal(data) {\r\n return {v: data};\r\n }\r\n\r\n private backendCallback(resultStr, params, callback, command) {\r\n let Result = resultStr;\r\n if (command !== 'get_clipboard') {\r\n if (!resultStr || resultStr === '') {\r\n Result = {};\r\n } else {\r\n try {\r\n Result = JSONBigNumber.parse(resultStr, this.bigNumberParser);\r\n } catch (e) {\r\n Result = {response_data: resultStr, error_code: 'OK'};\r\n }\r\n }\r\n } else {\r\n Result = {\r\n error_code: 'OK',\r\n response_data: Result\r\n };\r\n }\r\n\r\n const Status = (Result.error_code === 'OK' || Result.error_code === 'TRUE');\r\n\r\n if (!Status && Status !== undefined && Result.error_code !== undefined) {\r\n this.Debug(1, 'API error for command: \"' + command + '\". Error code: ' + Result.error_code);\r\n }\r\n const data = ((typeof Result === 'object') && 'response_data' in Result) ? Result.response_data : Result;\r\n\r\n let res_error_code = false;\r\n if (typeof Result === 'object' && 'error_code' in Result && Result.error_code !== 'OK' && Result.error_code !== 'TRUE' && Result.error_code !== 'FALSE') {\r\n this.informerRun(Result.error_code, params, command);\r\n res_error_code = Result.error_code;\r\n }\r\n\r\n // if ( command === 'get_offers_ex' ){\r\n // Service.printLog( \"get_offers_ex offers count \"+((data.offers)?data.offers.length:0) );\r\n // }\r\n\r\n if (typeof callback === 'function') {\r\n callback(Status, data, res_error_code);\r\n } else {\r\n return data;\r\n }\r\n }\r\n\r\n\r\n private runCommand(command, params?, callback?) {\r\n if (this.backendObject) {\r\n const Action = this.backendObject[command];\r\n if (!Action) {\r\n this.Debug(0, 'Run Command Error! Command \"' + command + '\" don\\'t found in backendObject');\r\n } else {\r\n const that = this;\r\n params = (typeof params === 'string') ? params : JSONBigNumber.stringify(params);\r\n if (params === undefined || params === '{}') {\r\n Action(function (resultStr) {\r\n that.commandDebug(command, params, resultStr);\r\n return that.backendCallback(resultStr, params, callback, command);\r\n });\r\n } else {\r\n Action(params, function (resultStr) {\r\n that.commandDebug(command, params, resultStr);\r\n return that.backendCallback(resultStr, params, callback, command);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n eventSubscribe(command, callback) {\r\n if (command === 'on_core_event') {\r\n this.backendObject[command].connect(callback);\r\n } else {\r\n this.backendObject[command].connect((str) => {\r\n callback(JSONBigNumber.parse(str, this.bigNumberParser));\r\n });\r\n }\r\n }\r\n\r\n\r\n initService() {\r\n return new Observable(\r\n observer => {\r\n if (!this.backendLoaded) {\r\n this.backendLoaded = true;\r\n const that = this;\r\n (window).QWebChannel((window).qt.webChannelTransport, function (channel) {\r\n that.backendObject = channel.objects.mediator_object;\r\n observer.next('ok');\r\n });\r\n } else {\r\n if (!this.backendObject) {\r\n observer.error('error');\r\n observer.error('error');\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n webkitLaunchedScript() {\r\n return this.runCommand('webkit_launched_script');\r\n }\r\n\r\n quitRequest() {\r\n return this.runCommand('on_request_quit');\r\n }\r\n\r\n getAppData(callback) {\r\n this.runCommand('get_app_data', {}, callback);\r\n }\r\n\r\n storeAppData(callback?) {\r\n this.runCommand('store_app_data', this.variablesService.settings, callback);\r\n }\r\n\r\n getSecureAppData(pass, callback) {\r\n this.runCommand('get_secure_app_data', pass, callback);\r\n }\r\n\r\n storeSecureAppData(callback) {\r\n if (this.variablesService.appPass === '') {\r\n return callback(false);\r\n }\r\n const wallets = [];\r\n this.variablesService.wallets.forEach((wallet) => {\r\n wallets.push({name: wallet.name, pass: wallet.pass, path: wallet.path});\r\n });\r\n this.backendObject['store_secure_app_data'](JSON.stringify(wallets), this.variablesService.appPass, (dataStore) => {\r\n this.backendCallback(dataStore, {}, callback, 'store_secure_app_data');\r\n });\r\n }\r\n\r\n haveSecureAppData(callback) {\r\n this.runCommand('have_secure_app_data', {}, callback);\r\n }\r\n\r\n saveFileDialog(caption, fileMask, default_path, callback) {\r\n const dir = default_path ? default_path : '/';\r\n const params = {\r\n caption: caption,\r\n filemask: fileMask,\r\n default_dir: dir\r\n };\r\n this.runCommand('show_savefile_dialog', params, callback);\r\n }\r\n\r\n openFileDialog(caption, fileMask, default_path, callback) {\r\n const dir = default_path ? default_path : '/';\r\n const params = {\r\n caption: caption,\r\n filemask: fileMask,\r\n default_dir: dir\r\n };\r\n this.runCommand('show_openfile_dialog', params, callback);\r\n }\r\n\r\n generateWallet(path, pass, callback) {\r\n const params = {\r\n path: path,\r\n pass: pass\r\n };\r\n this.runCommand('generate_wallet', params, callback);\r\n }\r\n\r\n openWallet(path, pass, testEmpty, callback) {\r\n const params = {\r\n path: path,\r\n pass: pass\r\n };\r\n params['testEmpty'] = !!(testEmpty);\r\n this.runCommand('open_wallet', params, callback);\r\n }\r\n\r\n closeWallet(wallet_id, callback) {\r\n this.runCommand('close_wallet', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n getSmartWalletInfo(wallet_id, callback) {\r\n this.runCommand('get_smart_wallet_info', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n runWallet(wallet_id, callback) {\r\n this.runCommand('run_wallet', {wallet_id: +wallet_id}, callback);\r\n }\r\n\r\n isValidRestoreWalletText(text, callback) {\r\n this.runCommand('is_valid_restore_wallet_text', text, callback);\r\n }\r\n\r\n restoreWallet(path, pass, restore_key, callback) {\r\n const params = {\r\n restore_key: restore_key,\r\n path: path,\r\n pass: pass\r\n };\r\n this.runCommand('restore_wallet', params, callback);\r\n }\r\n\r\n sendMoney(from_wallet_id, to_address, amount, fee, mixin, comment, callback) {\r\n const params = {\r\n wallet_id: parseInt(from_wallet_id, 10),\r\n destinations: [\r\n {\r\n address: to_address,\r\n amount: amount\r\n }\r\n ],\r\n mixin_count: (mixin) ? parseInt(mixin, 10) : 0,\r\n lock_time: 0,\r\n fee: this.moneyToIntPipe.transform(fee),\r\n comment: comment,\r\n push_payer: true\r\n };\r\n this.runCommand('transfer', params, callback);\r\n }\r\n\r\n validateAddress(address, callback) {\r\n this.runCommand('validate_address', address, callback);\r\n }\r\n\r\n setClipboard(str, callback?) {\r\n return this.runCommand('set_clipboard', str, callback);\r\n }\r\n\r\n getClipboard(callback) {\r\n return this.runCommand('get_clipboard', {}, callback);\r\n }\r\n\r\n createProposal(wallet_id, title, comment, a_addr, b_addr, to_pay, a_pledge, b_pledge, time, payment_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n details: {\r\n t: title,\r\n c: comment,\r\n a_addr: a_addr,\r\n b_addr: b_addr,\r\n to_pay: this.moneyToIntPipe.transform(to_pay),\r\n a_pledge: this.moneyToIntPipe.transform((new BigNumber(a_pledge)).minus(to_pay).toString()),\r\n b_pledge: this.moneyToIntPipe.transform(b_pledge)\r\n },\r\n payment_id: payment_id,\r\n expiration_period: parseInt(time, 10) * 60 * 60,\r\n fee: this.variablesService.default_fee_big,\r\n b_fee: this.variablesService.default_fee_big\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('create_proposal', params, callback);\r\n }\r\n\r\n getContracts(wallet_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10)\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('get_contracts', params, callback);\r\n }\r\n\r\n acceptProposal(wallet_id, contract_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('accept_proposal', params, callback);\r\n }\r\n\r\n releaseProposal(wallet_id, contract_id, release_type, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id,\r\n release_type: release_type // \"normal\" or \"burn\"\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('release_contract', params, callback);\r\n }\r\n\r\n requestCancelContract(wallet_id, contract_id, time, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id,\r\n fee: this.variablesService.default_fee_big,\r\n expiration_period: parseInt(time, 10) * 60 * 60\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('request_cancel_contract', params, callback);\r\n }\r\n\r\n acceptCancelContract(wallet_id, contract_id, callback) {\r\n const params = {\r\n wallet_id: parseInt(wallet_id, 10),\r\n contract_id: contract_id\r\n };\r\n this.Debug(1, params);\r\n this.runCommand('accept_cancel_contract', params, callback);\r\n }\r\n\r\n getMiningHistory(wallet_id, callback) {\r\n this.runCommand('get_mining_history', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n startPosMining(wallet_id, callback?) {\r\n this.runCommand('start_pos_mining', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n stopPosMining(wallet_id, callback?) {\r\n this.runCommand('stop_pos_mining', {wallet_id: parseInt(wallet_id, 10)}, callback);\r\n }\r\n\r\n openUrlInBrowser(url, callback?) {\r\n this.runCommand('open_url_in_browser', url, callback);\r\n }\r\n\r\n start_backend(node, host, port, callback) {\r\n const params = {\r\n configure_for_remote_node: node,\r\n remote_node_host: host,\r\n remote_node_port: parseInt(port, 10)\r\n };\r\n this.runCommand('start_backend', params, callback);\r\n }\r\n\r\n getDefaultFee(callback) {\r\n this.runCommand('get_default_fee', {}, callback);\r\n }\r\n\r\n setBackendLocalization(stringsArray, title, callback?) {\r\n const params = {\r\n strings: stringsArray,\r\n language_title: title\r\n };\r\n this.runCommand('set_localization_strings', params, callback);\r\n }\r\n\r\n registerAlias (wallet_id, alias, address, fee, comment, reward, callback) {\r\n const params = {\r\n wallet_id: wallet_id,\r\n alias: {\r\n alias: alias,\r\n address: address,\r\n tracking_key: '',\r\n comment: comment\r\n },\r\n fee: this.moneyToIntPipe.transform(fee),\r\n reward: this.moneyToIntPipe.transform(reward)\r\n };\r\n this.runCommand('request_alias_registration', params, callback);\r\n }\r\n\r\n updateAlias (wallet_id, alias, fee, callback) {\r\n const params = {\r\n wallet_id: wallet_id,\r\n alias: {\r\n alias: alias.name.replace('@', ''),\r\n address: alias.address,\r\n tracking_key: '',\r\n comment: alias.comment\r\n },\r\n fee: this.moneyToIntPipe.transform(fee)\r\n };\r\n this.runCommand('request_alias_update', params, callback);\r\n }\r\n\r\n getAllAliases (callback) {\r\n this.runCommand('get_all_aliases', {}, callback);\r\n }\r\n\r\n getAliasByName (value, callback) {\r\n return this.runCommand('get_alias_info_by_name', value, callback);\r\n }\r\n\r\n getAliasByAddress (value, callback) {\r\n return this.runCommand('get_alias_info_by_address', value, callback);\r\n }\r\n\r\n getAliasCoast (alias, callback) {\r\n this.runCommand('get_alias_coast', {v: alias}, callback);\r\n }\r\n\r\n getWalletAlias(address) {\r\n if (address != null && this.variablesService.daemon_state === 2) {\r\n if (this.variablesService.aliasesChecked[address] == null) {\r\n this.variablesService.aliasesChecked[address] = {};\r\n if (this.variablesService.aliases.length) {\r\n for (let i = 0, length = this.variablesService.aliases.length; i < length; i++) {\r\n if (i in this.variablesService.aliases && this.variablesService.aliases[i]['address'] === address) {\r\n this.variablesService.aliasesChecked[address]['name'] = this.variablesService.aliases[i].name;\r\n this.variablesService.aliasesChecked[address]['address'] = this.variablesService.aliases[i].address;\r\n this.variablesService.aliasesChecked[address]['comment'] = this.variablesService.aliases[i].comment;\r\n return this.variablesService.aliasesChecked[address];\r\n }\r\n }\r\n }\r\n this.getAliasByAddress(address, (status, data) => {\r\n if (status) {\r\n this.variablesService.aliasesChecked[data.address]['name'] = '@' + data.alias;\r\n this.variablesService.aliasesChecked[data.address]['address'] = data.address;\r\n this.variablesService.aliasesChecked[data.address]['comment'] = data.comment;\r\n }\r\n });\r\n }\r\n return this.variablesService.aliasesChecked[address];\r\n }\r\n return {};\r\n }\r\n\r\n getPoolInfo(callback) {\r\n this.runCommand('get_tx_pool_info', {}, callback);\r\n }\r\n\r\n getVersion(callback) {\r\n this.runCommand('get_version', {}, (status, version) => {\r\n callback(version);\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n/*\r\n\r\n toggleAutoStart: function (value) {\r\n return this.runCommand('toggle_autostart', asVal(value));\r\n },\r\n\r\n getOptions: function (callback) {\r\n return this.runCommand('get_options', {}, callback);\r\n },\r\n\r\n isFileExist: function (path, callback) {\r\n return this.runCommand('is_file_exist', path, callback);\r\n },\r\n\r\n isAutoStartEnabled: function (callback) {\r\n this.runCommand('is_autostart_enabled', {}, function (status, data) {\r\n if (angular.isFunction(callback)) {\r\n callback('error_code' in data && data.error_code !== 'FALSE')\r\n }\r\n });\r\n },\r\n\r\n setLogLevel: function (level) {\r\n return this.runCommand('set_log_level', asVal(level))\r\n },\r\n\r\n resetWalletPass: function (wallet_id, pass, callback) {\r\n this.runCommand('reset_wallet_password', {wallet_id: wallet_id, pass: pass}, callback);\r\n },\r\n\r\n\r\n\r\n getOsVersion: function (callback) {\r\n this.runCommand('get_os_version', {}, function (status, version) {\r\n callback(version)\r\n })\r\n },\r\n\r\n getLogFile: function (callback) {\r\n this.runCommand('get_log_file', {}, function (status, version) {\r\n callback(version)\r\n })\r\n },\r\n\r\n resync_wallet: function (wallet_id, callback) {\r\n this.runCommand('resync_wallet', {wallet_id: wallet_id}, callback);\r\n },\r\n\r\n storeFile: function (path, buff, callback) {\r\n this.backendObject['store_to_file'](path, (typeof buff === 'string' ? buff : JSON.stringify(buff)), function (data) {\r\n backendCallback(data, {}, callback, 'store_to_file');\r\n });\r\n },\r\n\r\n getMiningEstimate: function (amount_coins, time, callback) {\r\n var params = {\r\n \"amount_coins\": $filter('money_to_int')(amount_coins),\r\n \"time\": parseInt(time)\r\n };\r\n this.runCommand('get_mining_estimate', params, callback);\r\n },\r\n\r\n backupWalletKeys: function (wallet_id, path, callback) {\r\n var params = {\r\n \"wallet_id\": wallet_id,\r\n \"path\": path\r\n };\r\n this.runCommand('backup_wallet_keys', params, callback);\r\n },\r\n\r\n setBlockedIcon: function (enabled, callback) {\r\n var mode = (enabled) ? \"blocked\" : \"normal\";\r\n Service.runCommand('bool_toggle_icon', mode, callback);\r\n },\r\n\r\n getWalletInfo: function (wallet_id, callback) {\r\n this.runCommand('get_wallet_info', {wallet_id: wallet_id}, callback);\r\n },\r\n\r\n printText: function (content) {\r\n return this.runCommand('print_text', {html_text: content});\r\n },\r\n\r\n printLog: function (msg, log_level) {\r\n return this.runCommand('print_log', {msg: msg, log_level: log_level});\r\n },\r\n\r\n*/\r\n\r\n","import {Injectable, Injector, ComponentFactoryResolver, EmbeddedViewRef, ApplicationRef, NgZone} from '@angular/core';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {ModalContainerComponent} from '../directives/modal-container/modal-container.component';\r\n\r\n@Injectable()\r\nexport class ModalService {\r\n\r\n private components: any[] = [];\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef,\r\n private injector: Injector,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {}\r\n\r\n prepareModal(type, message) {\r\n const length = this.components.push(\r\n this.componentFactoryResolver.resolveComponentFactory(ModalContainerComponent).create(this.injector)\r\n );\r\n\r\n this.components[length - 1].instance['type'] = type;\r\n this.components[length - 1].instance['message'] = message.length ? this.translate.instant(message) : '';\r\n this.components[length - 1].instance['close'].subscribe(() => {\r\n this.removeModal(length - 1);\r\n });\r\n\r\n this.ngZone.run(() => {\r\n this.appendModal(length - 1);\r\n });\r\n }\r\n\r\n appendModal(index) {\r\n this.appRef.attachView(this.components[index].hostView);\r\n const domElem = (this.components[index].hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n }\r\n\r\n removeModal(index) {\r\n if (this.components[index]) {\r\n this.appRef.detachView(this.components[index].hostView);\r\n this.components[index].destroy();\r\n this.components.splice(index, 1);\r\n } else {\r\n const last = this.components.length - 1;\r\n this.appRef.detachView(this.components[last].hostView);\r\n this.components[last].destroy();\r\n this.components.splice(last, 1);\r\n }\r\n }\r\n}\r\n","import {Injectable, NgZone} from '@angular/core';\r\nimport {Wallet} from '../models/wallet.model';\r\nimport {BehaviorSubject} from 'rxjs';\r\nimport {Idle} from 'idlejs/dist';\r\nimport {Router} from '@angular/router';\r\nimport {ContextMenuComponent, ContextMenuService} from 'ngx-contextmenu';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VariablesService {\r\n\r\n public digits = 12;\r\n public appPass = '';\r\n public moneyEquivalent = 0;\r\n public defaultTheme = 'dark';\r\n public defaultCurrency = 'ZAN';\r\n public opening_wallet: Wallet;\r\n public exp_med_ts = 0;\r\n public height_app = 0;\r\n public last_build_available = '';\r\n public daemon_state = 0;\r\n public sync = {\r\n progress_value: 0,\r\n progress_value_text: '0'\r\n };\r\n public default_fee = '0.010000000000';\r\n public default_fee_big = new BigNumber('10000000000');\r\n\r\n public settings = {\r\n appLockTime: 15,\r\n theme: '',\r\n scale: 10,\r\n language: 'en',\r\n default_path: '/',\r\n viewedContracts: [],\r\n notViewedContracts: []\r\n };\r\n\r\n public wallets: Array = [];\r\n public currentWallet: Wallet;\r\n public aliases: any = [];\r\n public aliasesChecked: any = {};\r\n public enableAliasSearch = false;\r\n public maxWalletNameLength = 25;\r\n public maxCommentLength = 255;\r\n\r\n getHeightAppEvent = new BehaviorSubject(null);\r\n getRefreshStackingEvent = new BehaviorSubject(null);\r\n getAliasChangedEvent = new BehaviorSubject(null);\r\n\r\n public idle = new Idle()\r\n .whenNotInteractive()\r\n .do(() => {\r\n this.ngZone.run(() => {\r\n this.idle.stop();\r\n this.appPass = '';\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n });\r\n\r\n public allContextMenu: ContextMenuComponent;\r\n public onlyCopyContextMenu: ContextMenuComponent;\r\n public pasteSelectContextMenu: ContextMenuComponent;\r\n\r\n constructor(private router: Router, private ngZone: NgZone, private contextMenuService: ContextMenuService) {\r\n }\r\n\r\n setHeightApp(height: number) {\r\n if (height !== this.height_app) {\r\n this.height_app = height;\r\n this.getHeightAppEvent.next(height);\r\n }\r\n }\r\n\r\n setRefreshStacking(wallet_id: number) {\r\n this.getHeightAppEvent.next(wallet_id);\r\n }\r\n\r\n changeAliases() {\r\n this.getAliasChangedEvent.next(true);\r\n }\r\n\r\n setCurrentWallet(id): void {\r\n this.wallets.forEach((wallet) => {\r\n if (wallet.wallet_id === id) {\r\n this.currentWallet = wallet;\r\n }\r\n });\r\n }\r\n\r\n getWallet(id): Wallet {\r\n for (let i = 0; i < this.wallets.length; i++) {\r\n if (this.wallets[i].wallet_id === id) {\r\n return this.wallets[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n startCountdown() {\r\n this.idle.within(this.settings.appLockTime).start();\r\n }\r\n\r\n stopCountdown() {\r\n this.idle.stop();\r\n }\r\n\r\n restartCountdown() {\r\n this.idle.within(this.settings.appLockTime).restart();\r\n }\r\n\r\n public onContextMenu($event: MouseEvent): void {\r\n $event.target['contextSelectionStart'] = $event.target['selectionStart'];\r\n $event.target['contextSelectionEnd'] = $event.target['selectionEnd'];\r\n if ($event.target && ($event.target['nodeName'].toUpperCase() === 'TEXTAREA' || $event.target['nodeName'].toUpperCase() === 'INPUT') && !$event.target['readOnly']) {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.allContextMenu,\r\n event: $event,\r\n item: $event.target,\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n }\r\n\r\n public onContextMenuOnlyCopy($event: MouseEvent, copyText?: string): void {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.onlyCopyContextMenu,\r\n event: $event,\r\n item: copyText\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n\r\n public onContextMenuPasteSelect($event: MouseEvent): void {\r\n $event.target['contextSelectionStart'] = $event.target['selectionStart'];\r\n $event.target['contextSelectionEnd'] = $event.target['selectionEnd'];\r\n\r\n console.warn($event.target);\r\n console.warn($event.target['disabled']);\r\n\r\n\r\n if ($event.target && ($event.target['nodeName'].toUpperCase() === 'TEXTAREA' || $event.target['nodeName'].toUpperCase() === 'INPUT') && !$event.target['readOnly']) {\r\n this.contextMenuService.show.next({\r\n contextMenu: this.pasteSelectContextMenu,\r\n event: $event,\r\n item: $event.target,\r\n });\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\n// Components\r\nimport { MainComponent } from './main/main.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { WalletComponent } from './wallet/wallet.component';\r\nimport { SendComponent } from './send/send.component';\r\nimport { ReceiveComponent } from './receive/receive.component';\r\nimport { HistoryComponent } from './history/history.component';\r\nimport { ContractsComponent } from './contracts/contracts.component';\r\nimport { PurchaseComponent } from './purchase/purchase.component';\r\nimport { MessagesComponent } from './messages/messages.component';\r\nimport { TypingMessageComponent } from './typing-message/typing-message.component';\r\nimport { StakingComponent } from './staking/staking.component';\r\nimport { SettingsComponent } from './settings/settings.component';\r\nimport { CreateWalletComponent } from './create-wallet/create-wallet.component';\r\nimport { OpenWalletComponent } from './open-wallet/open-wallet.component';\r\nimport { RestoreWalletComponent } from './restore-wallet/restore-wallet.component';\r\nimport { SeedPhraseComponent } from './seed-phrase/seed-phrase.component';\r\nimport { WalletDetailsComponent } from './wallet-details/wallet-details.component';\r\nimport { AssignAliasComponent } from './assign-alias/assign-alias.component';\r\nimport { EditAliasComponent } from \"./edit-alias/edit-alias.component\";\r\nimport { TransferAliasComponent } from \"./transfer-alias/transfer-alias.component\";\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: MainComponent\r\n },\r\n {\r\n path: 'main',\r\n component: MainComponent\r\n },\r\n {\r\n path: 'login',\r\n component: LoginComponent\r\n },\r\n {\r\n path: 'wallet/:id',\r\n component: WalletComponent,\r\n children: [\r\n {\r\n path: 'send',\r\n component: SendComponent\r\n },\r\n {\r\n path: 'receive',\r\n component: ReceiveComponent\r\n },\r\n {\r\n path: 'history',\r\n component: HistoryComponent\r\n },\r\n {\r\n path: 'contracts',\r\n component: ContractsComponent,\r\n },\r\n {\r\n path: 'purchase',\r\n component: PurchaseComponent\r\n },\r\n {\r\n path: 'purchase/:id',\r\n component: PurchaseComponent\r\n },\r\n {\r\n path: 'messages',\r\n component: MessagesComponent,\r\n },\r\n {\r\n path: 'messages/:id',\r\n component: TypingMessageComponent,\r\n },\r\n {\r\n path: 'staking',\r\n component: StakingComponent\r\n },\r\n {\r\n path: '',\r\n redirectTo: 'history',\r\n pathMatch: 'full'\r\n }\r\n ]\r\n },\r\n {\r\n path: 'create',\r\n component: CreateWalletComponent\r\n },\r\n {\r\n path: 'open',\r\n component: OpenWalletComponent\r\n },\r\n {\r\n path: 'restore',\r\n component: RestoreWalletComponent\r\n },\r\n {\r\n path: 'seed-phrase',\r\n component: SeedPhraseComponent\r\n },\r\n {\r\n path: 'details',\r\n component: WalletDetailsComponent\r\n },\r\n {\r\n path: 'assign-alias',\r\n component: AssignAliasComponent\r\n },\r\n {\r\n path: 'edit-alias',\r\n component: EditAliasComponent\r\n },\r\n {\r\n path: 'transfer-alias',\r\n component: TransferAliasComponent\r\n },\r\n {\r\n path: 'settings',\r\n component: SettingsComponent\r\n },\r\n {\r\n path: '',\r\n redirectTo: '/',\r\n pathMatch: 'full'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\n\r\nexport class AppRoutingModule { }\r\n","module.exports = \"\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }}\\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }}\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n {{ 'CONTEXT_MENU.COPY' | translate }}\\r\\n {{ 'CONTEXT_MENU.PASTE' | translate }}\\r\\n {{ 'CONTEXT_MENU.SELECT' | translate }}\\r\\n\\r\\n\\r\\n\\r\\n {{ 'CONTEXT_MENU.COPY' | translate }}\\r\\n\\r\\n\\r\\n\\r\\n {{ 'CONTEXT_MENU.PASTE' | translate }}\\r\\n {{ 'CONTEXT_MENU.SELECT' | translate }}\\r\\n\\r\\n\"","module.exports = \"/*\\r\\n* Implementation of themes\\r\\n*/\\n.app-content {\\n display: flex;\\n overflow-x: overlay;\\n overflow-y: hidden;\\n width: 100%; }\\n.app-content .preloader {\\n align-self: center;\\n color: #fff;\\n font-size: 2rem;\\n margin: 0 auto;\\n text-align: center;\\n width: 50%; }\\n.app-content .preloader .loading-bar {\\n display: block;\\n -webkit-animation: move 5s linear infinite;\\n animation: move 5s linear infinite;\\n background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.125, rgba(0, 0, 0, 0.15)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.1)), color-stop(0.375, rgba(0, 0, 0, 0.1)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.15)), color-stop(0.625, rgba(0, 0, 0, 0.15)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.1)), color-stop(0.875, rgba(0, 0, 0, 0.1)), color-stop(0.875, transparent), to(transparent)), -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.125, rgba(0, 0, 0, 0.3)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.25)), color-stop(0.375, rgba(0, 0, 0, 0.25)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.3)), color-stop(0.625, rgba(0, 0, 0, 0.3)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.25)), color-stop(0.875, rgba(0, 0, 0, 0.25)), color-stop(0.875, transparent), to(transparent));\\n background-size: 10rem 10rem;\\n margin-top: 2rem;\\n width: 100%;\\n height: 1rem; }\\n@-webkit-keyframes move {\\n 0% {\\n background-position: 100% -10rem; }\\n 100% {\\n background-position: 100% 10rem; } }\\n@keyframes move {\\n 0% {\\n background-position: 100% -10rem; }\\n 100% {\\n background-position: 100% 10rem; } }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGJhc2VcXF9taXhpbnMuc2NzcyIsInNyYy9hcHAvYXBwLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcYXBwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThFQTs7Q0M1RUM7QUNBRDtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLFdBQVcsRUFBQTtBQUpiO0lBT0ksa0JBQWtCO0lBQ2xCLFdBQVc7SUFDWCxlQUFlO0lBQ2YsY0FBYztJQUNkLGtCQUFrQjtJQUNsQixVQUFVLEVBQUE7QUFaZDtNQWVNLGNBQWM7TUFDZCwwQ0FBa0M7Y0FBbEMsa0NBQWtDO01BQ2xDLCtsQ0FzQkc7TUFDSCw0QkFBNEI7TUFDNUIsZ0JBQWdCO01BQ2hCLFdBQVc7TUFDWCxZQUFZLEVBQUE7QUFJaEI7RUFDRTtJQUNFLGdDQUFnQyxFQUFBO0VBRWxDO0lBQ0UsK0JBQStCLEVBQUEsRUFBQTtBQUxuQztFQUNFO0lBQ0UsZ0NBQWdDLEVBQUE7RUFFbEM7SUFDRSwrQkFBK0IsRUFBQSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvYXBwLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQG1peGluIHRleHQtdHJ1bmNhdGUge1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5AbWl4aW4gdGV4dFdyYXAge1xyXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gIGxpbmUtYnJlYWs6IHN0cmljdDtcclxuICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XHJcbiAgLW1zLWh5cGhlbnM6IGF1dG87XHJcbiAgaHlwaGVuczogYXV0bztcclxufVxyXG5AbWl4aW4gY292ZXJCb3gge1xyXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR0b3A6IDA7XHJcblx0bGVmdDogMDtcclxuXHR3aWR0aDogMTAwJTtcclxuXHRoZWlnaHQ6IDEwMCU7XHJcbn1cclxuQG1peGluIGFicyAoJHRvcDogYXV0bywgJHJpZ2h0OiBhdXRvLCAkYm90dG9tOiBhdXRvLCAkbGVmdDogYXV0bykge1xyXG4gIHRvcDogJHRvcDtcclxuICByaWdodDogJHJpZ2h0O1xyXG4gIGJvdHRvbTogJGJvdHRvbTtcclxuICBsZWZ0OiAkbGVmdDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbn1cclxuQG1peGluIGNvdmVySW1nIHtcclxuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG5cdC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHQtby1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTtcclxufVxyXG5AbWl4aW4gdmFsaW5nQm94IHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAgNTAlO1xyXG5cdGxlZnQ6IDUwJTtcclxuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxufVxyXG5AbWl4aW4gdW5TZWxlY3Qge1xyXG5cdC13ZWJraXQtdG91Y2gtY29sbG91dDogbm9uZTtcclxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcclxuICB1c2VyLXNlbGVjdDogbm9uZTtcclxufVxyXG5AbWl4aW4gbWF4MTE5OSB7IC8vIG1ha2V0IDExNzFcclxuICBAbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDExNzAgeyAvLyBtYWtldHMgOTkyXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDExNzBweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg5OTEgeyAvLyBtYWtldHMgNzYyXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDc2MSB7IC8vIG1ha2V0cyA1NzZcclxuICBAbWVkaWEgKG1heC13aWR0aDogNzYxcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4NTc1IHsgLy8gbWFrZXRzIDQwMFxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtb2JpbGUge1xyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAzOTlweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBpY29DZW50ZXIge1xyXG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XHJcbn1cclxuQG1peGluIHBzZXVkbyAoJGRpc3BsYXk6IGJsb2NrLCAkcG9zOiBhYnNvbHV0ZSwgJGNvbnRlbnQ6ICcnKXtcclxuICBjb250ZW50OiAkY29udGVudDtcclxuICBkaXNwbGF5OiAkZGlzcGxheTtcclxuICBwb3NpdGlvbjogJHBvcztcclxufVxyXG5cclxuLypcclxuKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGVtZXNcclxuKi9cclxuQG1peGluIHRoZW1pZnkoJHRoZW1lczogJHRoZW1lcykge1xyXG4gIEBlYWNoICR0aGVtZSwgJG1hcCBpbiAkdGhlbWVzIHtcclxuICAgIC50aGVtZS0jeyR0aGVtZX0gJiB7XHJcbiAgICAgICR0aGVtZS1tYXA6ICgpICFnbG9iYWw7XHJcbiAgICAgIEBlYWNoICRrZXksICRzdWJtYXAgaW4gJG1hcCB7XHJcbiAgICAgICAgJHZhbHVlOiBtYXAtZ2V0KG1hcC1nZXQoJHRoZW1lcywgJHRoZW1lKSwgJyN7JGtleX0nKTtcclxuICAgICAgICAkdGhlbWUtbWFwOiBtYXAtbWVyZ2UoJHRoZW1lLW1hcCwgKCRrZXk6ICR2YWx1ZSkpICFnbG9iYWw7XHJcbiAgICAgIH1cclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICAgICR0aGVtZS1tYXA6IG51bGwgIWdsb2JhbDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbkBmdW5jdGlvbiB0aGVtZWQoJGtleSkge1xyXG4gIEByZXR1cm4gbWFwLWdldCgkdGhlbWUtbWFwLCAka2V5KTtcclxufVxyXG4iLCIvKlxyXG4qIEltcGxlbWVudGF0aW9uIG9mIHRoZW1lc1xyXG4qL1xuLmFwcC1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgb3ZlcmZsb3cteDogb3ZlcmxheTtcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICB3aWR0aDogMTAwJTsgfVxuICAuYXBwLWNvbnRlbnQgLnByZWxvYWRlciB7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2lkdGg6IDUwJTsgfVxuICAgIC5hcHAtY29udGVudCAucHJlbG9hZGVyIC5sb2FkaW5nLWJhciB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGFuaW1hdGlvbjogbW92ZSA1cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAxMDAlIDEwMCUsIGNvbG9yLXN0b3AoMC4xMjUsIHJnYmEoMCwgMCwgMCwgMC4xNSkpLCBjb2xvci1zdG9wKDAuMTI1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC4yNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuMjUsIHJnYmEoMCwgMCwgMCwgMC4xKSksIGNvbG9yLXN0b3AoMC4zNzUsIHJnYmEoMCwgMCwgMCwgMC4xKSksIGNvbG9yLXN0b3AoMC4zNzUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHJnYmEoMCwgMCwgMCwgMC4xNSkpLCBjb2xvci1zdG9wKDAuNjI1LCByZ2JhKDAsIDAsIDAsIDAuMTUpKSwgY29sb3Itc3RvcCgwLjYyNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuNzUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjc1LCByZ2JhKDAsIDAsIDAsIDAuMSkpLCBjb2xvci1zdG9wKDAuODc1LCByZ2JhKDAsIDAsIDAsIDAuMSkpLCBjb2xvci1zdG9wKDAuODc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSksIC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCAwIDEwMCUsIDEwMCUgMCwgY29sb3Itc3RvcCgwLjEyNSwgcmdiYSgwLCAwLCAwLCAwLjMpKSwgY29sb3Itc3RvcCgwLjEyNSwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKDAuMjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjI1LCByZ2JhKDAsIDAsIDAsIDAuMjUpKSwgY29sb3Itc3RvcCgwLjM3NSwgcmdiYSgwLCAwLCAwLCAwLjI1KSksIGNvbG9yLXN0b3AoMC4zNzUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjUsIHJnYmEoMCwgMCwgMCwgMC4zKSksIGNvbG9yLXN0b3AoMC42MjUsIHJnYmEoMCwgMCwgMCwgMC4zKSksIGNvbG9yLXN0b3AoMC42MjUsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCgwLjc1LCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoMC43NSwgcmdiYSgwLCAwLCAwLCAwLjI1KSksIGNvbG9yLXN0b3AoMC44NzUsIHJnYmEoMCwgMCwgMCwgMC4yNSkpLCBjb2xvci1zdG9wKDAuODc1LCB0cmFuc3BhcmVudCksIHRvKHRyYW5zcGFyZW50KSk7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwcmVtIDEwcmVtO1xuICAgICAgbWFyZ2luLXRvcDogMnJlbTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxcmVtOyB9XG5cbkBrZXlmcmFtZXMgbW92ZSB7XG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIC0xMHJlbTsgfVxuICAxMDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDEwcmVtOyB9IH1cbiIsIkBpbXBvcnQgJ35zcmMvYXNzZXRzL3Njc3MvYmFzZS9taXhpbnMnO1xyXG5cclxuLmFwcC1jb250ZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIG92ZXJmbG93LXg6IG92ZXJsYXk7XHJcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICAucHJlbG9hZGVyIHtcclxuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcclxuICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgZm9udC1zaXplOiAycmVtO1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB3aWR0aDogNTAlO1xyXG5cclxuICAgIC5sb2FkaW5nLWJhciB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBhbmltYXRpb246IG1vdmUgNXMgbGluZWFyIGluZmluaXRlO1xyXG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOlxyXG4gICAgICAgIC13ZWJraXQtZ3JhZGllbnQoXHJcbiAgICAgICAgICAgIGxpbmVhciwgMCAwLCAxMDAlIDEwMCUsXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjEyNSwgcmdiYSgwLCAwLCAwLCAuMTUpKSwgY29sb3Itc3RvcCguMTI1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjI1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC4yNTAsIHJnYmEoMCwgMCwgMCwgLjEwKSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjM3NSwgcmdiYSgwLCAwLCAwLCAuMTApKSwgY29sb3Itc3RvcCguMzc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjUwMCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC41MDAsIHJnYmEoMCwgMCwgMCwgLjE1KSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjYyNSwgcmdiYSgwLCAwLCAwLCAuMTUpKSwgY29sb3Itc3RvcCguNjI1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjc1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC43NTAsIHJnYmEoMCwgMCwgMCwgLjEwKSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjg3NSwgcmdiYSgwLCAwLCAwLCAuMTApKSwgY29sb3Itc3RvcCguODc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIHRvKHRyYW5zcGFyZW50KVxyXG4gICAgICAgICksXHJcbiAgICAgICAgLXdlYmtpdC1ncmFkaWVudChcclxuICAgICAgICAgICAgbGluZWFyLCAwIDEwMCUsIDEwMCUgMCxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguMTI1LCByZ2JhKDAsIDAsIDAsIC4zMCkpLCBjb2xvci1zdG9wKC4xMjUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguMjUwLCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjI1MCwgcmdiYSgwLCAwLCAwLCAuMjUpKSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguMzc1LCByZ2JhKDAsIDAsIDAsIC4yNSkpLCBjb2xvci1zdG9wKC4zNzUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguNTAwLCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjUwMCwgcmdiYSgwLCAwLCAwLCAuMzApKSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguNjI1LCByZ2JhKDAsIDAsIDAsIC4zMCkpLCBjb2xvci1zdG9wKC42MjUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguNzUwLCB0cmFuc3BhcmVudCksIGNvbG9yLXN0b3AoLjc1MCwgcmdiYSgwLCAwLCAwLCAuMjUpKSxcclxuICAgICAgICAgICAgY29sb3Itc3RvcCguODc1LCByZ2JhKDAsIDAsIDAsIC4yNSkpLCBjb2xvci1zdG9wKC44NzUsIHRyYW5zcGFyZW50KSxcclxuICAgICAgICAgICAgdG8odHJhbnNwYXJlbnQpXHJcbiAgICAgICAgKTtcclxuICAgICAgYmFja2dyb3VuZC1zaXplOiAxMHJlbSAxMHJlbTtcclxuICAgICAgbWFyZ2luLXRvcDogMnJlbTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBrZXlmcmFtZXMgbW92ZSB7XHJcbiAgICAwJSB7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgLTEwcmVtO1xyXG4gICAgfVxyXG4gICAgMTAwJSB7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMTByZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, NgZone, Renderer2, OnDestroy, ViewChild} from '@angular/core';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {BackendService} from './_helpers/services/backend.service';\r\nimport {Router} from '@angular/router';\r\nimport {VariablesService} from './_helpers/services/variables.service';\r\nimport {ContextMenuComponent} from 'ngx-contextmenu';\r\nimport {IntToMoneyPipe} from './_helpers/pipes/int-to-money.pipe';\r\nimport {BigNumber} from 'bignumber.js';\r\nimport {ModalService} from './_helpers/services/modal.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n\r\n intervalUpdateContractsState;\r\n onQuitRequest = false;\r\n firstOnlineState = false;\r\n\r\n @ViewChild('allContextMenu') public allContextMenu: ContextMenuComponent;\r\n @ViewChild('onlyCopyContextMenu') public onlyCopyContextMenu: ContextMenuComponent;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private renderer: Renderer2,\r\n public translate: TranslateService,\r\n private backend: BackendService,\r\n private router: Router,\r\n private variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private intToMoneyPipe: IntToMoneyPipe,\r\n private modalService: ModalService\r\n ) {\r\n translate.addLangs(['en', 'fr']);\r\n translate.setDefaultLang('en');\r\n // const browserLang = translate.getBrowserLang();\r\n // translate.use(browserLang.match(/en|fr/) ? browserLang : 'en');\r\n }\r\n\r\n setBackendLocalization() {\r\n const stringsArray = [\r\n this.translate.instant('BACKEND_LOCALIZATION.QUIT'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_RECEIVED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_CONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.INCOME_TRANSFER_UNCONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.INCOME_TRANSFER_CONFIRMED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.MINED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.LOCKED'),\r\n this.translate.instant('BACKEND_LOCALIZATION.IS_MINIMIZE'),\r\n this.translate.instant('BACKEND_LOCALIZATION.RESTORE'),\r\n this.translate.instant('BACKEND_LOCALIZATION.TRAY_MENU_SHOW'),\r\n this.translate.instant('BACKEND_LOCALIZATION.TRAY_MENU_MINIMIZE')\r\n ];\r\n this.backend.setBackendLocalization(stringsArray, 'en');\r\n }\r\n\r\n ngOnInit() {\r\n this.variablesService.allContextMenu = this.allContextMenu;\r\n this.variablesService.onlyCopyContextMenu = this.onlyCopyContextMenu;\r\n\r\n this.backend.initService().subscribe(initMessage => {\r\n console.log('Init message: ', initMessage);\r\n\r\n this.backend.webkitLaunchedScript();\r\n\r\n this.backend.start_backend(false, '127.0.0.1', 11512, (st2, dd2) => {\r\n console.log(st2, dd2);\r\n });\r\n\r\n this.backend.eventSubscribe('quit_requested', () => {\r\n if (!this.onQuitRequest) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n this.variablesService.daemon_state = 5;\r\n this.backend.storeSecureAppData(() => {\r\n this.backend.storeAppData(() => {\r\n const recursionCloseWallets = () => {\r\n if (this.variablesService.wallets.length) {\r\n const lastIndex = this.variablesService.wallets.length - 1;\r\n this.backend.closeWallet(this.variablesService.wallets[lastIndex].wallet_id, () => {\r\n this.variablesService.wallets.splice(lastIndex, 1);\r\n recursionCloseWallets();\r\n });\r\n } else {\r\n this.backend.quitRequest();\r\n }\r\n };\r\n recursionCloseWallets();\r\n });\r\n });\r\n }\r\n this.onQuitRequest = true;\r\n });\r\n\r\n this.backend.eventSubscribe('update_wallet_status', (data) => {\r\n console.log('----------------- update_wallet_status -----------------');\r\n console.log(data);\r\n\r\n const wallet_state = data.wallet_state;\r\n const is_mining = data.is_mining;\r\n const wallet = this.variablesService.getWallet(data.wallet_id);\r\n\r\n // 1-synch, 2-ready, 3 - error\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n wallet.loaded = false;\r\n wallet.staking = is_mining;\r\n if (wallet_state === 2) { // ready\r\n wallet.loaded = true;\r\n }\r\n if (wallet_state === 3) { // error\r\n // wallet.error = true;\r\n }\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n wallet.mined_total = data.minied_total;\r\n wallet.alias_available = data.is_alias_operations_available;\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('wallet_sync_progress', (data) => {\r\n console.log('----------------- wallet_sync_progress -----------------');\r\n console.log(data);\r\n\r\n const wallet = this.variablesService.getWallet(data.wallet_id);\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n wallet.progress = data.progress;\r\n if (wallet.progress === 0) {\r\n wallet.loaded = false;\r\n } else if (wallet.progress === 100) {\r\n wallet.loaded = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('update_daemon_state', (data) => {\r\n console.log('----------------- update_daemon_state -----------------');\r\n console.log('DAEMON:' + data.daemon_network_state);\r\n console.log(data);\r\n this.variablesService.exp_med_ts = data['expiration_median_timestamp'] + 600 + 1;\r\n this.variablesService.last_build_available = data.last_build_available;\r\n this.variablesService.setHeightApp(data.height);\r\n\r\n this.ngZone.run(() => {\r\n this.variablesService.daemon_state = data['daemon_network_state'];\r\n if (data['daemon_network_state'] === 1) {\r\n const max = data['max_net_seen_height'] - data['synchronization_start_height'];\r\n const current = data.height - data['synchronization_start_height'];\r\n const return_val = Math.floor((current * 100 / max) * 100) / 100;\r\n if (max === 0 || return_val < 0) {\r\n this.variablesService.sync.progress_value = 0;\r\n this.variablesService.sync.progress_value_text = '0.00';\r\n } else if (return_val >= 100) {\r\n this.variablesService.sync.progress_value = 100;\r\n this.variablesService.sync.progress_value_text = '99.99';\r\n } else {\r\n this.variablesService.sync.progress_value = return_val;\r\n this.variablesService.sync.progress_value_text = return_val.toFixed(2);\r\n }\r\n }\r\n });\r\n if (!this.firstOnlineState && data['daemon_network_state'] === 2) {\r\n this.getAliases();\r\n this.backend.getDefaultFee((status_fee, data_fee) => {\r\n this.variablesService.default_fee_big = new BigNumber(data_fee);\r\n this.variablesService.default_fee = this.intToMoneyPipe.transform(data_fee);\r\n });\r\n this.firstOnlineState = true;\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('money_transfer', (data) => {\r\n console.log('----------------- money_transfer -----------------');\r\n console.log(data);\r\n\r\n if (!data.ti) {\r\n return;\r\n }\r\n\r\n const wallet_id = data.wallet_id;\r\n const tr_info = data.ti;\r\n\r\n const wallet = this.variablesService.getWallet(wallet_id);\r\n\r\n if (wallet) {\r\n this.ngZone.run(() => {\r\n\r\n if (!wallet.loaded) {\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n } else {\r\n wallet.balance = data.balance;\r\n wallet.unlocked_balance = data.unlocked_balance;\r\n }\r\n\r\n if (tr_info.tx_type === 6) {\r\n this.variablesService.setRefreshStacking(wallet_id);\r\n }\r\n\r\n let tr_exists = wallet.excluded_history.some(elem => elem.tx_hash === tr_info.tx_hash);\r\n tr_exists = (!tr_exists) ? wallet.history.some(elem => elem.tx_hash === tr_info.tx_hash) : tr_exists;\r\n\r\n wallet.prepareHistory([tr_info]);\r\n\r\n if (tr_info.hasOwnProperty('contract')) {\r\n const exp_med_ts = this.variablesService.exp_med_ts;\r\n const height_app = this.variablesService.height_app;\r\n\r\n const contract = tr_info.contract[0];\r\n\r\n if (tr_exists) {\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === contract.contract_id && wallet.contracts[i].is_a === contract.is_a) {\r\n wallet.contracts[i].cancel_expiration_time = contract.cancel_expiration_time;\r\n wallet.contracts[i].expiration_time = contract.expiration_time;\r\n wallet.contracts[i].height = contract.height;\r\n wallet.contracts[i].timestamp = contract.timestamp;\r\n break;\r\n }\r\n }\r\n // $rootScope.getContractsRecount();\r\n return;\r\n }\r\n\r\n if (contract.state === 1 && contract.expiration_time < exp_med_ts) {\r\n contract.state = 110;\r\n } else if (contract.state === 5 && contract.cancel_expiration_time < exp_med_ts) {\r\n contract.state = 130;\r\n } else if (contract.state === 1) {\r\n const searchResult2 = this.variablesService.settings.notViewedContracts.find(elem => elem.state === 110 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult2) {\r\n if (searchResult2.time === contract.expiration_time) {\r\n contract.state = 110;\r\n } else {\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 2 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 201;\r\n } else if (contract.state === 2) {\r\n const searchResult3 = this.variablesService.settings.viewedContracts.some(elem => elem.state === 120 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult3) {\r\n contract.state = 120;\r\n }\r\n } else if (contract.state === 5) {\r\n const searchResult4 = this.variablesService.settings.notViewedContracts.find(elem => elem.state === 130 && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n if (searchResult4) {\r\n if (searchResult4.time === contract.cancel_expiration_time) {\r\n contract.state = 130;\r\n } else {\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.notViewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === contract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === contract.is_a) {\r\n this.variablesService.settings.viewedContracts.splice(j, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else if (contract.state === 6 && (contract.height === 0 || (height_app - contract.height) < 10)) {\r\n contract.state = 601;\r\n }\r\n\r\n const searchResult = this.variablesService.settings.viewedContracts.some(elem => elem.state === contract.state && elem.is_a === contract.is_a && elem.contract_id === contract.contract_id);\r\n contract.is_new = !searchResult;\r\n\r\n contract['private_detailes'].a_pledge = contract['private_detailes'].a_pledge.plus(contract['private_detailes'].to_pay);\r\n\r\n let findContract = false;\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === contract.contract_id && wallet.contracts[i].is_a === contract.is_a) {\r\n for (const prop in contract) {\r\n if (contract.hasOwnProperty(prop)) {\r\n wallet.contracts[i][prop] = contract[prop];\r\n }\r\n }\r\n findContract = true;\r\n break;\r\n }\r\n }\r\n if (findContract === false) {\r\n wallet.contracts.push(contract);\r\n }\r\n wallet.recountNewContracts();\r\n }\r\n\r\n });\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('money_transfer_cancel', (data) => {\r\n console.log('----------------- money_transfer_cancel -----------------');\r\n console.log(data);\r\n\r\n if (!data.ti) {\r\n return;\r\n }\r\n\r\n const wallet_id = data.wallet_id;\r\n const tr_info = data.ti;\r\n const wallet = this.variablesService.getWallet(wallet_id);\r\n\r\n if (wallet) {\r\n if (tr_info.hasOwnProperty('contract')) {\r\n for (let i = 0; i < wallet.contracts.length; i++) {\r\n if (wallet.contracts[i].contract_id === tr_info.contract[0].contract_id && wallet.contracts[i].is_a === tr_info.contract[0].is_a) {\r\n if (wallet.contracts[i].state === 1 || wallet.contracts[i].state === 110) {\r\n wallet.contracts[i].is_new = true;\r\n wallet.contracts[i].state = 140;\r\n wallet.recountNewContracts();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n wallet.removeFromHistory(tr_info.tx_hash);\r\n\r\n let error_tr = '';\r\n switch (tr_info.tx_type) {\r\n case 0:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_NORMAL') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NORMAL_TO') + ' ' + this.intToMoneyPipe.transform(tr_info.amount) + ' ' +\r\n this.translate.instant('ERRORS.TX_TYPE_NORMAL_END');\r\n break;\r\n case 1:\r\n // this.translate.instant('ERRORS.TX_TYPE_PUSH_OFFER');\r\n break;\r\n case 2:\r\n // this.translate.instant('ERRORS.TX_TYPE_UPDATE_OFFER');\r\n break;\r\n case 3:\r\n // this.translate.instant('ERRORS.TX_TYPE_CANCEL_OFFER');\r\n break;\r\n case 4:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS_END');\r\n break;\r\n case 5:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_UPDATE_ALIAS') + '
' +\r\n tr_info.tx_hash + '
' + wallet.name + '
' + wallet.address + '
' +\r\n this.translate.instant('ERRORS.TX_TYPE_NEW_ALIAS_END');\r\n break;\r\n case 6:\r\n error_tr = this.translate.instant('ERRORS.TX_TYPE_COIN_BASE');\r\n break;\r\n }\r\n if (error_tr) {\r\n this.modalService.prepareModal('error', error_tr);\r\n }\r\n }\r\n });\r\n\r\n this.backend.eventSubscribe('on_core_event', (data) => {\r\n console.log('----------------- on_core_event -----------------');\r\n console.log(data);\r\n\r\n data = JSON.parse(data);\r\n\r\n if (data.events != null) {\r\n for (let i = 0, length = data.events.length; i < length; i++) {\r\n\r\n switch (data.events[i].method) {\r\n case 'CORE_EVENT_BLOCK_ADDED': break;\r\n case 'CORE_EVENT_ADD_ALIAS':\r\n if (this.variablesService.aliasesChecked[data.events[i].details.address] != null) {\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['name'] = '@' + data.events[i].details.alias;\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['address'] = data.events[i].details.address;\r\n this.variablesService.aliasesChecked[data.events[i].details.address]['comment'] = data.events[i].details.comment;\r\n }\r\n if (this.variablesService.enableAliasSearch) {\r\n const newAlias = {\r\n name: '@' + data.events[i].details.alias,\r\n address: data.events[i].details.address,\r\n comment: data.events[i].details.comment\r\n };\r\n this.variablesService.aliases = this.variablesService.aliases.concat(newAlias);\r\n // this.variablesService.aliases = this.variablesService.aliases.sort((a, b) => {\r\n // if (a.name.length > b.name.length) return 1;\r\n // if (a.name.length < b.name.length) return -1;\r\n // if (a.name > b.name) return 1;\r\n // if (a.name < b.name) return -1;\r\n // return 0;\r\n // });\r\n this.variablesService.changeAliases();\r\n }\r\n break;\r\n case 'CORE_EVENT_UPDATE_ALIAS':\r\n for (const address in this.variablesService.aliasesChecked) {\r\n if (this.variablesService.aliasesChecked.hasOwnProperty(address)) {\r\n if (this.variablesService.aliasesChecked[address].name === '@' + data.events[i].details.alias) {\r\n if (this.variablesService.aliasesChecked[address].address !== data.events[i].details.details.address) {\r\n delete this.variablesService.aliasesChecked[address]['name'];\r\n delete this.variablesService.aliasesChecked[address]['address'];\r\n delete this.variablesService.aliasesChecked[address]['comment'];\r\n } else {\r\n this.variablesService.aliasesChecked[address].comment = data.events[i].details.details.comment;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n if (this.variablesService.aliasesChecked[data.events[i].details.details.address] != null) {\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['name'] = '@' + data.events[i].details.alias;\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['address'] = data.events[i].details.details.address;\r\n this.variablesService.aliasesChecked[data.events[i].details.details.address]['comment'] = data.events[i].details.details.comment;\r\n }\r\n if (this.variablesService.enableAliasSearch) {\r\n const CurrentAlias = this.variablesService.aliases.find((element) => element.name === '@' + data.events[i].details.alias);\r\n if (CurrentAlias) {\r\n CurrentAlias.address = data.events[i].details.details.address;\r\n CurrentAlias.comment = data.events[i].details.details.comment;\r\n }\r\n }\r\n this.variablesService.changeAliases();\r\n break;\r\n default: break;\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.intervalUpdateContractsState = setInterval(() => {\r\n this.variablesService.wallets.forEach((wallet) => {\r\n wallet.contracts.forEach((contract) => {\r\n if (contract.state === 201 && contract.height !== 0 && (this.variablesService.height_app - contract.height) >= 10) {\r\n contract.state = 2;\r\n contract.is_new = true;\r\n console.warn('need check state in contracts');\r\n } else if (contract.state === 601 && contract.height !== 0 && (this.variablesService.height_app - contract.height) >= 10) {\r\n contract.state = 6;\r\n contract.is_new = true;\r\n }\r\n });\r\n });\r\n }, 30000);\r\n\r\n\r\n this.backend.getAppData((status, data) => {\r\n if (data && Object.keys(data).length > 0) {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key) && this.variablesService.settings.hasOwnProperty(key)) {\r\n this.variablesService.settings[key] = data[key];\r\n }\r\n }\r\n if (this.variablesService.settings.hasOwnProperty('theme') && ['dark', 'white', 'gray'].indexOf(this.variablesService.settings.theme) !== -1) {\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.settings.theme);\r\n } else {\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.defaultTheme);\r\n }\r\n if (this.variablesService.settings.hasOwnProperty('scale') && [7.5, 10, 12.5, 15].indexOf(this.variablesService.settings.scale) !== -1) {\r\n this.renderer.setStyle(document.documentElement, 'font-size', this.variablesService.settings.scale + 'px');\r\n }\r\n } else {\r\n this.variablesService.settings.theme = this.variablesService.defaultTheme;\r\n this.renderer.addClass(document.body, 'theme-' + this.variablesService.settings.theme);\r\n }\r\n\r\n this.setBackendLocalization();\r\n\r\n if (this.router.url !== '/login') {\r\n this.backend.haveSecureAppData((statusPass) => {\r\n if (statusPass) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'reg'}});\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }, error => {\r\n console.log(error);\r\n });\r\n this.getMoneyEquivalent();\r\n }\r\n\r\n getMoneyEquivalent() {\r\n this.http.get('https://api.coinmarketcap.com/v2/ticker/406').subscribe(\r\n result => {\r\n if (result.hasOwnProperty('data')) {\r\n this.variablesService.moneyEquivalent = result['data']['quotes']['USD']['price'];\r\n }\r\n },\r\n error => {\r\n setTimeout(() => {\r\n this.getMoneyEquivalent();\r\n }, 60000);\r\n console.warn('Error coinmarketcap', error);\r\n }\r\n );\r\n }\r\n\r\n getAliases() {\r\n this.backend.getAllAliases((status, data, error) => {\r\n if (error === 'CORE_BUSY') {\r\n window.setTimeout(() => {\r\n this.getAliases();\r\n }, 10000);\r\n } else if (error === 'OVERFLOW') {\r\n this.variablesService.aliases = [];\r\n this.variablesService.enableAliasSearch = false;\r\n } else {\r\n this.variablesService.enableAliasSearch = true;\r\n if (data.aliases && data.aliases.length) {\r\n this.variablesService.aliases = [];\r\n data.aliases.forEach(alias => {\r\n const newAlias = {\r\n name: '@' + alias.alias,\r\n address: alias.address,\r\n comment: alias.comment\r\n };\r\n this.variablesService.aliases.push(newAlias);\r\n });\r\n this.variablesService.wallets.forEach(wallet => {\r\n wallet.alias = this.backend.getWalletAlias(wallet.address);\r\n });\r\n this.variablesService.aliases = this.variablesService.aliases.sort((a, b) => {\r\n if (a.name.length > b.name.length) return 1;\r\n if (a.name.length < b.name.length) return -1;\r\n if (a.name > b.name) return 1;\r\n if (a.name < b.name) return -1;\r\n return 0;\r\n });\r\n this.variablesService.changeAliases();\r\n }\r\n }\r\n });\r\n }\r\n\r\n contextMenuCopy(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n const start = (target['contextSelectionStart']) ? 'contextSelectionStart' : 'selectionStart';\r\n const end = (target['contextSelectionEnd']) ? 'contextSelectionEnd' : 'selectionEnd';\r\n const canUseSelection = ((target[start]) || (target[start] === '0'));\r\n const SelectedText = (canUseSelection) ? target['value'].substring(target[start], target[end]) : target['value'];\r\n this.backend.setClipboard(String(SelectedText));\r\n }\r\n }\r\n\r\n contextMenuOnlyCopy(text) {\r\n if (text) {\r\n this.backend.setClipboard(String(text));\r\n }\r\n }\r\n\r\n contextMenuPaste(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n this.backend.getClipboard((status, clipboard) => {\r\n clipboard = String(clipboard);\r\n if (typeof clipboard !== 'string' || clipboard.length) {\r\n const start = (target['contextSelectionStart']) ? 'contextSelectionStart' : 'selectionStart';\r\n const end = (target['contextSelectionEnd']) ? 'contextSelectionEnd' : 'selectionEnd';\r\n const _pre = target['value'].substring(0, target[start]);\r\n const _aft = target['value'].substring(target[end], target['value'].length);\r\n let text = _pre + clipboard + _aft;\r\n const cursorPosition = (_pre + clipboard).length;\r\n if (target['maxLength'] && parseInt(target['maxLength'], 10) > 0) {\r\n text = text.substr(0, parseInt(target['maxLength'], 10));\r\n }\r\n target['value'] = text;\r\n target.setSelectionRange(cursorPosition, cursorPosition);\r\n target.dispatchEvent(new Event('input'));\r\n target['focus']();\r\n }\r\n });\r\n }\r\n }\r\n\r\n contextMenuSelect(target) {\r\n if (target && (target['nodeName'].toUpperCase() === 'TEXTAREA' || target['nodeName'].toUpperCase() === 'INPUT')) {\r\n target['focus']();\r\n setTimeout(() => {\r\n target['select']();\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.intervalUpdateContractsState) {\r\n clearInterval(this.intervalUpdateContractsState);\r\n }\r\n }\r\n\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { SettingsComponent } from './settings/settings.component';\r\nimport { SidebarComponent } from './sidebar/sidebar.component';\r\nimport { MainComponent } from './main/main.component';\r\nimport { CreateWalletComponent } from './create-wallet/create-wallet.component';\r\nimport { OpenWalletComponent } from './open-wallet/open-wallet.component';\r\nimport { RestoreWalletComponent } from './restore-wallet/restore-wallet.component';\r\nimport { SeedPhraseComponent } from './seed-phrase/seed-phrase.component';\r\nimport { WalletDetailsComponent } from './wallet-details/wallet-details.component';\r\nimport { AssignAliasComponent } from './assign-alias/assign-alias.component';\r\nimport { EditAliasComponent } from './edit-alias/edit-alias.component';\r\nimport { TransferAliasComponent } from './transfer-alias/transfer-alias.component';\r\nimport { WalletComponent } from './wallet/wallet.component';\r\nimport { SendComponent } from './send/send.component';\r\nimport { ReceiveComponent } from './receive/receive.component';\r\nimport { HistoryComponent } from './history/history.component';\r\nimport { ContractsComponent } from './contracts/contracts.component';\r\nimport { PurchaseComponent } from './purchase/purchase.component';\r\nimport { MessagesComponent } from './messages/messages.component';\r\nimport { TypingMessageComponent } from './typing-message/typing-message.component';\r\nimport { StakingComponent } from './staking/staking.component';\r\n\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n\r\nimport { BackendService } from './_helpers/services/backend.service';\r\nimport { ModalService } from './_helpers/services/modal.service';\r\nimport { MoneyToIntPipe } from './_helpers/pipes/money-to-int.pipe';\r\nimport { IntToMoneyPipe } from './_helpers/pipes/int-to-money.pipe';\r\nimport { HistoryTypeMessagesPipe } from './_helpers/pipes/history-type-messages.pipe';\r\nimport { ContractStatusMessagesPipe } from './_helpers/pipes/contract-status-messages.pipe';\r\nimport { ContractTimeLeftPipe } from './_helpers/pipes/contract-time-left.pipe';\r\nimport { TooltipDirective } from './_helpers/directives/tooltip.directive';\r\nimport { InputValidateDirective } from './_helpers/directives/input-validate/input-validate.directive';\r\nimport { StakingSwitchComponent } from './_helpers/directives/staking-switch/staking-switch.component';\r\nimport { ModalContainerComponent } from './_helpers/directives/modal-container/modal-container.component';\r\nimport { TransactionDetailsComponent } from './_helpers/directives/transaction-details/transaction-details.component';\r\nimport { ContextMenuModule } from 'ngx-contextmenu';\r\n\r\nexport function HttpLoaderFactory(httpClient: HttpClient) {\r\n return new TranslateHttpLoader(httpClient, './assets/i18n/', '.json');\r\n}\r\n\r\n\r\nimport { ChartModule, HIGHCHARTS_MODULES, Highcharts} from 'angular-highcharts';\r\nimport { ProgressContainerComponent } from './_helpers/directives/progress-container/progress-container.component';\r\nimport { InputDisableSelectionDirective } from './_helpers/directives/input-disable-selection/input-disable-selection.directive';\r\n// import * as more from 'highcharts/highcharts-more.src';\r\n// import * as exporting from 'highcharts/modules/exporting.src';\r\n// import * as highstock from 'highcharts/modules/stock.src';\r\n\r\nHighcharts.setOptions({\r\n global: {\r\n useUTC: false\r\n }\r\n});\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginComponent,\r\n SettingsComponent,\r\n SidebarComponent,\r\n MainComponent,\r\n CreateWalletComponent,\r\n OpenWalletComponent,\r\n RestoreWalletComponent,\r\n SeedPhraseComponent,\r\n WalletDetailsComponent,\r\n AssignAliasComponent,\r\n EditAliasComponent,\r\n TransferAliasComponent,\r\n WalletComponent,\r\n SendComponent,\r\n ReceiveComponent,\r\n HistoryComponent,\r\n ContractsComponent,\r\n PurchaseComponent,\r\n MessagesComponent,\r\n StakingComponent,\r\n TypingMessageComponent,\r\n MoneyToIntPipe,\r\n IntToMoneyPipe,\r\n StakingSwitchComponent,\r\n HistoryTypeMessagesPipe,\r\n ContractStatusMessagesPipe,\r\n ContractTimeLeftPipe,\r\n TooltipDirective,\r\n InputValidateDirective,\r\n ModalContainerComponent,\r\n TransactionDetailsComponent,\r\n ProgressContainerComponent,\r\n InputDisableSelectionDirective\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n HttpClientModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: HttpLoaderFactory,\r\n deps: [HttpClient]\r\n }\r\n }),\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgSelectModule,\r\n ChartModule,\r\n ContextMenuModule.forRoot()\r\n ],\r\n providers: [\r\n BackendService,\r\n ModalService,\r\n MoneyToIntPipe,\r\n IntToMoneyPipe,\r\n // {provide: HIGHCHARTS_MODULES, useFactory: () => [ highstock, more, exporting ] }\r\n ],\r\n entryComponents: [\r\n ModalContainerComponent\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.ASSIGN_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
6 && assignForm.get('name').value.length <= 25\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_WRONG' | translate }}\\r\\n
\\r\\n
25\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NAME_EXISTS' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
= variablesService.maxCommentLength\\\">\\r\\n {{ 'ASSIGN_ALIAS.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"ASSIGN_ALIAS.COST\\\" | translate : {value: alias.price | intToMoney, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\"","module.exports = \".form-assign {\\n margin: 2.4rem 0; }\\n .form-assign .alias-name {\\n width: 50%; }\\n .form-assign .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-assign .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-assign .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n .assign-alias-tooltip {\\n font-size: 1.3rem;\\n line-height: 2rem;\\n padding: 1rem 1.5rem;\\n max-width: 46rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvYXNzaWduLWFsaWFzL0Q6XFx6YW5vX3phbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxhc3NpZ24tYWxpYXNcXGFzc2lnbi1hbGlhcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFnQixFQUFBO0VBRGxCO0lBSUksVUFBVSxFQUFBO0VBSmQ7SUFRSSxpQkFBaUI7SUFDakIsZ0JBQWdCLEVBQUE7RUFUcEI7SUFhSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLHNCQUFzQixFQUFBO0VBZjFCO01Ba0JNLGdCQUFnQjtNQUNoQixZQUFZLEVBQUE7RUFLbEI7RUFDRSxpQkFBaUI7RUFDakIsaUJBQWlCO0VBQ2pCLG9CQUFvQjtFQUNwQixnQkFBZ0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2Fzc2lnbi1hbGlhcy9hc3NpZ24tYWxpYXMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1hc3NpZ24ge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcblxyXG4gIC5hbGlhcy1uYW1lIHtcclxuICAgIHdpZHRoOiA1MCU7XHJcbiAgfVxyXG5cclxuICAuYWxpYXMtY29zdCB7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgIG1hcmdpbi10b3A6IDJyZW07XHJcbiAgfVxyXG5cclxuICAud3JhcC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBtYXJnaW46IDIuNXJlbSAtMC43cmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcbiAgICAgIHdpZHRoOiAxNXJlbTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5hc3NpZ24tYWxpYXMtdG9vbHRpcCB7XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgbGluZS1oZWlnaHQ6IDJyZW07XHJcbiAgcGFkZGluZzogMXJlbSAxLjVyZW07XHJcbiAgbWF4LXdpZHRoOiA0NnJlbTtcclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {MoneyToIntPipe} from '../_helpers/pipes/money-to-int.pipe';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport BigNumber from 'bignumber.js';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-assign-alias',\r\n templateUrl: './assign-alias.component.html',\r\n styleUrls: ['./assign-alias.component.scss']\r\n})\r\nexport class AssignAliasComponent implements OnInit, OnDestroy {\r\n\r\n wallet: Wallet;\r\n assignForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, Validators.pattern(/^@?[a-z0-9\\.\\-]{6,25}$/)]),\r\n comment: new FormControl('', [(g: FormControl) => {\r\n if (g.value > this.variablesService.maxCommentLength) {\r\n return {'maxLength': true};\r\n } else {\r\n return null;\r\n }\r\n }])\r\n });\r\n assignFormSubscription: Subscription;\r\n alias = {\r\n name: '',\r\n fee: this.variablesService.default_fee,\r\n price: new BigNumber(0),\r\n reward: '0',\r\n rewardOriginal: '0',\r\n comment: '',\r\n exists: false\r\n };\r\n canRegister = false;\r\n notEnoughMoney = false;\r\n\r\n constructor(\r\n private ngZone: NgZone,\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private moneyToInt: MoneyToIntPipe,\r\n private intToMoney: IntToMoneyPipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n this.assignFormSubscription = this.assignForm.get('name').valueChanges.subscribe(value => {\r\n this.canRegister = false;\r\n this.alias.exists = false;\r\n const newName = value.toLowerCase().replace('@', '');\r\n if (!(this.assignForm.controls['name'].errors && this.assignForm.controls['name'].errors.hasOwnProperty('pattern')) && newName.length >= 6 && newName.length <= 25) {\r\n this.backend.getAliasByName(newName, status => {\r\n this.ngZone.run(() => {\r\n this.alias.exists = status;\r\n });\r\n if (!status) {\r\n this.alias.price = new BigNumber(0);\r\n this.backend.getAliasCoast(newName, (statusPrice, dataPrice) => {\r\n this.ngZone.run(() => {\r\n if (statusPrice) {\r\n this.alias.price = BigNumber.sum(dataPrice['coast'], this.variablesService.default_fee_big);\r\n }\r\n this.notEnoughMoney = this.alias.price.isGreaterThan(this.wallet.unlocked_balance);\r\n this.alias.reward = this.intToMoney.transform(this.alias.price, false);\r\n this.alias.rewardOriginal = this.intToMoney.transform(dataPrice['coast'], false);\r\n this.canRegister = !this.notEnoughMoney;\r\n });\r\n });\r\n } else {\r\n this.notEnoughMoney = false;\r\n this.alias.reward = '0';\r\n this.alias.rewardOriginal = '0';\r\n }\r\n });\r\n } else {\r\n this.notEnoughMoney = false;\r\n this.alias.reward = '0';\r\n this.alias.rewardOriginal = '0';\r\n }\r\n this.alias.name = newName;\r\n });\r\n }\r\n\r\n assignAlias() {\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n if (alias.hasOwnProperty('name')) {\r\n this.modalService.prepareModal('info', 'ASSIGN_ALIAS.ONE_ALIAS');\r\n } else {\r\n this.alias.comment = this.assignForm.get('comment').value;\r\n this.backend.registerAlias(this.wallet.wallet_id, this.alias.name, this.wallet.address, this.alias.fee, this.alias.comment, this.alias.rewardOriginal, (status, data) => {\r\n if (status) {\r\n this.wallet.wakeAlias = true;\r\n this.modalService.prepareModal('info', 'ASSIGN_ALIAS.REQUEST_ADD_REG');\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.assignFormSubscription.unsubscribe();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n {{ 'CONTRACTS.EMPTY' | translate }}\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'CONTRACTS.CONTRACTS' | translate }}{{ 'CONTRACTS.DATE' | translate }}{{ 'CONTRACTS.AMOUNT' | translate }}{{ 'CONTRACTS.STATUS' | translate }}{{ 'CONTRACTS.COMMENTS' | translate }}
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{item.private_detailes.t}}\\r\\n
\\r\\n
\\r\\n
{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}
\\r\\n
\\r\\n
{{item.private_detailes.to_pay | intToMoney}} {{variablesService.defaultCurrency}}
\\r\\n
\\r\\n
\\r\\n {{item | contractStatusMessages}}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{item.private_detailes.c}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.empty-contracts {\\n font-size: 1.5rem; }\\n\\n.wrap-table {\\n margin: -3rem -3rem 0 -3rem;\\n overflow-x: auto; }\\n\\n.wrap-table table tbody tr {\\n cursor: pointer;\\n outline: none !important; }\\n\\n.wrap-table table tbody tr .contract {\\n position: relative;\\n display: flex;\\n align-items: center; }\\n\\n.wrap-table table tbody tr .contract .icon {\\n flex-shrink: 0; }\\n\\n.wrap-table table tbody tr .contract .icon.new, .wrap-table table tbody tr .contract .icon.alert {\\n position: absolute;\\n top: 0; }\\n\\n.wrap-table table tbody tr .contract .icon.new {\\n left: -2.3rem;\\n -webkit-mask: url('new.svg') no-repeat center;\\n mask: url('new.svg') no-repeat center;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-table table tbody tr .contract .icon.alert {\\n top: 0.2rem;\\n left: -2.1rem;\\n -webkit-mask: url('alert.svg') no-repeat center;\\n mask: url('alert.svg') no-repeat center;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.wrap-table table tbody tr .contract .icon.purchase, .wrap-table table tbody tr .contract .icon.sell {\\n margin-right: 1rem;\\n width: 1.5rem;\\n height: 1.5rem; }\\n\\n.wrap-table table tbody tr .contract .icon.purchase {\\n -webkit-mask: url('purchase.svg') no-repeat center;\\n mask: url('purchase.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .contract .icon.sell {\\n -webkit-mask: url('sell.svg') no-repeat center;\\n mask: url('sell.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .contract span {\\n text-overflow: ellipsis;\\n overflow: hidden; }\\n\\n.wrap-table table tbody tr .status, .wrap-table table tbody tr .comment {\\n display: inline-block;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n max-width: 100%; }\\n\\n.contracts-buttons {\\n display: flex;\\n margin: 3rem 0;\\n width: 50%; }\\n\\n.contracts-buttons button {\\n flex: 0 1 50%;\\n margin-right: 1.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29udHJhY3RzL0Q6XFx6YW5vX3phbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFxjb250cmFjdHNcXGNvbnRyYWN0cy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQVcsRUFBQTs7QUFHYjtFQUNFLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLDJCQUEyQjtFQUMzQixnQkFBZ0IsRUFBQTs7QUFGbEI7SUFTUSxlQUFlO0lBQ2Ysd0JBQXdCLEVBQUE7O0FBVmhDO01BYVUsa0JBQWtCO01BQ2xCLGFBQWE7TUFDYixtQkFBbUIsRUFBQTs7QUFmN0I7UUFrQlksY0FBYyxFQUFBOztBQWxCMUI7VUFxQmMsa0JBQWtCO1VBQ2xCLE1BQU0sRUFBQTs7QUF0QnBCO1VBMEJjLGFBQWE7VUFDYiw2Q0FBc0Q7a0JBQXRELHFDQUFzRDtVQUN0RCxhQUFhO1VBQ2IsY0FBYyxFQUFBOztBQTdCNUI7VUFpQ2MsV0FBVztVQUNYLGFBQWE7VUFDYiwrQ0FBd0Q7a0JBQXhELHVDQUF3RDtVQUN4RCxhQUFhO1VBQ2IsY0FBYyxFQUFBOztBQXJDNUI7VUF5Q2Msa0JBQWtCO1VBQ2xCLGFBQWE7VUFDYixjQUFjLEVBQUE7O0FBM0M1QjtVQStDYyxrREFBMkQ7a0JBQTNELDBDQUEyRCxFQUFBOztBQS9DekU7VUFtRGMsOENBQXVEO2tCQUF2RCxzQ0FBdUQsRUFBQTs7QUFuRHJFO1FBd0RZLHVCQUF1QjtRQUN2QixnQkFBZ0IsRUFBQTs7QUF6RDVCO01BOERVLHFCQUFxQjtNQUNyQix1QkFBdUI7TUFDdkIsZ0JBQWdCO01BQ2hCLGVBQWUsRUFBQTs7QUFPekI7RUFDRSxhQUFhO0VBQ2IsY0FBYztFQUNkLFVBQVUsRUFBQTs7QUFIWjtJQU1JLGFBQWE7SUFDYixvQkFBb0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2NvbnRyYWN0cy9jb250cmFjdHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5lbXB0eS1jb250cmFjdHMge1xyXG4gIGZvbnQtc2l6ZTogMS41cmVtO1xyXG59XHJcblxyXG4ud3JhcC10YWJsZSB7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwIC0zcmVtO1xyXG4gIG92ZXJmbG93LXg6IGF1dG87XHJcblxyXG4gIHRhYmxlIHtcclxuXHJcbiAgICB0Ym9keSB7XHJcblxyXG4gICAgICB0ciB7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcclxuXHJcbiAgICAgICAgLmNvbnRyYWN0IHtcclxuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcblxyXG4gICAgICAgICAgICAmLm5ldywgJi5hbGVydCB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5uZXcge1xyXG4gICAgICAgICAgICAgIGxlZnQ6IC0yLjNyZW07XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9uZXcuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICYuYWxlcnQge1xyXG4gICAgICAgICAgICAgIHRvcDogMC4ycmVtO1xyXG4gICAgICAgICAgICAgIGxlZnQ6IC0yLjFyZW07XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9hbGVydC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEuMnJlbTtcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDEuMnJlbTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5wdXJjaGFzZSwgJi5zZWxsIHtcclxuICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEuNXJlbTtcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDEuNXJlbTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgJi5wdXJjaGFzZSB7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9wdXJjaGFzZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICYuc2VsbCB7XHJcbiAgICAgICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9zZWxsLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHNwYW4ge1xyXG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMsIC5jb21tZW50IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5jb250cmFjdHMtYnV0dG9ucyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBtYXJnaW46IDNyZW0gMDtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICBidXR0b24ge1xyXG4gICAgZmxleDogMCAxIDUwJTtcclxuICAgIG1hcmdpbi1yaWdodDogMS41cmVtO1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, OnInit, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\n\r\n@Component({\r\n selector: 'app-contracts',\r\n templateUrl: './contracts.component.html',\r\n styleUrls: ['./contracts.component.scss']\r\n})\r\nexport class ContractsComponent implements OnInit, OnDestroy {\r\n\r\n parentRouting;\r\n walletId;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private variablesService: VariablesService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n if (params.hasOwnProperty('id')) {\r\n this.walletId = params['id'];\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.CREATE_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'CREATE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative; }\\n\\n.form-create {\\n margin: 2.4rem 0;\\n width: 50%; }\\n\\n.form-create .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem; }\\n\\n.form-create .wrap-buttons button {\\n margin: 0 0.7rem; }\\n\\n.form-create .wrap-buttons button.transparent-button {\\n flex-basis: 50%; }\\n\\n.form-create .wrap-buttons button.select-button {\\n flex-basis: 60%; }\\n\\n.form-create .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY3JlYXRlLXdhbGxldC9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcY3JlYXRlLXdhbGxldFxcY3JlYXRlLXdhbGxldC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGdCQUFnQjtFQUNoQixVQUFVLEVBQUE7O0FBRlo7SUFLSSxhQUFhO0lBQ2Isc0JBQXNCLEVBQUE7O0FBTjFCO01BU00sZ0JBQWdCLEVBQUE7O0FBVHRCO1FBWVEsZUFBZSxFQUFBOztBQVp2QjtRQWdCUSxlQUFlLEVBQUE7O0FBaEJ2QjtRQW9CUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9jcmVhdGUtd2FsbGV0L2NyZWF0ZS13YWxsZXQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4uZm9ybS1jcmVhdGUge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG5cclxuICAgICAgJi50cmFuc3BhcmVudC1idXR0b24ge1xyXG4gICAgICAgIGZsZXgtYmFzaXM6IDUwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5zZWxlY3QtYnV0dG9uIHtcclxuICAgICAgICBmbGV4LWJhc2lzOiA2MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuY3JlYXRlLWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMSAxIDUwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Router} from '@angular/router';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-create-wallet',\r\n templateUrl: './create-wallet.component.html',\r\n styleUrls: ['./create-wallet.component.scss']\r\n})\r\nexport class CreateWalletComponent implements OnInit {\r\n\r\n createForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n password: new FormControl(''),\r\n confirm: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirm').value ? null : {'confirm_mismatch': true};\r\n });\r\n\r\n wallet = {\r\n id: ''\r\n };\r\n\r\n walletSaved = false;\r\n walletSavedName = '';\r\n progressWidth = '9rem';\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n createWallet() {\r\n this.ngZone.run(() => {\r\n this.progressWidth = '100%';\r\n this.router.navigate(['/seed-phrase'], {queryParams: {wallet_id: this.wallet.id}});\r\n });\r\n }\r\n\r\n saveWallet() {\r\n if (this.createForm.valid && this.createForm.get('name').value.length <= this.variablesService.maxWalletNameLength) {\r\n this.backend.saveFileDialog(this.translate.instant('CREATE_WALLET.TITLE_SAVE'), '*', this.variablesService.settings.default_path, (file_status, file_data) => {\r\n if (file_status) {\r\n this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/'));\r\n this.walletSavedName = file_data.path.substr(file_data.path.lastIndexOf('/') + 1, file_data.path.length - 1);\r\n this.backend.generateWallet(file_data.path, this.createForm.get('password').value, (generate_status, generate_data, errorCode) => {\r\n if (generate_status) {\r\n this.wallet.id = generate_data.wallet_id;\r\n this.variablesService.opening_wallet = new Wallet(\r\n generate_data.wallet_id,\r\n this.createForm.get('name').value,\r\n this.createForm.get('password').value,\r\n generate_data['wi'].path,\r\n generate_data['wi'].address,\r\n generate_data['wi'].balance,\r\n generate_data['wi'].unlocked_balance,\r\n generate_data['wi'].mined_total,\r\n generate_data['wi'].tracking_hey\r\n );\r\n this.ngZone.run(() => {\r\n this.walletSaved = true;\r\n this.progressWidth = '50%';\r\n });\r\n } else {\r\n if (errorCode && errorCode === 'ALREADY_EXISTS') {\r\n this.modalService.prepareModal('error', 'CREATE_WALLET.ERROR_CANNOT_SAVE_TOP');\r\n } else {\r\n this.modalService.prepareModal('error', 'CREATE_WALLET.ERROR_CANNOT_SAVE_SYSTEM');\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.EDIT_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
0 && notEnoughMoney\\\">\\r\\n {{ 'EDIT_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
= variablesService.maxCommentLength\\\">\\r\\n {{ 'EDIT_ALIAS.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"EDIT_ALIAS.COST\\\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \".form-edit {\\n margin: 2.4rem 0; }\\n .form-edit .alias-name {\\n width: 50%; }\\n .form-edit .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-edit .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-edit .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvZWRpdC1hbGlhcy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcZWRpdC1hbGlhc1xcZWRpdC1hbGlhcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFnQixFQUFBO0VBRGxCO0lBSUksVUFBVSxFQUFBO0VBSmQ7SUFRSSxpQkFBaUI7SUFDakIsZ0JBQWdCLEVBQUE7RUFUcEI7SUFhSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLHNCQUFzQixFQUFBO0VBZjFCO01Ba0JNLGdCQUFnQjtNQUNoQixZQUFZLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9lZGl0LWFsaWFzL2VkaXQtYWxpYXMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1lZGl0IHtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG5cclxuICAuYWxpYXMtbmFtZSB7XHJcbiAgICB3aWR0aDogNTAlO1xyXG4gIH1cclxuXHJcbiAgLmFsaWFzLWNvc3Qge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xyXG4gIH1cclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG4gICAgICB3aWR0aDogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-edit-alias',\r\n templateUrl: './edit-alias.component.html',\r\n styleUrls: ['./edit-alias.component.scss']\r\n})\r\nexport class EditAliasComponent implements OnInit {\r\n\r\n wallet: Wallet;\r\n alias: any;\r\n oldAliasComment: string;\r\n notEnoughMoney: boolean;\r\n requestProcessing = false;\r\n\r\n constructor(\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n this.alias = {\r\n name: alias.name,\r\n address: alias.address,\r\n comment: alias.comment\r\n };\r\n this.oldAliasComment = alias.comment;\r\n this.notEnoughMoney = this.wallet.unlocked_balance.isLessThan(this.variablesService.default_fee_big);\r\n }\r\n\r\n updateAlias() {\r\n if (this.requestProcessing || this.notEnoughMoney || this.oldAliasComment === this.alias.comment || this.alias.comment.length > this.variablesService.maxCommentLength) {\r\n return;\r\n }\r\n this.requestProcessing = true;\r\n this.backend.updateAlias(this.wallet.wallet_id, this.alias, this.variablesService.default_fee, (status) => {\r\n if (status) {\r\n this.modalService.prepareModal('success', '');\r\n this.wallet.alias['comment'] = this.alias.comment;\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n this.requestProcessing = false;\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'HISTORY.STATUS' | translate }}{{ 'HISTORY.DATE' | translate }}{{ 'HISTORY.AMOUNT' | translate }}{{ 'HISTORY.FEE' | translate }}{{ 'HISTORY.ADDRESS' | translate }}
\\r\\n
\\r\\n 0\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ (item.is_income ? 'HISTORY.RECEIVED' : 'HISTORY.SEND') | translate }}\\r\\n
\\r\\n
{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}\\r\\n {{item.sortAmount | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n \\r\\n {{item.sortFee | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n \\r\\n {{item | historyTypeMessages}}\\r\\n {{item.remote_addresses[0]}}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-table {\\n margin: -3rem; }\\n\\n.wrap-table table tbody tr td {\\n min-width: 10rem; }\\n\\n.wrap-table table tbody tr .status {\\n position: relative;\\n display: flex;\\n align-items: center; }\\n\\n.wrap-table table tbody tr .status .confirmation {\\n position: absolute;\\n top: 50%;\\n left: -2rem;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n display: flex;\\n align-items: flex-end;\\n width: 0.7rem;\\n height: 1.5rem; }\\n\\n.wrap-table table tbody tr .status .confirmation .fill {\\n width: 100%; }\\n\\n.wrap-table table tbody tr .status .icon {\\n margin-right: 1rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-table table tbody tr .status.send .icon {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .status.received .icon {\\n -webkit-mask: url('receive.svg') no-repeat center;\\n mask: url('receive.svg') no-repeat center; }\\n\\n.wrap-table table tbody tr .remote-address {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n max-width: 25vw; }\\n\\n.wrap-table table tbody tr:not(.transaction-details) {\\n cursor: pointer; }\\n\\n.wrap-table table tbody tr.transaction-details {\\n transition: 0.5s height linear, 0s font-size;\\n transition-delay: 0s, 0.5s;\\n height: 0; }\\n\\n.wrap-table table tbody tr.transaction-details.open {\\n height: 13.2rem; }\\n\\n.wrap-table table tbody tr.transaction-details td {\\n position: relative;\\n overflow: hidden;\\n line-height: inherit;\\n padding-top: 0;\\n padding-bottom: 0; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvaGlzdG9yeS9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcaGlzdG9yeVxcaGlzdG9yeS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQVcsRUFBQTs7QUFHYjtFQUNFLGFBQWEsRUFBQTs7QUFEZjtJQVVVLGdCQUFnQixFQUFBOztBQVYxQjtJQWNVLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsbUJBQW1CLEVBQUE7O0FBaEI3QjtNQW1CWSxrQkFBa0I7TUFDbEIsUUFBUTtNQUNSLFdBQVc7TUFDWCxtQ0FBMkI7Y0FBM0IsMkJBQTJCO01BQzNCLGFBQWE7TUFDYixxQkFBcUI7TUFDckIsYUFBYTtNQUNiLGNBQWMsRUFBQTs7QUExQjFCO1FBNkJjLFdBQVcsRUFBQTs7QUE3QnpCO01Ba0NZLGtCQUFrQjtNQUNsQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQXBDMUI7TUEwQ2MsOENBQXVEO2NBQXZELHNDQUF1RCxFQUFBOztBQTFDckU7TUFpRGMsaURBQTBEO2NBQTFELHlDQUEwRCxFQUFBOztBQWpEeEU7SUF1RFUsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtJQUN2QixlQUFlLEVBQUE7O0FBekR6QjtJQTZEVSxlQUFlLEVBQUE7O0FBN0R6QjtJQWtFVSw0Q0FBNEM7SUFDNUMsMEJBQTBCO0lBQzFCLFNBQVMsRUFBQTs7QUFwRW5CO01BdUVZLGVBQWUsRUFBQTs7QUF2RTNCO01BMkVZLGtCQUFrQjtNQUNsQixnQkFBZ0I7TUFDaEIsb0JBQW9CO01BQ3BCLGNBQWM7TUFDZCxpQkFBaUIsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2hpc3RvcnkvaGlzdG9yeS5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLndyYXAtdGFibGUge1xyXG4gIG1hcmdpbjogLTNyZW07XHJcblxyXG4gIHRhYmxlIHtcclxuXHJcbiAgICB0Ym9keSB7XHJcblxyXG4gICAgICB0ciB7XHJcblxyXG4gICAgICAgIHRkIHtcclxuICAgICAgICAgIG1pbi13aWR0aDogMTByZW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc3RhdHVzIHtcclxuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuICAgICAgICAgIC5jb25maXJtYXRpb24ge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICBsZWZ0OiAtMnJlbTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgICAgICAgICAgIHdpZHRoOiAwLjdyZW07XHJcbiAgICAgICAgICAgIGhlaWdodDogMS41cmVtO1xyXG5cclxuICAgICAgICAgICAgLmZpbGwge1xyXG4gICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XHJcbiAgICAgICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgICAgIGhlaWdodDogMS43cmVtO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYuc2VuZCAge1xyXG5cclxuICAgICAgICAgICAgLmljb24ge1xyXG4gICAgICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvc2VuZC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmLnJlY2VpdmVkIHtcclxuXHJcbiAgICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3JlY2VpdmUuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAucmVtb3RlLWFkZHJlc3Mge1xyXG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgICAgbWF4LXdpZHRoOiAyNXZ3O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpub3QoLnRyYW5zYWN0aW9uLWRldGFpbHMpIHtcclxuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYudHJhbnNhY3Rpb24tZGV0YWlscyB7XHJcbiAgICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IDAuNXMgaGVpZ2h0IGxpbmVhciwgMHMgZm9udC1zaXplO1xyXG4gICAgICAgICAgdHJhbnNpdGlvbjogMC41cyBoZWlnaHQgbGluZWFyLCAwcyBmb250LXNpemU7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcywgMC41cztcclxuICAgICAgICAgIGhlaWdodDogMDtcclxuXHJcbiAgICAgICAgICAmLm9wZW4ge1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDEzLjJyZW07XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGQge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xyXG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcclxuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, OnInit, OnDestroy, AfterViewChecked, ViewChild, ElementRef} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-history',\r\n templateUrl: './history.component.html',\r\n styleUrls: ['./history.component.scss']\r\n})\r\nexport class HistoryComponent implements OnInit, OnDestroy, AfterViewChecked {\r\n parentRouting;\r\n openedDetails = false;\r\n calculatedWidth = [];\r\n @ViewChild('head') head: ElementRef;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private variablesService: VariablesService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n this.openedDetails = false;\r\n });\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.calculateWidth();\r\n }\r\n\r\n getHeight(item) {\r\n if ((this.variablesService.height_app - item.height >= 10 && item.height !== 0) || (item.is_mining === true && item.height === 0)) {\r\n return 100;\r\n } else {\r\n if (item.height === 0 || this.variablesService.height_app - item.height < 0) {\r\n return 0;\r\n } else {\r\n return (this.variablesService.height_app - item.height) * 10;\r\n }\r\n }\r\n }\r\n\r\n openDetails(tx_hash) {\r\n if (tx_hash === this.openedDetails) {\r\n this.openedDetails = false;\r\n } else {\r\n this.openedDetails = tx_hash;\r\n }\r\n }\r\n\r\n calculateWidth() {\r\n this.calculatedWidth = [];\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[0].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[1].clientWidth + this.head.nativeElement.childNodes[2].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[3].clientWidth);\r\n this.calculatedWidth.push(this.head.nativeElement.childNodes[4].clientWidth);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'LOGIN.FORM_ERRORS.PASS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'LOGIN.FORM_ERRORS.CONFIRM_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'LOGIN.FORM_ERRORS.MISMATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'LOGIN.FORM_ERRORS.PASS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n position: fixed;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%; }\\n :host .content {\\n display: flex; }\\n :host .content .wrap-login {\\n margin: auto;\\n width: 100%;\\n max-width: 40rem; }\\n :host .content .wrap-login .logo {\\n background: url('logo.svg') no-repeat center;\\n width: 100%;\\n height: 20rem; }\\n :host .content .wrap-login .form-login {\\n display: flex;\\n flex-direction: column; }\\n :host .content .wrap-login .form-login button {\\n margin: 2.5rem auto;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbG9naW4vRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXGxvZ2luXFxsb2dpbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGVBQWU7RUFDZixNQUFNO0VBQ04sT0FBTztFQUNQLFdBQVc7RUFDWCxZQUFZLEVBQUE7RUFMZDtJQVFJLGFBQWEsRUFBQTtFQVJqQjtNQVdNLFlBQVk7TUFDWixXQUFXO01BQ1gsZ0JBQWdCLEVBQUE7RUFidEI7UUFnQlEsNENBQTZEO1FBQzdELFdBQVc7UUFDWCxhQUFhLEVBQUE7RUFsQnJCO1FBc0JRLGFBQWE7UUFDYixzQkFBc0IsRUFBQTtFQXZCOUI7VUEwQlUsbUJBQW1CO1VBQ25CLFdBQVc7VUFDWCxnQkFBZ0IsRUFBQSIsImZpbGUiOiJzcmMvYXBwL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gIC5jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcblxyXG4gICAgLndyYXAtbG9naW4ge1xyXG4gICAgICBtYXJnaW46IGF1dG87XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDQwcmVtO1xyXG5cclxuICAgICAgLmxvZ28ge1xyXG4gICAgICAgIGJhY2tncm91bmQ6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvbG9nby5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAyMHJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZvcm0tbG9naW4ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHJcbiAgICAgICAgYnV0dG9uIHtcclxuICAgICAgICAgIG1hcmdpbjogMi41cmVtIGF1dG87XHJcbiAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\nexport class LoginComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n\r\n regForm = new FormGroup({\r\n password: new FormControl('', Validators.required),\r\n confirmation: new FormControl('', Validators.required)\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirmation').value ? null : {'mismatch': true};\r\n });\r\n\r\n authForm = new FormGroup({\r\n password: new FormControl('', Validators.required)\r\n });\r\n\r\n type = 'reg';\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.type) {\r\n this.type = params.type;\r\n }\r\n });\r\n }\r\n\r\n onSubmitCreatePass(): void {\r\n if (this.regForm.valid) {\r\n this.variablesService.appPass = this.regForm.get('password').value;\r\n this.backend.storeSecureAppData((status, data) => {\r\n if (status) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n } else {\r\n console.log(data['error_code']);\r\n }\r\n });\r\n }\r\n }\r\n\r\n onSubmitAuthPass(): void {\r\n if (this.authForm.valid) {\r\n const appPass = this.authForm.get('password').value;\r\n this.backend.getSecureAppData({pass: appPass}, (status, data) => {\r\n if (!data.error_code) {\r\n this.variablesService.startCountdown();\r\n this.variablesService.appPass = appPass;\r\n if (this.variablesService.wallets.length) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.variablesService.wallets[0].wallet_id]);\r\n });\r\n return;\r\n }\r\n if (Object.keys(data).length !== 0) {\r\n let openWallets = 0;\r\n let runWallets = 0;\r\n data.forEach((wallet, wallet_index) => {\r\n this.backend.openWallet(wallet.path, wallet.pass, true, (open_status, open_data, open_error) => {\r\n if (open_status || open_error === 'FILE_RESTORED') {\r\n openWallets++;\r\n this.ngZone.run(() => {\r\n const new_wallet = new Wallet(\r\n open_data.wallet_id,\r\n wallet.name,\r\n wallet.pass,\r\n open_data['wi'].path,\r\n open_data['wi'].address,\r\n open_data['wi'].balance,\r\n open_data['wi'].unlocked_balance,\r\n open_data['wi'].mined_total,\r\n open_data['wi'].tracking_hey\r\n );\r\n new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);\r\n if (open_data.recent_history && open_data.recent_history.history) {\r\n new_wallet.prepareHistory(open_data.recent_history.history);\r\n }\r\n this.backend.getContracts(open_data.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n new_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.variablesService.wallets.push(new_wallet);\r\n if (this.variablesService.wallets.length === 1) {\r\n this.router.navigate(['/wallet/' + this.variablesService.wallets[0].wallet_id]);\r\n }\r\n });\r\n this.backend.runWallet(open_data.wallet_id, (run_status) => {\r\n if (run_status) {\r\n runWallets++;\r\n } else {\r\n if (wallet_index === data.length - 1 && runWallets === 0) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n } else {\r\n if (wallet_index === data.length - 1 && openWallets === 0) {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
0\\\">\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n

{{ 'MAIN.TITLE' | translate }}

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'MAIN.HELP' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n flex: 1 0 auto;\\n padding: 3rem; }\\n\\n.content {\\n padding: 3rem;\\n min-height: 100%; }\\n\\n.content .head {\\n justify-content: flex-end; }\\n\\n.add-wallet .add-wallet-title {\\n margin-bottom: 1rem; }\\n\\n.add-wallet .add-wallet-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin: 0 -0.5rem;\\n padding: 1.5rem 0; }\\n\\n.add-wallet .add-wallet-buttons button {\\n flex: 1 0 auto;\\n margin: 0 0.5rem; }\\n\\n.add-wallet .add-wallet-help {\\n display: flex;\\n cursor: pointer;\\n font-size: 1.3rem;\\n line-height: 1.4rem; }\\n\\n.add-wallet .add-wallet-help .icon {\\n -webkit-mask: url('howto.svg') no-repeat center;\\n mask: url('howto.svg') no-repeat center;\\n margin-right: 0.8rem;\\n width: 1.4rem;\\n height: 1.4rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWFpbi9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcbWFpblxcbWFpbi5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGNBQWM7RUFDZCxhQUFhLEVBQUE7O0FBR2Y7RUFDRSxhQUFhO0VBQ2IsZ0JBQWdCLEVBQUE7O0FBRmxCO0lBS0kseUJBQXlCLEVBQUE7O0FBSTdCO0VBR0ksbUJBQW1CLEVBQUE7O0FBSHZCO0VBT0ksYUFBYTtFQUNiLG1CQUFtQjtFQUNuQiw4QkFBOEI7RUFDOUIsaUJBQWlCO0VBQ2pCLGlCQUFpQixFQUFBOztBQVhyQjtJQWNNLGNBQWM7SUFDZCxnQkFBZ0IsRUFBQTs7QUFmdEI7RUFvQkksYUFBYTtFQUNiLGVBQWU7RUFDZixpQkFBaUI7RUFDakIsbUJBQW1CLEVBQUE7O0FBdkJ2QjtJQTBCTSwrQ0FBd0Q7WUFBeEQsdUNBQXdEO0lBQ3hELG9CQUFvQjtJQUNwQixhQUFhO0lBQ2IsY0FBYyxFQUFBIiwiZmlsZSI6InNyYy9hcHAvbWFpbi9tYWluLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIGZsZXg6IDEgMCBhdXRvO1xyXG4gIHBhZGRpbmc6IDNyZW07XHJcbn1cclxuXHJcbi5jb250ZW50IHtcclxuICBwYWRkaW5nOiAzcmVtO1xyXG4gIG1pbi1oZWlnaHQ6IDEwMCU7XHJcblxyXG4gIC5oZWFkIHtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbiAgfVxyXG59XHJcblxyXG4uYWRkLXdhbGxldCB7XHJcblxyXG4gIC5hZGQtd2FsbGV0LXRpdGxlIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgfVxyXG5cclxuICAuYWRkLXdhbGxldC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgbWFyZ2luOiAwIC0wLjVyZW07XHJcbiAgICBwYWRkaW5nOiAxLjVyZW0gMDtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBmbGV4OiAxIDAgYXV0bztcclxuICAgICAgbWFyZ2luOiAwIDAuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5hZGQtd2FsbGV0LWhlbHAge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNHJlbTtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvaG93dG8uc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuOHJlbTtcclxuICAgICAgd2lkdGg6IDEuNHJlbTtcclxuICAgICAgaGVpZ2h0OiAxLjRyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from \"@angular/common\";\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Router} from '@angular/router';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-main',\r\n templateUrl: './main.component.html',\r\n styleUrls: ['./main.component.scss']\r\n})\r\nexport class MainComponent implements OnInit {\r\n\r\n constructor(\r\n private router: Router,\r\n private location: Location,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n\r\n openWallet() {\r\n this.backend.openFileDialog(this.translate.instant('MAIN.CHOOSE_PATH'), '*', this.variablesService.settings.default_path, (file_status, file_data) => {\r\n if (file_status) {\r\n this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/'));\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/open'], {queryParams: {path: file_data.path}});\r\n });\r\n } else {\r\n console.log(file_data['error_code']);\r\n }\r\n });\r\n }\r\n\r\n openInBrowser() {\r\n this.backend.openUrlInBrowser('docs.zano.org/v1.0/docs/how-to-create-wallet');\r\n }\r\n\r\n back() {\r\n this.location.back()\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{ 'MESSAGES.ADDRESS' | translate }}{{ 'MESSAGES.MESSAGE' | translate }}
\\r\\n {{message.address}}\\r\\n \\r\\n \\r\\n {{message.message}}\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-table {\\n margin: -3rem; }\\n\\n.wrap-table table tbody tr td:first-child {\\n position: relative;\\n padding-right: 5rem;\\n width: 18rem; }\\n\\n.wrap-table table tbody tr td:first-child span {\\n display: block;\\n line-height: 3.5rem;\\n max-width: 10rem; }\\n\\n.wrap-table table tbody tr td:first-child .icon {\\n position: absolute;\\n top: 50%;\\n right: 1rem;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n display: block;\\n -webkit-mask: url('alert.svg') no-repeat 0;\\n mask: url('alert.svg') no-repeat 0;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvbWVzc2FnZXMvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXG1lc3NhZ2VzXFxtZXNzYWdlcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQVcsRUFBQTs7QUFHYjtFQUNFLGFBQWEsRUFBQTs7QUFEZjtJQVlZLGtCQUFrQjtJQUNsQixtQkFBbUI7SUFDbkIsWUFBWSxFQUFBOztBQWR4QjtNQWlCYyxjQUFjO01BQ2QsbUJBQW1CO01BQ25CLGdCQUFnQixFQUFBOztBQW5COUI7TUF1QmMsa0JBQWtCO01BQ2xCLFFBQVE7TUFDUixXQUFXO01BQ1gsbUNBQTJCO2NBQTNCLDJCQUEyQjtNQUMzQixjQUFjO01BQ2QsMENBQW1EO2NBQW5ELGtDQUFtRDtNQUNuRCxhQUFhO01BQ2IsY0FBYyxFQUFBIiwiZmlsZSI6InNyYy9hcHAvbWVzc2FnZXMvbWVzc2FnZXMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi53cmFwLXRhYmxlIHtcclxuICBtYXJnaW46IC0zcmVtO1xyXG5cclxuICB0YWJsZSB7XHJcblxyXG4gICAgdGJvZHkge1xyXG5cclxuICAgICAgdHIge1xyXG5cclxuICAgICAgICB0ZCB7XHJcblxyXG4gICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNXJlbTtcclxuICAgICAgICAgICAgd2lkdGg6IDE4cmVtO1xyXG5cclxuICAgICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDMuNXJlbTtcclxuICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwcmVtO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuaWNvbiB7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgIHJpZ2h0OiAxcmVtO1xyXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2FsZXJ0LnN2Zykgbm8tcmVwZWF0IDA7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEuMnJlbTtcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDEuMnJlbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-messages',\r\n templateUrl: './messages.component.html',\r\n styleUrls: ['./messages.component.scss']\r\n})\r\nexport class MessagesComponent implements OnInit {\r\n\r\n messages = [\r\n {\r\n is_new: true,\r\n address: '@bitmap',\r\n message: 'No more miners for you!'\r\n },\r\n {\r\n is_new: false,\r\n address: 'Hjkwey36gHasdhkajshd4bxnb5mcvowyefb2633FdsFGGWbb',\r\n message: 'Hey! What’s with our BBR deal?'\r\n },\r\n {\r\n is_new: false,\r\n address: '@john',\r\n message: 'I’m coming!'\r\n }\r\n ];\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {}\r\n\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.OPEN_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'OPEN_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\"","module.exports = \".form-open {\\n margin: 2.4rem 0;\\n width: 50%; }\\n .form-open .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem; }\\n .form-open .wrap-buttons button {\\n margin: 0 0.7rem; }\\n .form-open .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvb3Blbi13YWxsZXQvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXG9wZW4td2FsbGV0XFxvcGVuLXdhbGxldC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFnQjtFQUNoQixVQUFVLEVBQUE7RUFGWjtJQUtJLGFBQWE7SUFDYixzQkFBc0IsRUFBQTtFQU4xQjtNQVNNLGdCQUFnQixFQUFBO0VBVHRCO1FBWVEsYUFBYSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvb3Blbi13YWxsZXQvb3Blbi13YWxsZXQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1vcGVuIHtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIC53cmFwLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIG1hcmdpbjogMi41cmVtIC0wLjdyZW07XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgbWFyZ2luOiAwIDAuN3JlbTtcclxuXHJcbiAgICAgICYuY3JlYXRlLWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleDogMSAxIDUwJTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-open-wallet',\r\n templateUrl: './open-wallet.component.html',\r\n styleUrls: ['./open-wallet.component.scss']\r\n})\r\nexport class OpenWalletComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n filePath: string;\r\n\r\n openForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n password: new FormControl('')\r\n });\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.path) {\r\n this.filePath = params.path;\r\n let filename = '';\r\n if (params.path.lastIndexOf('.') === -1) {\r\n filename = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n } else {\r\n filename = params.path.substr(params.path.lastIndexOf('/') + 1, params.path.lastIndexOf('.') - 1 - params.path.lastIndexOf('/'));\r\n }\r\n if (filename.length > 25) {\r\n filename = filename.slice(0, 25);\r\n }\r\n this.openForm.get('name').setValue(filename);\r\n this.openForm.get('name').markAsTouched();\r\n }\r\n });\r\n }\r\n\r\n openWallet() {\r\n if (this.openForm.valid && this.openForm.get('name').value.length <= this.variablesService.maxWalletNameLength) {\r\n this.backend.openWallet(this.filePath, this.openForm.get('password').value, false, (open_status, open_data, open_error) => {\r\n if (open_error && open_error === 'FILE_NOT_FOUND') {\r\n let error_translate = this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND1');\r\n error_translate += ':
' + this.filePath;\r\n error_translate += this.translate.instant('OPEN_WALLET.FILE_NOT_FOUND2');\r\n this.modalService.prepareModal('error', error_translate);\r\n } else {\r\n if (open_status || open_error === 'FILE_RESTORED') {\r\n\r\n let exists = false;\r\n this.variablesService.wallets.forEach((wallet) => {\r\n if (wallet.address === open_data['wi'].address) {\r\n exists = true;\r\n }\r\n });\r\n\r\n if (exists) {\r\n this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');\r\n this.backend.closeWallet(open_data.wallet_id, (close_status, close_data) => {\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n });\r\n } else {\r\n const new_wallet = new Wallet(\r\n open_data.wallet_id,\r\n this.openForm.get('name').value,\r\n this.openForm.get('password').value,\r\n open_data['wi'].path,\r\n open_data['wi'].address,\r\n open_data['wi'].balance,\r\n open_data['wi'].unlocked_balance,\r\n open_data['wi'].mined_total,\r\n open_data['wi'].tracking_hey\r\n );\r\n new_wallet.alias = this.backend.getWalletAlias(new_wallet.address);\r\n if (open_data.recent_history && open_data.recent_history.history) {\r\n new_wallet.prepareHistory(open_data.recent_history.history);\r\n }\r\n this.backend.getContracts(open_data.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n new_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.variablesService.wallets.push(new_wallet);\r\n this.backend.runWallet(open_data.wallet_id, (run_status, run_data) => {\r\n if (run_status) {\r\n this.backend.storeSecureAppData((status, data) => {\r\n console.log('Store App Data', status, data);\r\n });\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + open_data.wallet_id]);\r\n });\r\n } else {\r\n console.log(run_data['error_code']);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n {{ 'BREADCRUMBS.CONTRACTS' | translate }}\\r\\n {{ 'BREADCRUMBS.NEW_PURCHASE' | translate }}\\r\\n {{ 'BREADCRUMBS.OLD_PURCHASE' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.DESC_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
= 100\\\">\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_SAME' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.YOUR_DEPOSIT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.YOUR_DEPOSIT_TOO_SMALL' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.SELLER_DEPOSIT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
= 100\\\">\\r\\n
\\r\\n {{ 'PURCHASE.FORM_ERRORS.COMMENT_MAXIMUM' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n 1 {{ 'PURCHASE.HOUR' | translate }}\\r\\n \\r\\n {{title}} {{ 'PURCHASE.HOURS' | translate }}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n {{ 'PURCHASE.NEED_MONEY' | translate }}\\r\\n \\r\\n\\r\\n \\r\\n {{ 'PURCHASE.WAITING_SELLER' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.IGNORED_SELLER' | translate }}\\r\\n {{ 'PURCHASE.PLEDGE_UNBLOCKED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.WAITING_SHIP' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.IGNORED_CANCEL_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.EXPIRED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.WAIT' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.WAITING_SELLER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.COMPLETED' | translate }}\\r\\n {{ 'PURCHASE.RECEIVED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.NOT_RECEIVED' | translate }}\\r\\n {{ 'PURCHASE.NULLIFIED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.PROPOSAL_CANCEL_SELLER' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.BEING_CANCELLED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.CANCELLED' | translate }}\\r\\n {{ 'PURCHASE.PLEDGES_RETURNED' | translate }}\\r\\n \\r\\n\\r\\n \\r\\n {{ 'PURCHASE.WAITING_BUYER' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.IGNORED_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.IGNORED_CANCEL_BUYER' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.EXPIRED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.WAIT' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.BUYER_WAIT' | translate }}\\r\\n {{ 'PURCHASE.PLEDGES_MADE' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.COMPLETED' | translate }}\\r\\n {{ 'PURCHASE.RECEIVED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.NOT_RECEIVED' | translate }}\\r\\n {{ 'PURCHASE.NULLIFIED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.PROPOSAL_CANCEL_BUYER' | translate }}\\r\\n \\r\\n\\r\\n {{ 'PURCHASE.BEING_CANCELLED' | translate }}\\r\\n\\r\\n {{ 'PURCHASE.CANCELLED' | translate }}\\r\\n {{ 'PURCHASE.PLEDGES_RETURNED' | translate }}\\r\\n \\r\\n\\r\\n \\r\\n 0/10\\r\\n {{variablesService.height_app - currentContract.height}}/10\\r\\n {{(historyBlock.is_income ? '+' : '') + (historyBlock.sortAmount | intToMoney)}} {{variablesService.defaultCurrency}}\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
{{'PURCHASE.NULLIFY_QUESTION' | translate}}
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
{{ 'PURCHASE.WAITING_TIME_QUESTION' | translate }}
\\r\\n \\r\\n \\r\\n 1 {{ 'PURCHASE.HOUR' | translate }}\\r\\n \\r\\n {{title}} {{ 'PURCHASE.HOURS' | translate }}\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'PURCHASE.PROGRESS_NEW' | translate }}\\r\\n {{ 'PURCHASE.PROGRESS_WAIT' | translate }}\\r\\n {{ 'PURCHASE.PROGRESS_COMPLETE' | translate }}\\r\\n
\\r\\n
\\r\\n {{currentContract.expiration_time | contractTimeLeft: 0}}\\r\\n {{currentContract.cancel_expiration_time | contractTimeLeft: 2}}\\r\\n {{currentContract.expiration_time | contractTimeLeft: 1}}\\r\\n {{currentContract.cancel_expiration_time | contractTimeLeft: 1}}\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.head {\\n flex: 0 0 auto;\\n box-sizing: content-box;\\n margin: -3rem -3rem 0; }\\n\\n.form-purchase {\\n flex: 1 1 auto;\\n margin: 1.5rem -3rem 0;\\n padding: 0 3rem;\\n overflow-y: overlay; }\\n\\n.form-purchase .input-blocks-row {\\n display: flex; }\\n\\n.form-purchase .input-blocks-row .input-block {\\n flex-basis: 50%; }\\n\\n.form-purchase .input-blocks-row .input-block:first-child {\\n margin-right: 1.5rem; }\\n\\n.form-purchase .input-blocks-row .input-block:last-child {\\n margin-left: 1.5rem; }\\n\\n.form-purchase .input-blocks-row .input-block .checkbox-block {\\n display: flex; }\\n\\n.form-purchase .purchase-select {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-size: 1.3rem;\\n line-height: 1.3rem;\\n margin: 1.5rem 0 0;\\n padding: 0;\\n width: 100%;\\n max-width: 15rem;\\n height: 1.3rem; }\\n\\n.form-purchase .purchase-select .arrow {\\n margin-left: 1rem;\\n width: 0.8rem;\\n height: 0.8rem; }\\n\\n.form-purchase .purchase-select .arrow.down {\\n -webkit-mask: url('arrow-down.svg') no-repeat center;\\n mask: url('arrow-down.svg') no-repeat center; }\\n\\n.form-purchase .purchase-select .arrow.up {\\n -webkit-mask: url('arrow-up.svg') no-repeat center;\\n mask: url('arrow-up.svg') no-repeat center; }\\n\\n.form-purchase .additional-details {\\n display: flex;\\n margin-top: 1.5rem;\\n padding: 0.5rem 0 2rem; }\\n\\n.form-purchase .additional-details > div {\\n flex-basis: 25%; }\\n\\n.form-purchase .additional-details > div:first-child {\\n padding-left: 1.5rem;\\n padding-right: 1rem; }\\n\\n.form-purchase .additional-details > div:last-child {\\n padding-left: 1rem;\\n padding-right: 1.5rem; }\\n\\n.form-purchase .purchase-states {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n font-size: 1.2rem;\\n line-height: 2.9rem; }\\n\\n.form-purchase .send-button {\\n margin: 2.4rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n.form-purchase .purchase-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.4rem -0.5rem;\\n width: calc(100% + 1rem); }\\n\\n.form-purchase .purchase-buttons button {\\n flex: 0 1 33%;\\n margin: 0 0.5rem; }\\n\\n.form-purchase .nullify-block-row {\\n display: flex;\\n justify-content: center; }\\n\\n.form-purchase .nullify-block-row .input-block {\\n align-items: center; }\\n\\n.form-purchase .nullify-block-row .input-block .nullify-block {\\n margin: 1rem 0; }\\n\\n.form-purchase .nullify-block-row .input-block .nullify-block .blue-button {\\n margin: 0 0.5rem; }\\n\\n.form-purchase .time-cancel-block-row {\\n display: flex;\\n justify-content: center; }\\n\\n.form-purchase .time-cancel-block-row .input-block {\\n align-items: center;\\n margin-bottom: 0; }\\n\\n.form-purchase .time-cancel-block-row .input-block select {\\n width: auto; }\\n\\n.form-purchase .time-cancel-block-row .input-block .time-cancel-block {\\n display: flex;\\n flex-direction: row;\\n align-items: flex-start;\\n margin: 1rem 0; }\\n\\n.form-purchase .time-cancel-block-row .input-block .time-cancel-block .blue-button {\\n margin: 0 0.5rem; }\\n\\n.progress-bar-container {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n padding: 0 3rem;\\n width: 100%;\\n height: 3rem; }\\n\\n.progress-bar-container .progress-bar {\\n position: absolute;\\n top: -0.7rem;\\n left: 0;\\n margin: 0 3rem;\\n width: calc(100% - 6rem);\\n height: 0.7rem; }\\n\\n.progress-bar-container .progress-bar .progress-bar-full {\\n height: 0.7rem; }\\n\\n.progress-bar-container .progress-labels {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n font-size: 1.2rem;\\n height: 100%; }\\n\\n.progress-bar-container .progress-labels span {\\n flex: 1 0 0;\\n text-align: center; }\\n\\n.progress-bar-container .progress-labels span:first-child {\\n text-align: left; }\\n\\n.progress-bar-container .progress-labels span:last-child {\\n text-align: right; }\\n\\n.progress-bar-container .progress-time {\\n position: absolute;\\n top: -3rem;\\n left: 50%;\\n -webkit-transform: translateX(-50%);\\n transform: translateX(-50%);\\n font-size: 1.2rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcHVyY2hhc2UvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHB1cmNoYXNlXFxwdXJjaGFzZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdiO0VBQ0UsY0FBYztFQUNkLHVCQUF1QjtFQUN2QixxQkFBcUIsRUFBQTs7QUFHdkI7RUFDRSxjQUFjO0VBQ2Qsc0JBQXNCO0VBQ3RCLGVBQWU7RUFDZixtQkFBbUIsRUFBQTs7QUFKckI7SUFPSSxhQUFhLEVBQUE7O0FBUGpCO01BVU0sZUFBZSxFQUFBOztBQVZyQjtRQWFRLG9CQUFvQixFQUFBOztBQWI1QjtRQWlCUSxtQkFBbUIsRUFBQTs7QUFqQjNCO1FBcUJRLGFBQWEsRUFBQTs7QUFyQnJCO0lBMkJJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLFlBQVk7SUFDWixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixjQUFjLEVBQUE7O0FBckNsQjtNQXdDTSxpQkFBaUI7TUFDakIsYUFBYTtNQUNiLGNBQWMsRUFBQTs7QUExQ3BCO1FBNkNRLG9EQUE0RDtnQkFBNUQsNENBQTRELEVBQUE7O0FBN0NwRTtRQWlEUSxrREFBMEQ7Z0JBQTFELDBDQUEwRCxFQUFBOztBQWpEbEU7SUF1REksYUFBYTtJQUNiLGtCQUFrQjtJQUNsQixzQkFBc0IsRUFBQTs7QUF6RDFCO01BNERNLGVBQWUsRUFBQTs7QUE1RHJCO1FBK0RRLG9CQUFvQjtRQUNwQixtQkFBbUIsRUFBQTs7QUFoRTNCO1FBb0VRLGtCQUFrQjtRQUNsQixxQkFBcUIsRUFBQTs7QUFyRTdCO0lBMkVJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixpQkFBaUI7SUFDakIsbUJBQW1CLEVBQUE7O0FBaEZ2QjtJQW9GSSxnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLGdCQUFnQixFQUFBOztBQXRGcEI7SUEwRkksYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixzQkFBc0I7SUFDdEIsd0JBQXdCLEVBQUE7O0FBN0Y1QjtNQWdHTSxhQUFhO01BQ2IsZ0JBQWdCLEVBQUE7O0FBakd0QjtJQXNHSSxhQUFhO0lBQ2IsdUJBQXVCLEVBQUE7O0FBdkczQjtNQTBHTSxtQkFBbUIsRUFBQTs7QUExR3pCO1FBNkdRLGNBQWMsRUFBQTs7QUE3R3RCO1VBZ0hVLGdCQUFnQixFQUFBOztBQWhIMUI7SUF1SEksYUFBYTtJQUNiLHVCQUF1QixFQUFBOztBQXhIM0I7TUEySE0sbUJBQW1CO01BQ25CLGdCQUFnQixFQUFBOztBQTVIdEI7UUErSFEsV0FBVyxFQUFBOztBQS9IbkI7UUFtSVEsYUFBYTtRQUNiLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsY0FBYyxFQUFBOztBQXRJdEI7VUF5SVUsZ0JBQWdCLEVBQUE7O0FBUTFCO0VBQ0Usa0JBQWtCO0VBQ2xCLFNBQVM7RUFDVCxPQUFPO0VBQ1AsZUFBZTtFQUNmLFdBQVc7RUFDWCxZQUFZLEVBQUE7O0FBTmQ7SUFTSSxrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLE9BQU87SUFDUCxjQUFjO0lBQ2Qsd0JBQXdCO0lBQ3hCLGNBQWMsRUFBQTs7QUFkbEI7TUFpQk0sY0FBYyxFQUFBOztBQWpCcEI7SUFzQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsaUJBQWlCO0lBQ2pCLFlBQVksRUFBQTs7QUExQmhCO01BNkJNLFdBQVc7TUFDWCxrQkFBa0IsRUFBQTs7QUE5QnhCO1FBaUNRLGdCQUFnQixFQUFBOztBQWpDeEI7UUFxQ1EsaUJBQWlCLEVBQUE7O0FBckN6QjtJQTJDSSxrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLFNBQVM7SUFDVCxtQ0FBMkI7WUFBM0IsMkJBQTJCO0lBQzNCLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvcHVyY2hhc2UvcHVyY2hhc2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZCB7XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgbWFyZ2luOiAtM3JlbSAtM3JlbSAwO1xyXG59XHJcblxyXG4uZm9ybS1wdXJjaGFzZSB7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWFyZ2luOiAxLjVyZW0gLTNyZW0gMDtcclxuICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuXHJcbiAgLmlucHV0LWJsb2Nrcy1yb3cge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICBmbGV4LWJhc2lzOiA1MCU7XHJcblxyXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMS41cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuY2hlY2tib3gtYmxvY2sge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wdXJjaGFzZS1zZWxlY3Qge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcclxuICAgIG1hcmdpbjogMS41cmVtIDAgMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgICBoZWlnaHQ6IDEuM3JlbTtcclxuXHJcbiAgICAuYXJyb3cge1xyXG4gICAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICAgICAgd2lkdGg6IDAuOHJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjhyZW07XHJcblxyXG4gICAgICAmLmRvd24ge1xyXG4gICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1kb3duLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi51cCB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LXVwLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbWFyZ2luLXRvcDogMS41cmVtO1xyXG4gICAgcGFkZGluZzogMC41cmVtIDAgMnJlbTtcclxuXHJcbiAgICA+IGRpdiB7XHJcbiAgICAgIGZsZXgtYmFzaXM6IDI1JTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuOXJlbTtcclxuICB9XHJcblxyXG4gIC5zZW5kLWJ1dHRvbiB7XHJcbiAgICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gIH1cclxuXHJcbiAgLnB1cmNoYXNlLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbjogMi40cmVtIC0wLjVyZW07XHJcbiAgICB3aWR0aDogY2FsYygxMDAlICsgMXJlbSk7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgZmxleDogMCAxIDMzJTtcclxuICAgICAgbWFyZ2luOiAwIDAuNXJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5udWxsaWZ5LWJsb2NrLXJvdyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblxyXG4gICAgLmlucHV0LWJsb2NrIHtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAgIC5udWxsaWZ5LWJsb2NrIHtcclxuICAgICAgICBtYXJnaW46IDFyZW0gMDtcclxuXHJcbiAgICAgICAgLmJsdWUtYnV0dG9uIHtcclxuICAgICAgICAgIG1hcmdpbjogMCAwLjVyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGltZS1jYW5jZWwtYmxvY2stcm93IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICAuaW5wdXQtYmxvY2sge1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG5cclxuICAgICAgc2VsZWN0IHtcclxuICAgICAgICB3aWR0aDogYXV0bztcclxuICAgICAgfVxyXG5cclxuICAgICAgLnRpbWUtY2FuY2VsLWJsb2NrIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgICAgICAgbWFyZ2luOiAxcmVtIDA7XHJcblxyXG4gICAgICAgIC5ibHVlLWJ1dHRvbiB7XHJcbiAgICAgICAgICBtYXJnaW46IDAgMC41cmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbi5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgcGFkZGluZzogMCAzcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogM3JlbTtcclxuXHJcbiAgLnByb2dyZXNzLWJhciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IC0wLjdyZW07XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgbWFyZ2luOiAwIDNyZW07XHJcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gNnJlbSk7XHJcbiAgICBoZWlnaHQ6IDAuN3JlbTtcclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xyXG4gICAgICBoZWlnaHQ6IDAuN3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1sYWJlbHMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICBzcGFuIHtcclxuICAgICAgZmxleDogMSAwIDA7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy10aW1lIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTNyZW07XHJcbiAgICBsZWZ0OiA1MCU7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICBmb250LXNpemU6IDEuMnJlbTtcclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy, NgZone} from '@angular/core';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Location} from '@angular/common';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Component({\r\n selector: 'app-purchase',\r\n templateUrl: './purchase.component.html',\r\n styleUrls: ['./purchase.component.scss']\r\n})\r\nexport class PurchaseComponent implements OnInit, OnDestroy {\r\n currentWalletId;\r\n newPurchase = false;\r\n parentRouting;\r\n subRouting;\r\n historyBlock;\r\n\r\n purchaseForm = new FormGroup({\r\n description: new FormControl('', Validators.required),\r\n seller: new FormControl('', [Validators.required, (g: FormControl) => {\r\n if (g.value === this.variablesService.currentWallet.address) {\r\n return {'address_same': true};\r\n }\r\n return null;\r\n }, (g: FormControl) => {\r\n if (g.value) {\r\n this.backend.validateAddress(g.value, (valid_status) => {\r\n this.ngZone.run(() => {\r\n if (valid_status === false) {\r\n g.setErrors(Object.assign({'address_not_valid': true}, g.errors) );\r\n } else {\r\n if (g.hasError('address_not_valid')) {\r\n delete g.errors['address_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n return (g.hasError('address_not_valid')) ? {'address_not_valid': true} : null;\r\n }\r\n return null;\r\n }]),\r\n amount: new FormControl(null, Validators.required),\r\n yourDeposit: new FormControl(null, Validators.required),\r\n sellerDeposit: new FormControl(null, Validators.required),\r\n sameAmount: new FormControl({value: false, disabled: false}),\r\n comment: new FormControl(''),\r\n fee: new FormControl(this.variablesService.default_fee),\r\n time: new FormControl({value: 12, disabled: false}),\r\n timeCancel: new FormControl({value: 12, disabled: false}),\r\n payment: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return (new BigNumber(g.get('yourDeposit').value)).isLessThan(g.get('amount').value) ? {'your_deposit_too_small': true} : null;\r\n });\r\n\r\n additionalOptions = false;\r\n currentContract = null;\r\n heightAppEvent;\r\n showTimeSelect = false;\r\n showNullify = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private location: Location,\r\n private intToMoneyPipe: IntToMoneyPipe,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n checkAndChangeHistory() {\r\n if (this.currentContract.state === 201) {\r\n this.historyBlock = this.variablesService.currentWallet.history.find(item => item.tx_type === 8 && item.contract[0].contract_id === this.currentContract.contract_id && item.contract[0].is_a === this.currentContract.is_a);\r\n } else if (this.currentContract.state === 601) {\r\n this.historyBlock = this.variablesService.currentWallet.history.find(item => item.tx_type === 12 && item.contract[0].contract_id === this.currentContract.contract_id && item.contract[0].is_a === this.currentContract.is_a);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n this.currentWalletId = params['id'];\r\n });\r\n this.subRouting = this.route.params.subscribe(params => {\r\n if (params.hasOwnProperty('id')) {\r\n this.currentContract = this.variablesService.currentWallet.getContract(params['id']);\r\n this.purchaseForm.controls['seller'].setValidators([]);\r\n this.purchaseForm.updateValueAndValidity();\r\n this.purchaseForm.setValue({\r\n description: this.currentContract.private_detailes.t,\r\n seller: this.currentContract.private_detailes.b_addr,\r\n amount: this.intToMoneyPipe.transform(this.currentContract.private_detailes.to_pay),\r\n yourDeposit: this.intToMoneyPipe.transform(this.currentContract.private_detailes.a_pledge),\r\n sellerDeposit: this.intToMoneyPipe.transform(this.currentContract.private_detailes.b_pledge),\r\n sameAmount: this.currentContract.private_detailes.to_pay.isEqualTo(this.currentContract.private_detailes.b_pledge),\r\n comment: this.currentContract.private_detailes.c,\r\n fee: this.variablesService.default_fee,\r\n time: 12,\r\n timeCancel: 12,\r\n payment: this.currentContract.payment_id\r\n });\r\n this.purchaseForm.get('sameAmount').disable();\r\n this.newPurchase = false;\r\n\r\n if (this.currentContract.is_new) {\r\n if (this.currentContract.is_a && this.currentContract.state === 2) {\r\n this.currentContract.state = 120;\r\n }\r\n if (this.currentContract.state === 130 && this.currentContract.cancel_expiration_time !== 0 && this.currentContract.cancel_expiration_time < this.variablesService.exp_med_ts) {\r\n this.currentContract.state = 2;\r\n }\r\n\r\n this.variablesService.settings.viewedContracts = (this.variablesService.settings.viewedContracts) ? this.variablesService.settings.viewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.viewedContracts.length; j++) {\r\n if (this.variablesService.settings.viewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.viewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.viewedContracts[j].state = this.currentContract.state;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.viewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: this.currentContract.state\r\n });\r\n }\r\n this.currentContract.is_new = false;\r\n\r\n setTimeout(() => {\r\n this.variablesService.currentWallet.recountNewContracts();\r\n }, 0);\r\n }\r\n this.checkAndChangeHistory();\r\n\r\n } else {\r\n this.newPurchase = true;\r\n }\r\n });\r\n this.heightAppEvent = this.variablesService.getHeightAppEvent.subscribe((newHeight: number) => {\r\n if (this.currentContract && this.currentContract.state === 201 && this.currentContract.height !== 0 && (newHeight - this.currentContract.height) >= 10) {\r\n this.currentContract.state = 2;\r\n this.currentContract.is_new = true;\r\n this.variablesService.currentWallet.recountNewContracts();\r\n } else if (this.currentContract && this.currentContract.state === 601 && this.currentContract.height !== 0 && (newHeight - this.currentContract.height) >= 10) {\r\n this.currentContract.state = 6;\r\n this.currentContract.is_new = true;\r\n this.variablesService.currentWallet.recountNewContracts();\r\n }\r\n // if (!this.newPurchase && this.currentContract.is_a && (this.currentContract.state === 201 || this.currentContract.state === 2 || this.currentContract.state === 120 || this.currentContract.state === 130)) {\r\n // if (this.currentContract.cancel_expiration_time === 0 && (this.currentContract.height === 0 || (this.variablesService.height_app - this.currentContract.height) < 10)) {\r\n // this.purchaseForm.get('timeCancel').disable();\r\n // } else {\r\n // this.purchaseForm.get('timeCancel').enable();\r\n // }\r\n // }\r\n });\r\n }\r\n\r\n toggleOptions() {\r\n this.additionalOptions = !this.additionalOptions;\r\n }\r\n\r\n getProgressBarWidth() {\r\n let progress = '9rem';\r\n if (!this.newPurchase) {\r\n if (this.currentContract) {\r\n if ([110, 3, 4, 6, 140].indexOf(this.currentContract.state) !== -1) {\r\n progress = '100%';\r\n } else {\r\n progress = '50%';\r\n }\r\n }\r\n }\r\n return progress;\r\n }\r\n\r\n sameAmountChange() {\r\n if (this.purchaseForm.get('sameAmount').value) {\r\n this.purchaseForm.get('sellerDeposit').clearValidators();\r\n this.purchaseForm.get('sellerDeposit').updateValueAndValidity();\r\n } else {\r\n this.purchaseForm.get('sellerDeposit').setValidators([Validators.required]);\r\n this.purchaseForm.get('sellerDeposit').updateValueAndValidity();\r\n }\r\n }\r\n\r\n createPurchase() {\r\n if (this.purchaseForm.valid) {\r\n if (this.purchaseForm.get('sameAmount').value) {\r\n this.purchaseForm.get('sellerDeposit').setValue(this.purchaseForm.get('amount').value);\r\n }\r\n this.backend.createProposal(\r\n this.variablesService.currentWallet.wallet_id,\r\n this.purchaseForm.get('description').value,\r\n this.purchaseForm.get('comment').value,\r\n this.variablesService.currentWallet.address,\r\n this.purchaseForm.get('seller').value,\r\n this.purchaseForm.get('amount').value,\r\n this.purchaseForm.get('yourDeposit').value,\r\n this.purchaseForm.get('sellerDeposit').value,\r\n this.purchaseForm.get('time').value,\r\n this.purchaseForm.get('payment').value,\r\n (create_status) => {\r\n if (create_status) {\r\n this.back();\r\n }\r\n });\r\n }\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n acceptState() {\r\n this.backend.acceptProposal(this.currentWalletId, this.currentContract.contract_id, (accept_status) => {\r\n if (accept_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.ACCEPT_STATE_WAIT_BIG');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n ignoredContract() {\r\n this.variablesService.settings.notViewedContracts = (this.variablesService.settings.notViewedContracts) ? this.variablesService.settings.notViewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.notViewedContracts[j].state = 110;\r\n this.variablesService.settings.notViewedContracts[j].time = this.currentContract.expiration_time;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.notViewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: 110,\r\n time: this.currentContract.expiration_time\r\n });\r\n }\r\n this.currentContract.is_new = true;\r\n this.currentContract.state = 110;\r\n this.currentContract.time = this.currentContract.expiration_time;\r\n\r\n this.variablesService.currentWallet.recountNewContracts();\r\n this.modalService.prepareModal('info', 'PURCHASE.IGNORED_ACCEPT');\r\n this.back();\r\n }\r\n\r\n\r\n productNotGot() {\r\n this.backend.releaseProposal(this.currentWalletId, this.currentContract.contract_id, 'REL_B', (release_status) => {\r\n if (release_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.BURN_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsFinish() {\r\n this.backend.releaseProposal(this.currentWalletId, this.currentContract.contract_id, 'REL_N', (release_status) => {\r\n if (release_status) {\r\n this.modalService.prepareModal('success', 'PURCHASE.SUCCESS_FINISH_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsCancel() {\r\n this.backend.requestCancelContract(this.currentWalletId, this.currentContract.contract_id, this.purchaseForm.get('timeCancel').value, (cancel_status) => {\r\n if (cancel_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.SEND_CANCEL_PROPOSAL');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n dealsDetailsDontCanceling() {\r\n this.variablesService.settings.notViewedContracts = this.variablesService.settings.notViewedContracts ? this.variablesService.settings.notViewedContracts : [];\r\n let findViewedCont = false;\r\n for (let j = 0; j < this.variablesService.settings.notViewedContracts.length; j++) {\r\n if (this.variablesService.settings.notViewedContracts[j].contract_id === this.currentContract.contract_id && this.variablesService.settings.notViewedContracts[j].is_a === this.currentContract.is_a) {\r\n this.variablesService.settings.notViewedContracts[j].state = 130;\r\n this.variablesService.settings.notViewedContracts[j].time = this.currentContract.cancel_expiration_time;\r\n findViewedCont = true;\r\n break;\r\n }\r\n }\r\n if (!findViewedCont) {\r\n this.variablesService.settings.notViewedContracts.push({\r\n contract_id: this.currentContract.contract_id,\r\n is_a: this.currentContract.is_a,\r\n state: 130,\r\n time: this.currentContract.cancel_expiration_time\r\n });\r\n }\r\n this.currentContract.is_new = true;\r\n this.currentContract.state = 130;\r\n this.currentContract.time = this.currentContract.cancel_expiration_time;\r\n\r\n this.variablesService.currentWallet.recountNewContracts();\r\n this.modalService.prepareModal('info', 'PURCHASE.IGNORED_CANCEL');\r\n this.back();\r\n }\r\n\r\n dealsDetailsSellerCancel() {\r\n this.backend.acceptCancelContract(this.currentWalletId, this.currentContract.contract_id, (accept_status) => {\r\n if (accept_status) {\r\n this.modalService.prepareModal('info', 'PURCHASE.DEALS_CANCELED_WAIT');\r\n this.back();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.subRouting.unsubscribe();\r\n this.heightAppEvent.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n \\\"qr-code\\\"\\r\\n
\\r\\n
{{variablesService.currentWallet.address}}
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.wrap-qr {\\n display: flex;\\n flex-direction: column;\\n align-items: center; }\\n\\n.wrap-qr img {\\n margin: 4rem 0; }\\n\\n.wrap-qr .wrap-address {\\n display: flex;\\n align-items: center;\\n font-size: 1.4rem;\\n line-height: 2.7rem; }\\n\\n.wrap-qr .wrap-address .btn-copy-address {\\n margin-left: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copy {\\n -webkit-mask: url('copy.svg') no-repeat center;\\n mask: url('copy.svg') no-repeat center; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copy:hover {\\n opacity: 0.75; }\\n\\n.wrap-qr .wrap-address .btn-copy-address.copied {\\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\\n mask: url('complete-testwallet.svg') no-repeat center; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVjZWl2ZS9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxccmVjZWl2ZVxccmVjZWl2ZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQVcsRUFBQTs7QUFHYjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsbUJBQW1CLEVBQUE7O0FBSHJCO0lBTUksY0FBYyxFQUFBOztBQU5sQjtJQVVJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLG1CQUFtQixFQUFBOztBQWJ2QjtNQWdCTSxtQkFBbUI7TUFDbkIsYUFBYTtNQUNiLGNBQWMsRUFBQTs7QUFsQnBCO1FBcUJRLDhDQUF1RDtnQkFBdkQsc0NBQXVELEVBQUE7O0FBckIvRDtVQXdCVSxhQUFhLEVBQUE7O0FBeEJ2QjtRQTZCUSw2REFBc0U7Z0JBQXRFLHFEQUFzRSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvcmVjZWl2ZS9yZWNlaXZlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ud3JhcC1xciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gIGltZyB7XHJcbiAgICBtYXJnaW46IDRyZW0gMDtcclxuICB9XHJcblxyXG4gIC53cmFwLWFkZHJlc3Mge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcblxyXG4gICAgLmJ0bi1jb3B5LWFkZHJlc3Mge1xyXG4gICAgICBtYXJnaW4tbGVmdDogMS4ycmVtO1xyXG4gICAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuN3JlbTtcclxuXHJcbiAgICAgICYuY29weSB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9jb3B5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuXHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLjc1O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJi5jb3BpZWQge1xyXG4gICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29tcGxldGUtdGVzdHdhbGxldC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy} from '@angular/core';\r\nimport QRCode from 'qrcode';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-receive',\r\n templateUrl: './receive.component.html',\r\n styleUrls: ['./receive.component.scss']\r\n})\r\nexport class ReceiveComponent implements OnInit, OnDestroy {\r\n qrImageSrc: string;\r\n parentRouting;\r\n copyAnimation = false;\r\n copyAnimationTimeout;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n private variablesService: VariablesService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n QRCode.toDataURL(this.variablesService.currentWallet.address, {\r\n width: 106,\r\n height: 106\r\n }).then(url => {\r\n this.qrImageSrc = url;\r\n }).catch(err => {\r\n console.error(err);\r\n });\r\n });\r\n }\r\n\r\n public copyAddress() {\r\n this.backend.setClipboard(this.variablesService.currentWallet.address);\r\n this.copyAnimation = true;\r\n this.copyAnimationTimeout = window.setTimeout(() => {\r\n this.copyAnimation = false;\r\n }, 2000);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n clearTimeout(this.copyAnimationTimeout);\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.RESTORE_WALLET' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'RESTORE_WALLET.FORM_ERRORS.KEY_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative; }\\n\\n.form-restore {\\n margin: 2.4rem 0;\\n width: 100%; }\\n\\n.form-restore .input-block.half-block {\\n width: 50%; }\\n\\n.form-restore .wrap-buttons {\\n display: flex;\\n margin: 2.5rem -0.7rem;\\n width: 50%; }\\n\\n.form-restore .wrap-buttons button {\\n margin: 0 0.7rem; }\\n\\n.form-restore .wrap-buttons button.transparent-button {\\n flex-basis: 50%; }\\n\\n.form-restore .wrap-buttons button.select-button {\\n flex-basis: 60%; }\\n\\n.form-restore .wrap-buttons button.create-button {\\n flex: 1 1 50%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcmVzdG9yZS13YWxsZXQvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHJlc3RvcmUtd2FsbGV0XFxyZXN0b3JlLXdhbGxldC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLGdCQUFnQjtFQUNoQixXQUFXLEVBQUE7O0FBRmI7SUFPTSxVQUFVLEVBQUE7O0FBUGhCO0lBWUksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixVQUFVLEVBQUE7O0FBZGQ7TUFpQk0sZ0JBQWdCLEVBQUE7O0FBakJ0QjtRQW9CUSxlQUFlLEVBQUE7O0FBcEJ2QjtRQXdCUSxlQUFlLEVBQUE7O0FBeEJ2QjtRQTRCUSxhQUFhLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9yZXN0b3JlLXdhbGxldC9yZXN0b3JlLXdhbGxldC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIjpob3N0IHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5mb3JtLXJlc3RvcmUge1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDEwMCU7XHJcblxyXG4gIC5pbnB1dC1ibG9jayB7XHJcblxyXG4gICAgJi5oYWxmLWJsb2NrIHtcclxuICAgICAgd2lkdGg6IDUwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC53cmFwLWJ1dHRvbnMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIG1hcmdpbjogMi41cmVtIC0wLjdyZW07XHJcbiAgICB3aWR0aDogNTAlO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMCAwLjdyZW07XHJcblxyXG4gICAgICAmLnRyYW5zcGFyZW50LWJ1dHRvbiB7XHJcbiAgICAgICAgZmxleC1iYXNpczogNTAlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnNlbGVjdC1idXR0b24ge1xyXG4gICAgICAgIGZsZXgtYmFzaXM6IDYwJTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5jcmVhdGUtYnV0dG9uIHtcclxuICAgICAgICBmbGV4OiAxIDEgNTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\nimport {TranslateService} from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-restore-wallet',\r\n templateUrl: './restore-wallet.component.html',\r\n styleUrls: ['./restore-wallet.component.scss']\r\n})\r\nexport class RestoreWalletComponent implements OnInit {\r\n\r\n restoreForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n return {'duplicate': true};\r\n }\r\n }\r\n return null;\r\n }]),\r\n key: new FormControl('', Validators.required),\r\n password: new FormControl(''),\r\n confirm: new FormControl('')\r\n }, function (g: FormGroup) {\r\n return g.get('password').value === g.get('confirm').value ? null : {'confirm_mismatch': true};\r\n });\r\n\r\n wallet = {\r\n id: ''\r\n };\r\n\r\n walletSaved = false;\r\n walletSavedName = '';\r\n progressWidth = '9rem';\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n createWallet() {\r\n this.ngZone.run(() => {\r\n this.progressWidth = '100%';\r\n this.router.navigate(['/seed-phrase'], {queryParams: {wallet_id: this.wallet.id}});\r\n });\r\n }\r\n\r\n saveWallet() {\r\n if (this.restoreForm.valid && this.restoreForm.get('name').value.length <= this.variablesService.maxWalletNameLength) {\r\n this.backend.isValidRestoreWalletText(this.restoreForm.get('key').value, (valid_status, valid_data) => {\r\n\r\n if (valid_data === 'FALSE') {\r\n this.ngZone.run(() => {\r\n this.restoreForm.get('key').setErrors({key_not_valid: true});\r\n });\r\n } else {\r\n this.backend.saveFileDialog(this.translate.instant('RESTORE_WALLET.CHOOSE_PATH'), '*', this.variablesService.settings.default_path, (save_status, save_data) => {\r\n if (save_status) {\r\n this.variablesService.settings.default_path = save_data.path.substr(0, save_data.path.lastIndexOf('/'));\r\n this.walletSavedName = save_data.path.substr(save_data.path.lastIndexOf('/') + 1, save_data.path.length - 1);\r\n this.backend.restoreWallet(save_data.path, this.restoreForm.get('password').value, this.restoreForm.get('key').value, (restore_status, restore_data) => {\r\n if (restore_status) {\r\n this.wallet.id = restore_data.wallet_id;\r\n this.variablesService.opening_wallet = new Wallet(\r\n restore_data.wallet_id,\r\n this.restoreForm.get('name').value,\r\n this.restoreForm.get('password').value,\r\n restore_data['wi'].path,\r\n restore_data['wi'].address,\r\n restore_data['wi'].balance,\r\n restore_data['wi'].unlocked_balance,\r\n restore_data['wi'].mined_total,\r\n restore_data['wi'].tracking_hey\r\n );\r\n this.variablesService.opening_wallet.alias = this.backend.getWalletAlias(this.variablesService.opening_wallet.address);\r\n if (restore_data.recent_history && restore_data.recent_history.history) {\r\n this.variablesService.opening_wallet.prepareHistory(restore_data.recent_history.history);\r\n }\r\n this.backend.getContracts(this.variablesService.opening_wallet.wallet_id, (contracts_status, contracts_data) => {\r\n if (contracts_status && contracts_data.hasOwnProperty('contracts')) {\r\n this.ngZone.run(() => {\r\n this.variablesService.opening_wallet.prepareContractsAfterOpen(contracts_data.contracts, this.variablesService.exp_med_ts, this.variablesService.height_app, this.variablesService.settings.viewedContracts, this.variablesService.settings.notViewedContracts);\r\n });\r\n }\r\n });\r\n this.ngZone.run(() => {\r\n this.walletSaved = true;\r\n this.progressWidth = '50%';\r\n });\r\n } else {\r\n this.modalService.prepareModal('error', 'RESTORE_WALLET.NOT_CORRECT_FILE_OR_PASSWORD');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'BREADCRUMBS.ADD_WALLET' | translate }}\\r\\n {{ 'BREADCRUMBS.SAVE_PHRASE' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n

{{ 'SEED_PHRASE.TITLE' | translate }}

\\r\\n\\r\\n
\\r\\n \\r\\n
{{(index + 1) + '. ' + word}}
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative; }\\n\\n.seed-phrase-title {\\n line-height: 2.2rem;\\n padding: 2.2rem 0; }\\n\\n.seed-phrase-content {\\n display: flex;\\n flex-direction: column;\\n flex-wrap: wrap;\\n padding: 1.4rem;\\n width: 100%;\\n height: 12rem; }\\n\\n.seed-phrase-content .word {\\n line-height: 2.2rem;\\n max-width: 13rem; }\\n\\n.seed-phrase-button {\\n margin: 2.8rem 0;\\n width: 25%;\\n min-width: 1.5rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VlZC1waHJhc2UvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHNlZWQtcGhyYXNlXFxzZWVkLXBocmFzZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQixFQUFBOztBQUdwQjtFQUNFLG1CQUFtQjtFQUNuQixpQkFBaUIsRUFBQTs7QUFHbkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLGVBQWU7RUFDZixlQUFlO0VBQ2YsV0FBVztFQUNYLGFBQWEsRUFBQTs7QUFOZjtJQVNJLG1CQUFtQjtJQUNuQixnQkFBZ0IsRUFBQTs7QUFJcEI7RUFDRSxnQkFBZ0I7RUFDaEIsVUFBVTtFQUNWLGlCQUFpQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2VlZC1waHJhc2Uvc2VlZC1waHJhc2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4uc2VlZC1waHJhc2UtdGl0bGUge1xyXG4gIGxpbmUtaGVpZ2h0OiAyLjJyZW07XHJcbiAgcGFkZGluZzogMi4ycmVtIDA7XHJcbn1cclxuXHJcbi5zZWVkLXBocmFzZS1jb250ZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZmxleC13cmFwOiB3cmFwO1xyXG4gIHBhZGRpbmc6IDEuNHJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEycmVtO1xyXG5cclxuICAud29yZCB7XHJcbiAgICBsaW5lLWhlaWdodDogMi4ycmVtO1xyXG4gICAgbWF4LXdpZHRoOiAxM3JlbTtcclxuICB9XHJcbn1cclxuXHJcbi5zZWVkLXBocmFzZS1idXR0b24ge1xyXG4gIG1hcmdpbjogMi44cmVtIDA7XHJcbiAgd2lkdGg6IDI1JTtcclxuICBtaW4td2lkdGg6IDEuNXJlbTtcclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {Location} from \"@angular/common\";\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {ActivatedRoute, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\n\r\n@Component({\r\n selector: 'app-seed-phrase',\r\n templateUrl: './seed-phrase.component.html',\r\n styleUrls: ['./seed-phrase.component.scss']\r\n})\r\nexport class SeedPhraseComponent implements OnInit, OnDestroy {\r\n\r\n queryRouting;\r\n seedPhrase = '';\r\n wallet_id: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private location: Location,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.queryRouting = this.route.queryParams.subscribe(params => {\r\n if (params.wallet_id) {\r\n this.wallet_id = params.wallet_id;\r\n this.backend.getSmartWalletInfo(params.wallet_id, (status, data) => {\r\n if (data.hasOwnProperty('restore_key')) {\r\n this.ngZone.run(() => {\r\n this.seedPhrase = data['restore_key'].trim();\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n runWallet() {\r\n let exists = false;\r\n this.variablesService.wallets.forEach((wallet) => {\r\n if (wallet.address === this.variablesService.opening_wallet.address) {\r\n exists = true;\r\n }\r\n });\r\n if (!exists) {\r\n this.backend.runWallet(this.wallet_id, (run_status, run_data) => {\r\n if (run_status) {\r\n this.variablesService.wallets.push(this.variablesService.opening_wallet);\r\n this.backend.storeSecureAppData((status, data) => {\r\n console.log('Store App Data', status, data);\r\n });\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet_id]);\r\n });\r\n } else {\r\n console.log(run_data['error_code']);\r\n }\r\n });\r\n } else {\r\n this.variablesService.opening_wallet = null;\r\n this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');\r\n this.backend.closeWallet(this.wallet_id, (close_status, close_data) => {\r\n console.log(close_status, close_data);\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/']);\r\n });\r\n });\r\n }\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.queryRouting.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.ADDRESS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.ADDRESS_NOT_VALID' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_ZERO' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.AMOUNT_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.FEE_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'SEND.FORM_ERRORS.FEE_MINIMUM' | translate : {fee: variablesService.default_fee} }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n\"","module.exports = \":host {\\n width: 100%; }\\n\\n.form-send .input-blocks-row {\\n display: flex; }\\n\\n.form-send .input-blocks-row > div {\\n flex-basis: 50%; }\\n\\n.form-send .input-blocks-row > div:first-child {\\n margin-right: 1.5rem; }\\n\\n.form-send .input-blocks-row > div:last-child {\\n margin-left: 1.5rem; }\\n\\n.form-send .send-select {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-size: 1.3rem;\\n line-height: 1.3rem;\\n margin: 1.5rem 0 0;\\n padding: 0;\\n width: 100%;\\n max-width: 15rem;\\n height: 1.3rem; }\\n\\n.form-send .send-select .arrow {\\n margin-left: 1rem;\\n width: 0.8rem;\\n height: 0.8rem; }\\n\\n.form-send .send-select .arrow.down {\\n -webkit-mask: url('arrow-down.svg') no-repeat center;\\n mask: url('arrow-down.svg') no-repeat center; }\\n\\n.form-send .send-select .arrow.up {\\n -webkit-mask: url('arrow-up.svg') no-repeat center;\\n mask: url('arrow-up.svg') no-repeat center; }\\n\\n.form-send .additional-details {\\n display: flex;\\n margin-top: 1.5rem;\\n padding: 0.5rem 0 2rem; }\\n\\n.form-send .additional-details > div {\\n flex-basis: 25%; }\\n\\n.form-send .additional-details > div:first-child {\\n padding-left: 1.5rem;\\n padding-right: 1rem; }\\n\\n.form-send .additional-details > div:last-child {\\n padding-left: 1rem;\\n padding-right: 1.5rem; }\\n\\n.form-send button {\\n margin: 2.4rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VuZC9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2VuZFxcc2VuZC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQVcsRUFBQTs7QUFHYjtFQUdJLGFBQWEsRUFBQTs7QUFIakI7SUFNTSxlQUFlLEVBQUE7O0FBTnJCO01BU1Esb0JBQW9CLEVBQUE7O0FBVDVCO01BYVEsbUJBQW1CLEVBQUE7O0FBYjNCO0VBbUJJLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsdUJBQXVCO0VBQ3ZCLFlBQVk7RUFDWixpQkFBaUI7RUFDakIsbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNsQixVQUFVO0VBQ1YsV0FBVztFQUNYLGdCQUFnQjtFQUNoQixjQUFjLEVBQUE7O0FBN0JsQjtJQWdDTSxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLGNBQWMsRUFBQTs7QUFsQ3BCO01BcUNRLG9EQUE0RDtjQUE1RCw0Q0FBNEQsRUFBQTs7QUFyQ3BFO01BeUNRLGtEQUEwRDtjQUExRCwwQ0FBMEQsRUFBQTs7QUF6Q2xFO0VBK0NJLGFBQWE7RUFDYixrQkFBa0I7RUFDbEIsc0JBQXNCLEVBQUE7O0FBakQxQjtJQW9ETSxlQUFlLEVBQUE7O0FBcERyQjtNQXVEUSxvQkFBb0I7TUFDcEIsbUJBQW1CLEVBQUE7O0FBeEQzQjtNQTREUSxrQkFBa0I7TUFDbEIscUJBQXFCLEVBQUE7O0FBN0Q3QjtFQW1FSSxnQkFBZ0I7RUFDaEIsV0FBVztFQUNYLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvc2VuZC9zZW5kLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uZm9ybS1zZW5kIHtcclxuXHJcbiAgLmlucHV0LWJsb2Nrcy1yb3cge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICA+IGRpdiB7XHJcbiAgICAgIGZsZXgtYmFzaXM6IDUwJTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMS41cmVtO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZW5kLXNlbGVjdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xyXG4gICAgbWFyZ2luOiAxLjVyZW0gMCAwO1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiAxNXJlbTtcclxuICAgIGhlaWdodDogMS4zcmVtO1xyXG5cclxuICAgIC5hcnJvdyB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG4gICAgICB3aWR0aDogMC44cmVtO1xyXG4gICAgICBoZWlnaHQ6IDAuOHJlbTtcclxuXHJcbiAgICAgICYuZG93biB7XHJcbiAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LWRvd24uc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnVwIHtcclxuICAgICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYXJyb3ctdXAuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWRkaXRpb25hbC1kZXRhaWxzIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW07XHJcbiAgICBwYWRkaW5nOiAwLjVyZW0gMCAycmVtO1xyXG5cclxuICAgID4gZGl2IHtcclxuICAgICAgZmxleC1iYXNpczogMjUlO1xyXG5cclxuICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XHJcbiAgICAgICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBidXR0b24ge1xyXG4gICAgbWFyZ2luOiAyLjRyZW0gMDtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgbWF4LXdpZHRoOiAxNXJlbTtcclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy, NgZone} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Component({\r\n selector: 'app-send',\r\n templateUrl: './send.component.html',\r\n styleUrls: ['./send.component.scss']\r\n})\r\nexport class SendComponent implements OnInit, OnDestroy {\r\n\r\n currentWalletId = null;\r\n parentRouting;\r\n sendForm = new FormGroup({\r\n address: new FormControl('', [Validators.required, (g: FormControl) => {\r\n if (g.value) {\r\n this.backend.validateAddress(g.value, (valid_status) => {\r\n this.ngZone.run(() => {\r\n if (valid_status === false) {\r\n g.setErrors(Object.assign({'address_not_valid': true}, g.errors) );\r\n } else {\r\n if (g.hasError('address_not_valid')) {\r\n delete g.errors['address_not_valid'];\r\n if (Object.keys(g.errors).length === 0) {\r\n g.setErrors(null);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n return (g.hasError('address_not_valid')) ? {'address_not_valid': true} : null;\r\n }\r\n return null;\r\n }]),\r\n amount: new FormControl(null, [Validators.required, (g: FormControl) => {\r\n if (new BigNumber(g.value).eq(0)) {\r\n return {'zero': true};\r\n }\r\n return null;\r\n }]),\r\n comment: new FormControl(null),\r\n mixin: new FormControl(0, Validators.required),\r\n fee: new FormControl(this.variablesService.default_fee, [Validators.required, (g: FormControl) => {\r\n if ((new BigNumber(g.value)).isLessThan(this.variablesService.default_fee)) {\r\n return {'less_min': true};\r\n }\r\n return null;\r\n }])\r\n });\r\n additionalOptions = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(params => {\r\n this.currentWalletId = params['id'];\r\n this.sendForm.reset({\r\n address: this.variablesService.currentWallet.send_data['address'],\r\n amount: this.variablesService.currentWallet.send_data['amount'],\r\n comment: this.variablesService.currentWallet.send_data['comment'],\r\n mixin: this.variablesService.currentWallet.send_data['mixin'] || 0,\r\n fee: this.variablesService.currentWallet.send_data['fee'] || this.variablesService.default_fee\r\n });\r\n });\r\n }\r\n\r\n onSend() {\r\n if (this.sendForm.valid) {\r\n this.backend.validateAddress(this.sendForm.get('address').value, (valid_status) => {\r\n if (valid_status === false) {\r\n this.ngZone.run(() => {\r\n this.sendForm.get('address').setErrors({address_not_valid: true});\r\n });\r\n } else {\r\n this.backend.sendMoney(\r\n this.currentWalletId,\r\n this.sendForm.get('address').value,\r\n this.sendForm.get('amount').value,\r\n this.sendForm.get('fee').value,\r\n this.sendForm.get('mixin').value,\r\n this.sendForm.get('comment').value,\r\n (send_status, send_data) => {\r\n if (send_status) {\r\n this.modalService.prepareModal('success', 'SEND.SUCCESS_SENT');\r\n this.variablesService.currentWallet.send_data = {address: null, amount: null, comment: null, mixin: null, fee: null};\r\n this.sendForm.reset({address: null, amount: null, comment: null, mixin: 0, fee: this.variablesService.default_fee});\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleOptions() {\r\n this.additionalOptions = !this.additionalOptions;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.variablesService.currentWallet.send_data = {\r\n address: this.sendForm.get('address').value,\r\n amount: this.sendForm.get('amount').value,\r\n comment: this.sendForm.get('comment').value,\r\n mixin: this.sendForm.get('mixin').value,\r\n fee: this.sendForm.get('fee').value\r\n }\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n

{{ 'SETTINGS.TITLE' | translate }}

\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{item.name | translate}}\\r\\n \\r\\n \\r\\n {{item.name | translate}}\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n {{ 'SETTINGS.MASTER_PASSWORD.TITLE' | translate }}\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.PASS_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{ 'SETTINGS.FORM_ERRORS.CONFIRM_NOT_MATCH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ 'SETTINGS.LAST_BUILD' | translate : {value: currentBuild} }}
\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".head {\\n justify-content: flex-end; }\\n\\n.settings-title {\\n font-size: 1.7rem; }\\n\\n.theme-selection {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n margin: 2.4rem 0;\\n width: 50%; }\\n\\n.theme-selection .radio-block {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n font-size: 1.3rem;\\n line-height: 2.7rem; }\\n\\n.lock-selection {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n margin: 2.4rem 0;\\n width: 50%; }\\n\\n.lock-selection .lock-selection-title {\\n display: flex;\\n font-size: 1.5rem;\\n line-height: 2.7rem;\\n margin-bottom: 1rem; }\\n\\n.scale-selection {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 0 0 4rem;\\n width: 50%;\\n height: 0.5rem; }\\n\\n.scale-selection .button-block {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 0 auto;\\n margin: 0 0.2rem;\\n padding: 0;\\n height: 0.5rem; }\\n\\n.scale-selection .button-block .label {\\n position: absolute;\\n bottom: -1rem;\\n left: 50%;\\n -webkit-transform: translate(-50%, 100%);\\n transform: translate(-50%, 100%);\\n font-size: 1rem;\\n white-space: nowrap; }\\n\\n.master-password {\\n width: 50%; }\\n\\n.master-password .master-password-title {\\n display: flex;\\n font-size: 1.5rem;\\n line-height: 2.7rem;\\n margin-bottom: 1rem; }\\n\\n.master-password button {\\n margin: 2.5rem auto;\\n width: 100%;\\n max-width: 15rem; }\\n\\n.last-build {\\n font-size: 1rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2V0dGluZ3MvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHNldHRpbmdzXFxzZXR0aW5ncy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLHlCQUF5QixFQUFBOztBQUczQjtFQUNFLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsdUJBQXVCO0VBQ3ZCLGdCQUFnQjtFQUNoQixVQUFVLEVBQUE7O0FBTFo7SUFRSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLDJCQUEyQjtJQUMzQixpQkFBaUI7SUFDakIsbUJBQW1CLEVBQUE7O0FBSXZCO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLFVBQVUsRUFBQTs7QUFMWjtJQVFJLGFBQWE7SUFDYixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLG1CQUFtQixFQUFBOztBQUl2QjtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsOEJBQThCO0VBQzlCLGlCQUFpQjtFQUNqQixVQUFVO0VBQ1YsY0FBYyxFQUFBOztBQU5oQjtJQVNJLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLFVBQVU7SUFDVixjQUFjLEVBQUE7O0FBaEJsQjtNQW1CTSxrQkFBa0I7TUFDbEIsYUFBYTtNQUNiLFNBQVM7TUFDVCx3Q0FBZ0M7Y0FBaEMsZ0NBQWdDO01BQ2hDLGVBQWU7TUFDZixtQkFBbUIsRUFBQTs7QUFLekI7RUFDRSxVQUFVLEVBQUE7O0FBRFo7SUFJSSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLG1CQUFtQjtJQUNuQixtQkFBbUIsRUFBQTs7QUFQdkI7SUFXSSxtQkFBbUI7SUFDbkIsV0FBVztJQUNYLGdCQUFnQixFQUFBOztBQUlwQjtFQUNFLGVBQWUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3NldHRpbmdzL3NldHRpbmdzLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmhlYWQge1xyXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcbn1cclxuXHJcbi5zZXR0aW5ncy10aXRsZSB7XHJcbiAgZm9udC1zaXplOiAxLjdyZW07XHJcbn1cclxuXHJcbi50aGVtZS1zZWxlY3Rpb24ge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcblxyXG4gIC5yYWRpby1ibG9jayB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuN3JlbTtcclxuICB9XHJcbn1cclxuXHJcbi5sb2NrLXNlbGVjdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIG1hcmdpbjogMi40cmVtIDA7XHJcbiAgd2lkdGg6IDUwJTtcclxuXHJcbiAgLmxvY2stc2VsZWN0aW9uLXRpdGxlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLnNjYWxlLXNlbGVjdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBwYWRkaW5nOiAwIDAgNHJlbTtcclxuICB3aWR0aDogNTAlO1xyXG4gIGhlaWdodDogMC41cmVtO1xyXG5cclxuICAuYnV0dG9uLWJsb2NrIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBmbGV4OiAxIDAgYXV0bztcclxuICAgIG1hcmdpbjogMCAwLjJyZW07XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgaGVpZ2h0OiAwLjVyZW07XHJcblxyXG4gICAgLmxhYmVsIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IC0xcmVtO1xyXG4gICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDEwMCUpO1xyXG4gICAgICBmb250LXNpemU6IDFyZW07XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubWFzdGVyLXBhc3N3b3JkIHtcclxuICB3aWR0aDogNTAlO1xyXG5cclxuICAubWFzdGVyLXBhc3N3b3JkLXRpdGxlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmb250LXNpemU6IDEuNXJlbTtcclxuICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uIHtcclxuICAgIG1hcmdpbjogMi41cmVtIGF1dG87XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1heC13aWR0aDogMTVyZW07XHJcbiAgfVxyXG59XHJcblxyXG4ubGFzdC1idWlsZCB7XHJcbiAgZm9udC1zaXplOiAxcmVtO1xyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit, Renderer2} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {Location} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.scss']\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n\r\n theme: string;\r\n scale: number;\r\n changeForm: any;\r\n appLockOptions = [\r\n {\r\n id: 5,\r\n name: 'SETTINGS.APP_LOCK.TIME1'\r\n },\r\n {\r\n id: 15,\r\n name: 'SETTINGS.APP_LOCK.TIME2'\r\n },\r\n {\r\n id: 60,\r\n name: 'SETTINGS.APP_LOCK.TIME3'\r\n },\r\n {\r\n id: 0,\r\n name: 'SETTINGS.APP_LOCK.TIME4'\r\n }\r\n ];\r\n appScaleOptions = [\r\n {\r\n id: 7.5,\r\n name: '75% scale'\r\n },\r\n {\r\n id: 10,\r\n name: '100% scale'\r\n },\r\n {\r\n id: 12.5,\r\n name: '125% scale'\r\n },\r\n {\r\n id: 15,\r\n name: '150% scale'\r\n }\r\n ];\r\n\r\n currentBuild = '';\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n public variablesService: VariablesService,\r\n private backend: BackendService,\r\n private location: Location,\r\n private ngZone: NgZone\r\n ) {\r\n this.theme = this.variablesService.settings.theme;\r\n this.scale = this.variablesService.settings.scale;\r\n this.changeForm = new FormGroup({\r\n password: new FormControl('', Validators.required),\r\n new_password: new FormControl('', Validators.required),\r\n new_confirmation: new FormControl('', Validators.required)\r\n }, [(g: FormGroup) => {\r\n return g.get('new_password').value === g.get('new_confirmation').value ? null : {'confirm_mismatch': true};\r\n }, (g: FormGroup) => {\r\n return g.get('password').value === this.variablesService.appPass ? null : {'pass_mismatch': true};\r\n }]);\r\n }\r\n\r\n ngOnInit() {\r\n this.backend.getVersion((version) => {\r\n this.ngZone.run(() => {\r\n this.currentBuild = version;\r\n });\r\n });\r\n }\r\n\r\n setTheme(theme) {\r\n this.renderer.removeClass(document.body, 'theme-' + this.theme);\r\n this.theme = theme;\r\n this.variablesService.settings.theme = this.theme;\r\n this.renderer.addClass(document.body, 'theme-' + this.theme);\r\n this.backend.storeAppData();\r\n }\r\n\r\n setScale(scale) {\r\n this.scale = scale;\r\n this.variablesService.settings.scale = this.scale;\r\n this.renderer.setStyle(document.documentElement, 'font-size', this.scale + 'px');\r\n this.backend.storeAppData();\r\n }\r\n\r\n onSubmitChangePass() {\r\n if (this.changeForm.valid) {\r\n this.variablesService.appPass = this.changeForm.get('new_password').value;\r\n this.backend.storeSecureAppData((status, data) => {\r\n if (status) {\r\n this.changeForm.reset();\r\n } else {\r\n console.log(data);\r\n }\r\n });\r\n }\r\n }\r\n\r\n onLockChange() {\r\n this.variablesService.restartCountdown();\r\n this.backend.storeAppData();\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n

{{ 'SIDEBAR.TITLE' | translate }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.OFFLINE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.SYNCING' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ONLINE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.LOADING' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.ERROR' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\\r\\n \\r\\n \\r\\n {{ 'SIDEBAR.SYNCHRONIZATION.COMPLETE' | translate }} {{ 'SIDEBAR.SYNCHRONIZATION.TESTNET' | translate }}\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ variablesService.sync.progress_value_text }}%
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n flex: 0 0 25rem;\\n padding: 0 3rem 3rem;\\n max-width: 25rem; }\\n\\n.sidebar-accounts {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto; }\\n\\n.sidebar-accounts .sidebar-accounts-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex: 0 0 auto;\\n height: 8rem;\\n font-weight: 400; }\\n\\n.sidebar-accounts .sidebar-accounts-header h3 {\\n font-size: 1.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-header button {\\n background: transparent;\\n border: none;\\n outline: none; }\\n\\n.sidebar-accounts .sidebar-accounts-list {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto;\\n margin: 0 -3rem;\\n overflow-y: overlay; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account {\\n display: flex;\\n flex-direction: column;\\n flex-shrink: 0;\\n cursor: pointer;\\n padding: 2rem 3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance {\\n line-height: 2.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance .title {\\n font-size: 1.5rem;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-title-balance .balance {\\n font-size: 1.8rem;\\n font-weight: 600;\\n white-space: nowrap; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias {\\n font-size: 1.3rem;\\n line-height: 3.4rem;\\n margin-bottom: 0.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .icon {\\n margin-left: 0.5rem;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-alias .icon.comment {\\n -webkit-mask: url('alert.svg') no-repeat center;\\n mask: url('alert.svg') no-repeat center; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-staking {\\n line-height: 2.9rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-staking .text {\\n font-size: 1.3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages {\\n line-height: 2.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages .text {\\n font-size: 1.3rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-messages .indicator {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: 1rem;\\n font-size: 1rem;\\n min-width: 2.4rem;\\n height: 1.6rem;\\n padding: 0 0.5rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\\n flex-direction: column;\\n height: 5.6rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .status {\\n align-self: flex-start;\\n font-size: 1.3rem;\\n line-height: 2.6rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container {\\n display: flex;\\n margin: 0.4rem 0;\\n height: 0.7rem;\\n width: 100%; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-bar {\\n flex: 1 0 auto; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-bar .fill {\\n height: 100%; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization .progress-bar-container .progress-percent {\\n flex: 0 0 auto;\\n font-size: 1.3rem;\\n line-height: 0.7rem;\\n padding-left: 0.7rem; }\\n\\n.sidebar-accounts .sidebar-accounts-list .sidebar-account:focus {\\n outline: none; }\\n\\n.sidebar-settings {\\n flex: 0 0 auto;\\n padding-bottom: 1rem; }\\n\\n.sidebar-settings .wrap-button {\\n margin: 0 -3rem; }\\n\\n.sidebar-settings .wrap-button button {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n font-weight: 400;\\n line-height: 3rem;\\n outline: none;\\n padding: 0 3rem;\\n width: 100%; }\\n\\n.sidebar-settings .wrap-button button .icon {\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.sidebar-settings .wrap-button button .icon.settings {\\n -webkit-mask: url('settings.svg') no-repeat center;\\n mask: url('settings.svg') no-repeat center; }\\n\\n.sidebar-settings .wrap-button button .icon.logout {\\n -webkit-mask: url('logout.svg') no-repeat center;\\n mask: url('logout.svg') no-repeat center; }\\n\\n.sidebar-synchronization-status {\\n position: relative;\\n display: flex;\\n align-items: flex-end;\\n justify-content: flex-start;\\n flex: 0 0 4rem;\\n font-size: 1.3rem; }\\n\\n.sidebar-synchronization-status .status-container .offline, .sidebar-synchronization-status .status-container .online {\\n position: relative;\\n display: block;\\n line-height: 1.2rem;\\n padding-left: 2.2rem; }\\n\\n.sidebar-synchronization-status .status-container .offline:before, .sidebar-synchronization-status .status-container .online:before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n border-radius: 50%;\\n width: 1.2rem;\\n height: 1.2rem; }\\n\\n.sidebar-synchronization-status .status-container .syncing, .sidebar-synchronization-status .status-container .loading {\\n line-height: 4rem; }\\n\\n.sidebar-synchronization-status .progress-bar-container {\\n position: absolute;\\n bottom: -0.7rem;\\n left: 0;\\n height: 0.7rem;\\n width: 100%; }\\n\\n.sidebar-synchronization-status .progress-bar-container .syncing {\\n display: flex; }\\n\\n.sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\\n flex: 1 0 auto; }\\n\\n.sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\\n height: 100%; }\\n\\n.sidebar-synchronization-status .progress-bar-container .syncing .progress-percent {\\n flex: 0 0 auto;\\n font-size: 1.3rem;\\n line-height: 0.7rem;\\n padding-left: 0.7rem; }\\n\\n.sidebar-synchronization-status .progress-bar-container .loading {\\n -webkit-animation: move 5s linear infinite;\\n animation: move 5s linear infinite;\\n background-image: -webkit-gradient(linear, 0 0, 100% 100%, color-stop(0.125, rgba(0, 0, 0, 0.15)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.1)), color-stop(0.375, rgba(0, 0, 0, 0.1)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.15)), color-stop(0.625, rgba(0, 0, 0, 0.15)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.1)), color-stop(0.875, rgba(0, 0, 0, 0.1)), color-stop(0.875, transparent), to(transparent)), -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.125, rgba(0, 0, 0, 0.3)), color-stop(0.125, transparent), color-stop(0.25, transparent), color-stop(0.25, rgba(0, 0, 0, 0.25)), color-stop(0.375, rgba(0, 0, 0, 0.25)), color-stop(0.375, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(0, 0, 0, 0.3)), color-stop(0.625, rgba(0, 0, 0, 0.3)), color-stop(0.625, transparent), color-stop(0.75, transparent), color-stop(0.75, rgba(0, 0, 0, 0.25)), color-stop(0.875, rgba(0, 0, 0, 0.25)), color-stop(0.875, transparent), to(transparent));\\n background-size: 7rem 7rem;\\n height: 100%; }\\n\\n@-webkit-keyframes move {\\n 0% {\\n background-position: 100% -7rem; }\\n 100% {\\n background-position: 100% 7rem; } }\\n\\n@keyframes move {\\n 0% {\\n background-position: 100% -7rem; }\\n 100% {\\n background-position: 100% 7rem; } }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2lkZWJhci9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc2lkZWJhclxcc2lkZWJhci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsOEJBQThCO0VBQzlCLGVBQWU7RUFDZixvQkFBb0I7RUFDcEIsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixjQUFjLEVBQUE7O0FBSGhCO0lBTUksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQiw4QkFBOEI7SUFDOUIsY0FBYztJQUNkLFlBQVk7SUFDWixnQkFBZ0IsRUFBQTs7QUFYcEI7TUFjTSxpQkFBaUIsRUFBQTs7QUFkdkI7TUFrQk0sdUJBQXVCO01BQ3ZCLFlBQVk7TUFDWixhQUFhLEVBQUE7O0FBcEJuQjtJQXlCSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLGNBQWM7SUFDZCxlQUFlO0lBQ2YsbUJBQW1CLEVBQUE7O0FBN0J2QjtNQWdDTSxhQUFhO01BQ2Isc0JBQXNCO01BQ3RCLGNBQWM7TUFDZCxlQUFlO01BQ2Ysa0JBQWtCLEVBQUE7O0FBcEN4QjtRQXVDUSxhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLDhCQUE4QixFQUFBOztBQXpDdEM7VUE0Q1UsbUJBQW1CLEVBQUE7O0FBNUM3QjtZQStDWSxpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixtQkFBbUIsRUFBQTs7QUFsRC9CO1lBc0RZLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIsbUJBQW1CLEVBQUE7O0FBeEQvQjtVQTZEVSxpQkFBaUI7VUFDakIsbUJBQW1CO1VBQ25CLHFCQUFxQixFQUFBOztBQS9EL0I7WUFrRVksbUJBQW1CO1lBQ25CLGFBQWE7WUFDYixjQUFjLEVBQUE7O0FBcEUxQjtjQXVFYywrQ0FBd0Q7c0JBQXhELHVDQUF3RCxFQUFBOztBQXZFdEU7VUE2RVUsbUJBQW1CLEVBQUE7O0FBN0U3QjtZQWdGWSxpQkFBaUIsRUFBQTs7QUFoRjdCO1VBcUZVLG1CQUFtQixFQUFBOztBQXJGN0I7WUF3RlksaUJBQWlCLEVBQUE7O0FBeEY3QjtZQTRGWSxhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixjQUFjO1lBQ2QsaUJBQWlCLEVBQUE7O0FBbkc3QjtVQXdHVSxzQkFBc0I7VUFDdEIsY0FBYyxFQUFBOztBQXpHeEI7WUE0R1ksc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixtQkFBbUIsRUFBQTs7QUE5Ry9CO1lBa0hZLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsY0FBYztZQUNkLFdBQVcsRUFBQTs7QUFySHZCO2NBd0hjLGNBQWMsRUFBQTs7QUF4SDVCO2dCQTJIZ0IsWUFBWSxFQUFBOztBQTNINUI7Y0FnSWMsY0FBYztjQUNkLGlCQUFpQjtjQUNqQixtQkFBbUI7Y0FDbkIsb0JBQW9CLEVBQUE7O0FBbklsQztRQTBJUSxhQUFhLEVBQUE7O0FBTXJCO0VBQ0UsY0FBYztFQUNkLG9CQUFvQixFQUFBOztBQUZ0QjtJQUtJLGVBQWUsRUFBQTs7QUFMbkI7TUFRTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixZQUFZO01BQ1osZ0JBQWdCO01BQ2hCLGlCQUFpQjtNQUNqQixhQUFhO01BQ2IsZUFBZTtNQUNmLFdBQVcsRUFBQTs7QUFoQmpCO1FBbUJRLG9CQUFvQjtRQUNwQixhQUFhO1FBQ2IsY0FBYyxFQUFBOztBQXJCdEI7VUF3QlUsa0RBQTJEO2tCQUEzRCwwQ0FBMkQsRUFBQTs7QUF4QnJFO1VBNEJVLGdEQUF5RDtrQkFBekQsd0NBQXlELEVBQUE7O0FBT25FO0VBQ0Usa0JBQWtCO0VBQ2xCLGFBQWE7RUFDYixxQkFBcUI7RUFDckIsMkJBQTJCO0VBQzNCLGNBQWM7RUFDZCxpQkFBaUIsRUFBQTs7QUFObkI7SUFXTSxrQkFBa0I7SUFDbEIsY0FBYztJQUNkLG1CQUFtQjtJQUNuQixvQkFBb0IsRUFBQTs7QUFkMUI7TUFpQlEsV0FBVztNQUNYLGtCQUFrQjtNQUNsQixNQUFNO01BQ04sT0FBTztNQUNQLGtCQUFrQjtNQUNsQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQXZCdEI7SUE0Qk0saUJBQWlCLEVBQUE7O0FBNUJ2QjtJQWlDSSxrQkFBa0I7SUFDbEIsZUFBZTtJQUNmLE9BQU87SUFDUCxjQUFjO0lBQ2QsV0FBVyxFQUFBOztBQXJDZjtNQXdDTSxhQUFhLEVBQUE7O0FBeENuQjtRQTJDUSxjQUFjLEVBQUE7O0FBM0N0QjtVQThDVSxZQUFZLEVBQUE7O0FBOUN0QjtRQW1EUSxjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixvQkFBb0IsRUFBQTs7QUF0RDVCO01BMkRNLDBDQUFrQztjQUFsQyxrQ0FBa0M7TUFDbEMsK2xDQXNCRztNQUNILDBCQUEwQjtNQUMxQixZQUFZLEVBQUE7O0FBS2xCO0VBQ0U7SUFDRSwrQkFBK0IsRUFBQTtFQUVqQztJQUNFLDhCQUE4QixFQUFBLEVBQUE7O0FBTGxDO0VBQ0U7SUFDRSwrQkFBK0IsRUFBQTtFQUVqQztJQUNFLDhCQUE4QixFQUFBLEVBQUEiLCJmaWxlIjoic3JjL2FwcC9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBmbGV4OiAwIDAgMjVyZW07XHJcbiAgcGFkZGluZzogMCAzcmVtIDNyZW07XHJcbiAgbWF4LXdpZHRoOiAyNXJlbTtcclxufVxyXG5cclxuLnNpZGViYXItYWNjb3VudHMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuXHJcbiAgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgZmxleDogMCAwIGF1dG87XHJcbiAgICBoZWlnaHQ6IDhyZW07XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG5cclxuICAgIGgzIHtcclxuICAgICAgZm9udC1zaXplOiAxLjdyZW07XHJcbiAgICB9XHJcblxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLWFjY291bnRzLWxpc3Qge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4OiAxIDEgYXV0bztcclxuICAgIG1hcmdpbjogMCAtM3JlbTtcclxuICAgIG92ZXJmbG93LXk6IG92ZXJsYXk7XHJcblxyXG4gICAgLnNpZGViYXItYWNjb3VudCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDJyZW0gM3JlbTtcclxuXHJcbiAgICAgIC5zaWRlYmFyLWFjY291bnQtcm93IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgICAgICAmLmFjY291bnQtdGl0bGUtYmFsYW5jZSB7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG5cclxuICAgICAgICAgIC50aXRsZSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuYmFsYW5jZSB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY2NvdW50LWFsaWFzIHtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDMuNHJlbTtcclxuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuN3JlbTtcclxuXHJcbiAgICAgICAgICAuaWNvbiB7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XHJcbiAgICAgICAgICAgIHdpZHRoOiAxLjJyZW07XHJcbiAgICAgICAgICAgIGhlaWdodDogMS4ycmVtO1xyXG5cclxuICAgICAgICAgICAgJi5jb21tZW50IHtcclxuICAgICAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2FsZXJ0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY2NvdW50LXN0YWtpbmcge1xyXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIuOXJlbTtcclxuXHJcbiAgICAgICAgICAudGV4dCB7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY2NvdW50LW1lc3NhZ2VzIHtcclxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyLjdyZW07XHJcblxyXG4gICAgICAgICAgLnRleHQge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaW5kaWNhdG9yIHtcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcclxuICAgICAgICAgICAgbWluLXdpZHRoOiAyLjRyZW07XHJcbiAgICAgICAgICAgIGhlaWdodDogMS42cmVtO1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xyXG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICAgIGhlaWdodDogNS42cmVtO1xyXG5cclxuICAgICAgICAgIC5zdGF0dXMge1xyXG4gICAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDIuNnJlbTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMC40cmVtIDA7XHJcbiAgICAgICAgICAgIGhlaWdodDogMC43cmVtO1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAgICAgICAgIC5wcm9ncmVzcy1iYXIge1xyXG4gICAgICAgICAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG5cclxuICAgICAgICAgICAgICAuZmlsbCB7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAucHJvZ3Jlc3MtcGVyY2VudCB7XHJcbiAgICAgICAgICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDAuN3JlbTtcclxuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuN3JlbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgJjpmb2N1cyB7XHJcbiAgICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnNpZGViYXItc2V0dGluZ3Mge1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xyXG5cclxuICAud3JhcC1idXR0b24ge1xyXG4gICAgbWFyZ2luOiAwIC0zcmVtO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAzcmVtO1xyXG4gICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICBwYWRkaW5nOiAwIDNyZW07XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgICAgLmljb24ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMS4ycmVtO1xyXG4gICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAgICYuc2V0dGluZ3Mge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9zZXR0aW5ncy5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmxvZ291dCB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2xvZ291dC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGZsZXg6IDAgMCA0cmVtO1xyXG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG5cclxuICAuc3RhdHVzLWNvbnRhaW5lciB7XHJcblxyXG4gICAgLm9mZmxpbmUsIC5vbmxpbmUge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICBsaW5lLWhlaWdodDogMS4ycmVtO1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbTtcclxuXHJcbiAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIHdpZHRoOiAxLjJyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjJyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc3luY2luZywgLmxvYWRpbmcge1xyXG4gICAgICBsaW5lLWhlaWdodDogNHJlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGJvdHRvbTogLTAuN3JlbTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBoZWlnaHQ6IDAuN3JlbTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgIC5zeW5jaW5nIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuXHJcbiAgICAgIC5wcm9ncmVzcy1iYXIge1xyXG4gICAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG5cclxuICAgICAgICAuZmlsbCB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAucHJvZ3Jlc3MtcGVyY2VudCB7XHJcbiAgICAgICAgZmxleDogMCAwIGF1dG87XHJcbiAgICAgICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDAuN3JlbTtcclxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuN3JlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5sb2FkaW5nIHtcclxuICAgICAgYW5pbWF0aW9uOiBtb3ZlIDVzIGxpbmVhciBpbmZpbml0ZTtcclxuICAgICAgYmFja2dyb3VuZC1pbWFnZTpcclxuICAgICAgICAtd2Via2l0LWdyYWRpZW50KFxyXG4gICAgICAgICAgICBsaW5lYXIsIDAgMCwgMTAwJSAxMDAlLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC4xMjUsIHJnYmEoMCwgMCwgMCwgLjE1KSksIGNvbG9yLXN0b3AoLjEyNSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC4yNTAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguMjUwLCByZ2JhKDAsIDAsIDAsIC4xMCkpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC4zNzUsIHJnYmEoMCwgMCwgMCwgLjEwKSksIGNvbG9yLXN0b3AoLjM3NSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC41MDAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguNTAwLCByZ2JhKDAsIDAsIDAsIC4xNSkpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC42MjUsIHJnYmEoMCwgMCwgMCwgLjE1KSksIGNvbG9yLXN0b3AoLjYyNSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC43NTAsIHRyYW5zcGFyZW50KSwgY29sb3Itc3RvcCguNzUwLCByZ2JhKDAsIDAsIDAsIC4xMCkpLFxyXG4gICAgICAgICAgICBjb2xvci1zdG9wKC44NzUsIHJnYmEoMCwgMCwgMCwgLjEwKSksIGNvbG9yLXN0b3AoLjg3NSwgdHJhbnNwYXJlbnQpLFxyXG4gICAgICAgICAgICB0byh0cmFuc3BhcmVudClcclxuICAgICAgICApLFxyXG4gICAgICAgIC13ZWJraXQtZ3JhZGllbnQoXHJcbiAgICAgICAgICAgIGxpbmVhciwgMCAxMDAlLCAxMDAlIDAsXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjEyNSwgcmdiYSgwLCAwLCAwLCAuMzApKSwgY29sb3Itc3RvcCguMTI1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjI1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC4yNTAsIHJnYmEoMCwgMCwgMCwgLjI1KSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjM3NSwgcmdiYSgwLCAwLCAwLCAuMjUpKSwgY29sb3Itc3RvcCguMzc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjUwMCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC41MDAsIHJnYmEoMCwgMCwgMCwgLjMwKSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjYyNSwgcmdiYSgwLCAwLCAwLCAuMzApKSwgY29sb3Itc3RvcCguNjI1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjc1MCwgdHJhbnNwYXJlbnQpLCBjb2xvci1zdG9wKC43NTAsIHJnYmEoMCwgMCwgMCwgLjI1KSksXHJcbiAgICAgICAgICAgIGNvbG9yLXN0b3AoLjg3NSwgcmdiYSgwLCAwLCAwLCAuMjUpKSwgY29sb3Itc3RvcCguODc1LCB0cmFuc3BhcmVudCksXHJcbiAgICAgICAgICAgIHRvKHRyYW5zcGFyZW50KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogN3JlbSA3cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIG1vdmUge1xyXG4gIDAlIHtcclxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgLTdyZW07XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSA3cmVtO1xyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {ActivatedRoute, NavigationStart, Router} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss']\r\n})\r\nexport class SidebarComponent implements OnInit, OnDestroy {\r\n walletSubRouting;\r\n\r\n walletActive: number;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n public variablesService: VariablesService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n if (this.router.url.indexOf('/wallet/') !== -1) {\r\n const localPathArr = this.router.url.split('/');\r\n if (localPathArr.length >= 3) {\r\n this.walletActive = parseInt(localPathArr[2], 10);\r\n }\r\n } else if (this.router.url.indexOf('/details') !== -1) {\r\n this.walletActive = this.variablesService.currentWallet.wallet_id;\r\n } else {\r\n this.walletActive = null;\r\n }\r\n\r\n this.walletSubRouting = this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationStart) {\r\n if (event.url.indexOf('/wallet/') !== -1) {\r\n const localPathArr = event.url.split('/');\r\n if (localPathArr.length >= 3) {\r\n this.walletActive = parseInt(localPathArr[2], 10);\r\n }\r\n } else if (event.url.indexOf('/details') !== -1) {\r\n this.walletActive = this.variablesService.currentWallet.wallet_id;\r\n } else {\r\n this.walletActive = null;\r\n }\r\n }\r\n });\r\n }\r\n\r\n logOut() {\r\n this.variablesService.stopCountdown();\r\n this.variablesService.appPass = '';\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/login'], {queryParams: {type: 'auth'}});\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.walletSubRouting.unsubscribe();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE' | translate }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_PENDING' | translate }}\\r\\n {{pending.total | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_TOTAL' | translate }}\\r\\n {{total | intToMoney}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n
\\r\\n {{selectedDate.date | date : 'HH:00 - HH:59, MMM. EEEE, dd, yyyy'}}\\r\\n {{selectedDate.date | date : 'HH:mm, MMM. EEEE, dd, yyyy'}}\\r\\n {{selectedDate.date | date : 'MMM. EEEE, dd, yyyy'}}\\r\\n {{selectedDate.amount}} {{variablesService.defaultCurrency}}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ 'STAKING.TITLE_PERIOD' | translate }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.chart-header {\\n display: flex;\\n flex: 0 0 auto; }\\n\\n.chart-header .general {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n flex-grow: 1;\\n font-size: 1.3rem;\\n margin: -0.5rem 0; }\\n\\n.chart-header .general > div {\\n display: flex;\\n align-items: center;\\n margin: 0.5rem 0;\\n height: 2rem; }\\n\\n.chart-header .general > div .label {\\n display: inline-block;\\n width: 9rem; }\\n\\n.chart-header .selected {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-end;\\n justify-content: center;\\n flex-grow: 1;\\n font-size: 1.8rem; }\\n\\n.chart-header .selected span {\\n line-height: 2.9rem; }\\n\\n.chart {\\n display: flex;\\n align-items: center;\\n flex: 1 1 auto;\\n min-height: 40rem; }\\n\\n.chart > div {\\n width: 100%;\\n height: 100%; }\\n\\n.chart-options {\\n display: flex;\\n align-items: center;\\n height: 2.4rem;\\n flex: 0 0 auto; }\\n\\n.chart-options .title {\\n font-size: 1.3rem;\\n width: 9rem; }\\n\\n.chart-options .options {\\n display: flex;\\n justify-content: space-between;\\n flex-grow: 1;\\n height: 100%; }\\n\\n.chart-options .options button {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 1 auto;\\n cursor: pointer;\\n font-size: 1.3rem;\\n margin: 0 0.1rem;\\n padding: 0;\\n height: 100%; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc3Rha2luZy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFwcFxcc3Rha2luZ1xcc3Rha2luZy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdiO0VBQ0UsYUFBYTtFQUNiLGNBQWMsRUFBQTs7QUFGaEI7SUFLSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixpQkFBaUIsRUFBQTs7QUFYckI7TUFjTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLGdCQUFnQjtNQUNoQixZQUFZLEVBQUE7O0FBakJsQjtRQW9CUSxxQkFBcUI7UUFDckIsV0FBVyxFQUFBOztBQXJCbkI7SUEyQkksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsdUJBQXVCO0lBQ3ZCLFlBQVk7SUFDWixpQkFBaUIsRUFBQTs7QUFoQ3JCO01BbUNNLG1CQUFtQixFQUFBOztBQUt6QjtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsY0FBYztFQUNkLGlCQUFpQixFQUFBOztBQUpuQjtJQU9JLFdBQVc7SUFDWCxZQUFZLEVBQUE7O0FBSWhCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsY0FBYyxFQUFBOztBQUpoQjtJQU9JLGlCQUFpQjtJQUNqQixXQUFXLEVBQUE7O0FBUmY7SUFZSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLFlBQVk7SUFDWixZQUFZLEVBQUE7O0FBZmhCO01Ba0JNLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsdUJBQXVCO01BQ3ZCLGNBQWM7TUFDZCxlQUFlO01BQ2YsaUJBQWlCO01BQ2pCLGdCQUFnQjtNQUNoQixVQUFVO01BQ1YsWUFBWSxFQUFBIiwiZmlsZSI6InNyYy9hcHAvc3Rha2luZy9zdGFraW5nLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmNoYXJ0LWhlYWRlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgLmdlbmVyYWwge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW46IC0wLjVyZW0gMDtcclxuXHJcbiAgICA+IGRpdiB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIG1hcmdpbjogMC41cmVtIDA7XHJcbiAgICAgIGhlaWdodDogMnJlbTtcclxuXHJcbiAgICAgIC5sYWJlbCB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIHdpZHRoOiA5cmVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc2VsZWN0ZWQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGZsZXgtZ3JvdzogMTtcclxuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG5cclxuICAgIHNwYW4ge1xyXG4gICAgICBsaW5lLWhlaWdodDogMi45cmVtO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmNoYXJ0IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgbWluLWhlaWdodDogNDByZW07XHJcblxyXG4gID4gZGl2IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gIH1cclxufVxyXG5cclxuLmNoYXJ0LW9wdGlvbnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBoZWlnaHQ6IDIuNHJlbTtcclxuICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgLnRpdGxlIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgd2lkdGg6IDlyZW07XHJcbiAgfVxyXG5cclxuICAub3B0aW9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICBmbGV4OiAxIDEgYXV0bztcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICBmb250LXNpemU6IDEuM3JlbTtcclxuICAgICAgbWFyZ2luOiAwIDAuMXJlbTtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */\"","import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Chart} from 'angular-highcharts';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {ActivatedRoute} from '@angular/router';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {BigNumber} from 'bignumber.js';\r\n\r\n@Component({\r\n selector: 'app-staking',\r\n templateUrl: './staking.component.html',\r\n styleUrls: ['./staking.component.scss']\r\n})\r\nexport class StakingComponent implements OnInit, OnDestroy {\r\n\r\n parentRouting;\r\n heightAppEvent;\r\n refreshStackingEvent;\r\n\r\n periods = [\r\n {\r\n title: this.translate.instant('STAKING.DAY'),\r\n key: '1 day',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.WEEK'),\r\n key: '1 week',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.MONTH'),\r\n key: '1 month',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.YEAR'),\r\n key: '1 year',\r\n active: false\r\n },\r\n {\r\n title: this.translate.instant('STAKING.ALL'),\r\n key: 'All',\r\n active: true\r\n }\r\n ];\r\n\r\n selectedDate = {\r\n date: null,\r\n amount: null\r\n };\r\n\r\n originalData = [];\r\n\r\n chart: Chart;\r\n\r\n total = new BigNumber(0);\r\n pending = {\r\n list: [],\r\n total: new BigNumber(0)\r\n };\r\n\r\n currentPeriod = 'All';\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private variablesService: VariablesService,\r\n private backend: BackendService,\r\n private ngZone: NgZone,\r\n private intToMoneyPipe: IntToMoneyPipe,\r\n private translate: TranslateService\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.parentRouting = this.route.parent.params.subscribe(() => {\r\n this.getMiningHistory();\r\n });\r\n this.heightAppEvent = this.variablesService.getHeightAppEvent.subscribe((newHeight: number) => {\r\n if (!this.pending.total.isZero()) {\r\n const pendingCount = this.pending.list.length;\r\n for (let i = pendingCount - 1; i >= 0; i--) {\r\n if (newHeight - this.pending.list[i].h >= 10) {\r\n this.pending.list.splice(i, 1);\r\n }\r\n }\r\n if (pendingCount !== this.pending.list.length) {\r\n this.pending.total = new BigNumber(0);\r\n for (let i = 0; i < this.pending.list.length; i++) {\r\n this.pending.total = this.pending.total.plus(this.pending.list[i].a);\r\n }\r\n }\r\n }\r\n });\r\n this.refreshStackingEvent = this.variablesService.getRefreshStackingEvent.subscribe((wallet_id: number) => {\r\n if (this.variablesService.currentWallet.wallet_id === wallet_id) {\r\n this.getMiningHistory();\r\n }\r\n });\r\n }\r\n\r\n\r\n drawChart(data) {\r\n this.chart = new Chart({\r\n title: {text: ''},\r\n credits: {enabled: false},\r\n exporting: {enabled: false},\r\n legend: {enabled: false},\r\n chart: {\r\n type: 'line',\r\n backgroundColor: 'transparent',\r\n height: null,\r\n zoomType: null\r\n },\r\n\r\n yAxis: {\r\n min: 0,\r\n tickAmount: 5,\r\n title: {\r\n text: ''\r\n },\r\n gridLineColor: '#2b3644',\r\n gridLineWidth: 2,\r\n lineColor: '#2b3644',\r\n lineWidth: 2,\r\n tickWidth: 2,\r\n tickLength: 120,\r\n tickColor: '#2b3644',\r\n labels: {\r\n y: -8,\r\n align: 'left',\r\n x: -120,\r\n style: {\r\n 'color': '#e0e0e0',\r\n 'fontSize': '13px'\r\n },\r\n format: '{value} ' + this.variablesService.defaultCurrency\r\n },\r\n showLastLabel: false,\r\n },\r\n\r\n xAxis: {\r\n type: 'datetime',\r\n gridLineColor: '#2b3644',\r\n lineColor: '#2b3644',\r\n lineWidth: 2,\r\n tickWidth: 2,\r\n tickLength: 10,\r\n tickColor: '#2b3644',\r\n labels: {\r\n style: {\r\n 'color': '#e0e0e0',\r\n 'fontSize': '13px'\r\n }\r\n },\r\n minPadding: 0,\r\n maxPadding: 0,\r\n minRange: 86400000,\r\n // tickInterval: 86400000,\r\n minTickInterval: 3600000,\r\n },\r\n\r\n tooltip: {\r\n enabled: false\r\n },\r\n\r\n plotOptions: {\r\n area: {\r\n fillColor: {\r\n linearGradient: {\r\n x1: 0,\r\n y1: 0,\r\n x2: 0,\r\n y2: 1\r\n },\r\n stops: [\r\n [0, 'rgba(124,181,236,0.2)'],\r\n [1, 'rgba(124,181,236,0)']\r\n ]\r\n },\r\n marker: {\r\n enabled: false,\r\n radius: 2\r\n },\r\n lineWidth: 2,\r\n threshold: null\r\n },\r\n\r\n series: {\r\n point: {\r\n events: {\r\n mouseOver: (obj) => {\r\n this.selectedDate.date = obj.target['x'];\r\n this.selectedDate.amount = obj.target['y'];\r\n }\r\n }\r\n },\r\n events: {\r\n mouseOut: () => {\r\n this.selectedDate.date = null;\r\n this.selectedDate.amount = null;\r\n }\r\n }\r\n }\r\n },\r\n series: [\r\n {\r\n type: 'area',\r\n data: data\r\n }\r\n ]\r\n });\r\n }\r\n\r\n\r\n getMiningHistory() {\r\n if (this.variablesService.currentWallet.loaded) {\r\n this.backend.getMiningHistory(this.variablesService.currentWallet.wallet_id, (status, data) => {\r\n this.total = new BigNumber(0);\r\n this.pending.list = [];\r\n this.pending.total = new BigNumber(0);\r\n this.originalData = [];\r\n if (data.mined_entries) {\r\n data.mined_entries.forEach((item, key) => {\r\n if (item.t.toString().length === 10) {\r\n data.mined_entries[key].t = (new Date(item.t * 1000)).setUTCMilliseconds(0);\r\n }\r\n });\r\n data.mined_entries.forEach((item) => {\r\n this.total = this.total.plus(item.a);\r\n if (this.variablesService.height_app - item.h < 10) {\r\n this.pending.list.push(item);\r\n this.pending.total = this.pending.total.plus(item.a);\r\n }\r\n this.originalData.push([parseInt(item.t, 10), parseFloat(this.intToMoneyPipe.transform(item.a))]);\r\n });\r\n this.originalData = this.originalData.sort(function (a, b) {\r\n return a[0] - b[0];\r\n });\r\n }\r\n this.ngZone.run(() => {\r\n this.drawChart(JSON.parse(JSON.stringify(this.originalData)));\r\n });\r\n });\r\n }\r\n\r\n }\r\n\r\n changePeriod(period) {\r\n this.periods.forEach((p) => {\r\n p.active = false;\r\n });\r\n period.active = true;\r\n this.currentPeriod = period.key;\r\n\r\n const d = new Date();\r\n let min = null;\r\n const newData = [];\r\n\r\n if (period.key === '1 day') {\r\n this.originalData.forEach((item) => {\r\n const time = (new Date(item[0])).setUTCMinutes(0, 0, 0);\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - 1, 0, 0, 0, 0);\r\n } else if (period.key === '1 week') {\r\n this.originalData.forEach((item) => {\r\n const time = (new Date(item[0])).setUTCHours(0, 0, 0, 0);\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate() - 7, 0, 0, 0, 0);\r\n } else if (period.key === '1 month') {\r\n this.originalData.forEach((item) => {\r\n const time = (new Date(item[0])).setUTCHours(0, 0, 0, 0);\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear(), d.getMonth() - 1, d.getDate(), 0, 0, 0, 0);\r\n } else if (period.key === '1 year') {\r\n this.originalData.forEach((item) => {\r\n const time = (new Date(item[0])).setUTCHours(0, 0, 0, 0);\r\n const find = newData.find(itemNew => itemNew[0] === time);\r\n if (find) {\r\n find[1] = new BigNumber(find[1]).plus(item[1]).toNumber();\r\n } else {\r\n newData.push([time, item[1]]);\r\n }\r\n });\r\n this.chart.ref.series[0].setData(newData, true);\r\n min = Date.UTC(d.getFullYear() - 1, d.getMonth(), d.getDate(), 0, 0, 0, 0);\r\n } else {\r\n this.chart.ref.series[0].setData(this.originalData, true);\r\n }\r\n\r\n this.chart.ref.xAxis[0].setExtremes(min, null);\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.parentRouting.unsubscribe();\r\n this.heightAppEvent.unsubscribe();\r\n this.refreshStackingEvent.unsubscribe();\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{ wallet.name }}\\r\\n {{ 'BREADCRUMBS.TRANSFER_ALIAS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
0 && (transferAddressAlias || !transferAddressValid || (transferAddressValid && !permissionSend) || notEnoughMoney)\\\">\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.WRONG_ADDRESS' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.ALIAS_EXISTS' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'TRANSFER_ALIAS.FORM_ERRORS.NO_MONEY' | translate }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
{{ \\\"TRANSFER_ALIAS.COST\\\" | translate : {value: variablesService.default_fee, currency: variablesService.defaultCurrency} }}
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".form-transfer {\\n margin: 2.4rem 0; }\\n .form-transfer .alias-name {\\n width: 50%; }\\n .form-transfer .alias-cost {\\n font-size: 1.3rem;\\n margin-top: 2rem; }\\n .form-transfer .wrap-buttons {\\n display: flex;\\n justify-content: space-between;\\n margin: 2.5rem -0.7rem; }\\n .form-transfer .wrap-buttons button {\\n margin: 0 0.7rem;\\n width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHJhbnNmZXItYWxpYXMvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHRyYW5zZmVyLWFsaWFzXFx0cmFuc2Zlci1hbGlhcy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFnQixFQUFBO0VBRGxCO0lBSUksVUFBVSxFQUFBO0VBSmQ7SUFRSSxpQkFBaUI7SUFDakIsZ0JBQWdCLEVBQUE7RUFUcEI7SUFhSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLHNCQUFzQixFQUFBO0VBZjFCO01Ba0JNLGdCQUFnQjtNQUNoQixZQUFZLEVBQUEiLCJmaWxlIjoic3JjL2FwcC90cmFuc2Zlci1hbGlhcy90cmFuc2Zlci1hbGlhcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5mb3JtLXRyYW5zZmVyIHtcclxuICBtYXJnaW46IDIuNHJlbSAwO1xyXG5cclxuICAuYWxpYXMtbmFtZSB7XHJcbiAgICB3aWR0aDogNTAlO1xyXG4gIH1cclxuXHJcbiAgLmFsaWFzLWNvc3Qge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBtYXJnaW4tdG9wOiAycmVtO1xyXG4gIH1cclxuXHJcbiAgLndyYXAtYnV0dG9ucyB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgbWFyZ2luOiAyLjVyZW0gLTAuN3JlbTtcclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBtYXJnaW46IDAgMC43cmVtO1xyXG4gICAgICB3aWR0aDogMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */\"","import {Component, NgZone, OnInit} from '@angular/core';\r\nimport {Location} from '@angular/common';\r\nimport {Router} from '@angular/router';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {ModalService} from '../_helpers/services/modal.service';\r\nimport {Wallet} from '../_helpers/models/wallet.model';\r\n\r\n@Component({\r\n selector: 'app-transfer-alias',\r\n templateUrl: './transfer-alias.component.html',\r\n styleUrls: ['./transfer-alias.component.scss']\r\n})\r\nexport class TransferAliasComponent implements OnInit {\r\n\r\n wallet: Wallet;\r\n alias: any;\r\n transferAddress = '';\r\n transferAddressValid: boolean;\r\n transferAddressAlias: boolean;\r\n permissionSend: boolean;\r\n notEnoughMoney: boolean;\r\n requestProcessing = false;\r\n\r\n constructor(\r\n private location: Location,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private modalService: ModalService,\r\n private ngZone: NgZone\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.wallet = this.variablesService.currentWallet;\r\n const alias = this.backend.getWalletAlias(this.wallet.address);\r\n this.alias = {\r\n name: alias.name,\r\n address: alias.address,\r\n comment: alias.comment,\r\n tracking_key: alias.tracking_key\r\n };\r\n this.notEnoughMoney = this.wallet.unlocked_balance.isLessThan(this.variablesService.default_fee_big);\r\n }\r\n\r\n changeAddress() {\r\n this.backend.validateAddress(this.transferAddress, status => {\r\n this.transferAddressValid = status;\r\n if (status) {\r\n this.backend.getPoolInfo((statusPool, dataPool) => {\r\n if (dataPool.hasOwnProperty('aliases_que') && dataPool.aliases_que.length) {\r\n this.setStatus(!dataPool.aliases_que.some((el) => el.address === this.transferAddress));\r\n } else {\r\n this.setStatus(status);\r\n }\r\n });\r\n } else {\r\n this.setStatus(false);\r\n }\r\n });\r\n }\r\n\r\n setStatus(statusSet) {\r\n this.permissionSend = statusSet;\r\n if (statusSet) {\r\n this.backend.getAliasByAddress(this.transferAddress, (status) => {\r\n this.ngZone.run(() => {\r\n if (status) {\r\n this.transferAddressAlias = true;\r\n this.permissionSend = false;\r\n } else {\r\n this.transferAddressAlias = false;\r\n }\r\n });\r\n });\r\n } else {\r\n this.ngZone.run(() => {\r\n this.transferAddressAlias = false;\r\n });\r\n }\r\n }\r\n\r\n transferAlias() {\r\n if (this.requestProcessing || !this.permissionSend || !this.transferAddressValid || this.notEnoughMoney) {\r\n return;\r\n }\r\n this.requestProcessing = true;\r\n const newAlias = {\r\n name: this.alias.name,\r\n address: this.transferAddress,\r\n comment: this.alias.comment,\r\n tracking_key: this.alias.tracking_key\r\n };\r\n this.backend.updateAlias(this.wallet.wallet_id, newAlias, this.variablesService.default_fee, (status, data) => {\r\n if (status && data.hasOwnProperty('success') && data.success) {\r\n this.modalService.prepareModal('info', 'TRANSFER_ALIAS.REQUEST_SEND_REG');\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.wallet.wallet_id]);\r\n });\r\n }\r\n this.requestProcessing = false;\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n @bitmain\\r\\n
\\r\\n \\r\\n \\r\\n {{ 'COMMON.BACK' | translate }}\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
10:39
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
11:44
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
12:15
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
13:13
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\\r\\n
\\r\\n
\\r\\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n width: 100%; }\\n\\n.head {\\n flex: 0 0 auto;\\n box-sizing: content-box;\\n margin: -3rem -3rem 0; }\\n\\n.messages-content {\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n flex-grow: 1; }\\n\\n.messages-content .messages-list {\\n display: flex;\\n flex-direction: column;\\n font-size: 1.3rem;\\n margin: 1rem -3rem;\\n padding: 0 3rem;\\n overflow-y: overlay; }\\n\\n.messages-content .messages-list div {\\n margin: 0.7rem 0; }\\n\\n.messages-content .messages-list div.date {\\n text-align: center; }\\n\\n.messages-content .messages-list div.my, .messages-content .messages-list div.buddy {\\n position: relative;\\n padding: 1.8rem;\\n max-width: 60%; }\\n\\n.messages-content .messages-list div.buddy {\\n align-self: flex-end; }\\n\\n.messages-content .type-message {\\n display: flex;\\n flex: 0 0 auto;\\n width: 100%;\\n height: 4.2rem; }\\n\\n.messages-content .type-message .input-block {\\n width: 100%; }\\n\\n.messages-content .type-message .input-block > textarea {\\n min-height: 4.2rem; }\\n\\n.messages-content .type-message button {\\n flex: 0 0 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdHlwaW5nLW1lc3NhZ2UvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHR5cGluZy1tZXNzYWdlXFx0eXBpbmctbWVzc2FnZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsV0FBVyxFQUFBOztBQUdiO0VBQ0UsY0FBYztFQUNkLHVCQUF1QjtFQUN2QixxQkFBcUIsRUFBQTs7QUFHdkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLDhCQUE4QjtFQUM5QixZQUFZLEVBQUE7O0FBSmQ7SUFPSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsZUFBZTtJQUNmLG1CQUFtQixFQUFBOztBQVp2QjtNQWVNLGdCQUFnQixFQUFBOztBQWZ0QjtRQWtCUSxrQkFBa0IsRUFBQTs7QUFsQjFCO1FBc0JRLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsY0FBYyxFQUFBOztBQXhCdEI7UUE0QlEsb0JBQW9CLEVBQUE7O0FBNUI1QjtJQWtDSSxhQUFhO0lBQ2IsY0FBYztJQUNkLFdBQVc7SUFDWCxjQUFjLEVBQUE7O0FBckNsQjtNQXdDTSxXQUFXLEVBQUE7O0FBeENqQjtRQTJDUSxrQkFBa0IsRUFBQTs7QUEzQzFCO01BZ0RNLGVBQWUsRUFBQSIsImZpbGUiOiJzcmMvYXBwL3R5cGluZy1tZXNzYWdlL3R5cGluZy1tZXNzYWdlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmhlYWQge1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xyXG4gIG1hcmdpbjogLTNyZW0gLTNyZW0gMDtcclxufVxyXG5cclxuLm1lc3NhZ2VzLWNvbnRlbnQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZmxleC1ncm93OiAxO1xyXG5cclxuICAubWVzc2FnZXMtbGlzdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbWFyZ2luOiAxcmVtIC0zcmVtO1xyXG4gICAgcGFkZGluZzogMCAzcmVtO1xyXG4gICAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuXHJcbiAgICBkaXYge1xyXG4gICAgICBtYXJnaW46IDAuN3JlbSAwO1xyXG5cclxuICAgICAgJi5kYXRlIHtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYubXksICYuYnVkZHkge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBwYWRkaW5nOiAxLjhyZW07XHJcbiAgICAgICAgbWF4LXdpZHRoOiA2MCU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuYnVkZHkge1xyXG4gICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudHlwZS1tZXNzYWdlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4OiAwIDAgYXV0bztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICAgLmlucHV0LWJsb2NrIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcblxyXG4gICAgICA+IHRleHRhcmVhIHtcclxuICAgICAgICBtaW4taGVpZ2h0OiA0LjJyZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBmbGV4OiAwIDAgMTVyZW07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iXX0= */\"","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-typing-message',\r\n templateUrl: './typing-message.component.html',\r\n styleUrls: ['./typing-message.component.scss']\r\n})\r\nexport class TypingMessageComponent implements OnInit {\r\n\r\n messagesId: number;\r\n private subMessages: any;\r\n\r\n constructor(private route: ActivatedRoute) {\r\n this.route.params.subscribe( params => console.log(params) );\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.name}}\\r\\n {{ 'BREADCRUMBS.WALLET_DETAILS' | translate }}\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_REQUIRED' | translate }}\\r\\n
\\r\\n
\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.NAME_DUPLICATE' | translate }}\\r\\n
\\r\\n
\\r\\n
= variablesService.maxWalletNameLength\\\">\\r\\n {{ 'WALLET_DETAILS.FORM_ERRORS.MAX_LENGTH' | translate }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
{{ 'WALLET_DETAILS.SEED_PHRASE_HINT' | translate }}
\\r\\n
\\r\\n \\r\\n
{{(index + 1) + '. ' + word}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n\"","module.exports = \".form-details {\\n margin-top: 1.8rem; }\\n .form-details .input-block:first-child {\\n width: 50%; }\\n .form-details .seed-phrase {\\n display: flex;\\n font-size: 1.4rem;\\n line-height: 1.5rem;\\n padding: 1.4rem;\\n width: 100%;\\n height: 8.8rem; }\\n .form-details .seed-phrase .seed-phrase-hint {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n cursor: pointer;\\n width: 100%;\\n height: 100%; }\\n .form-details .seed-phrase .seed-phrase-content {\\n display: flex;\\n flex-direction: column;\\n flex-wrap: wrap;\\n width: 100%;\\n height: 100%; }\\n .form-details .wallet-buttons {\\n display: flex;\\n align-items: center;\\n justify-content: space-between; }\\n .form-details .wallet-buttons button {\\n margin: 2.9rem 0;\\n width: 100%;\\n max-width: 15rem; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0LWRldGFpbHMvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhcHBcXHdhbGxldC1kZXRhaWxzXFx3YWxsZXQtZGV0YWlscy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQixFQUFBO0VBRHBCO0lBTU0sVUFBVSxFQUFBO0VBTmhCO0lBV0ksYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLFdBQVc7SUFDWCxjQUFjLEVBQUE7RUFoQmxCO01BbUJNLGFBQWE7TUFDYixtQkFBbUI7TUFDbkIsdUJBQXVCO01BQ3ZCLGVBQWU7TUFDZixXQUFXO01BQ1gsWUFBWSxFQUFBO0VBeEJsQjtNQTRCTSxhQUFhO01BQ2Isc0JBQXNCO01BQ3RCLGVBQWU7TUFDZixXQUFXO01BQ1gsWUFBWSxFQUFBO0VBaENsQjtJQXFDSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLDhCQUE4QixFQUFBO0VBdkNsQztNQTBDTSxnQkFBZ0I7TUFDaEIsV0FBVztNQUNYLGdCQUFnQixFQUFBIiwiZmlsZSI6InNyYy9hcHAvd2FsbGV0LWRldGFpbHMvd2FsbGV0LWRldGFpbHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZm9ybS1kZXRhaWxzIHtcclxuICBtYXJnaW4tdG9wOiAxLjhyZW07XHJcblxyXG4gIC5pbnB1dC1ibG9jayB7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc2VlZC1waHJhc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcclxuICAgIHBhZGRpbmc6IDEuNHJlbTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiA4LjhyZW07XHJcblxyXG4gICAgLnNlZWQtcGhyYXNlLWhpbnQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWVkLXBocmFzZS1jb250ZW50IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLndhbGxldC1idXR0b25zIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIG1hcmdpbjogMi45cmVtIDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtYXgtd2lkdGg6IDE1cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19 */\"","import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';\r\nimport {FormGroup, FormControl, Validators} from '@angular/forms';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {Router} from '@angular/router';\r\nimport {Location} from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-wallet-details',\r\n templateUrl: './wallet-details.component.html',\r\n styleUrls: ['./wallet-details.component.scss']\r\n})\r\nexport class WalletDetailsComponent implements OnInit, OnDestroy {\r\n seedPhrase = '';\r\n showSeed = false;\r\n\r\n detailsForm = new FormGroup({\r\n name: new FormControl('', [Validators.required, (g: FormControl) => {\r\n for (let i = 0; i < this.variablesService.wallets.length; i++) {\r\n if (g.value === this.variablesService.wallets[i].name) {\r\n if (this.variablesService.wallets[i].wallet_id === this.variablesService.currentWallet.wallet_id) {\r\n return {'same': true};\r\n } else {\r\n return {'duplicate': true};\r\n }\r\n }\r\n }\r\n return null;\r\n }]),\r\n path: new FormControl('')\r\n });\r\n\r\n constructor(\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private location: Location\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.showSeed = false;\r\n this.detailsForm.get('name').setValue(this.variablesService.currentWallet.name);\r\n this.detailsForm.get('path').setValue(this.variablesService.currentWallet.path);\r\n this.backend.getSmartWalletInfo(this.variablesService.currentWallet.wallet_id, (status, data) => {\r\n if (data.hasOwnProperty('restore_key')) {\r\n this.ngZone.run(() => {\r\n this.seedPhrase = data['restore_key'].trim();\r\n });\r\n }\r\n });\r\n }\r\n\r\n showSeedPhrase() {\r\n this.showSeed = true;\r\n }\r\n\r\n onSubmitEdit() {\r\n if (this.detailsForm.value) {\r\n this.variablesService.currentWallet.name = this.detailsForm.get('name').value;\r\n this.ngZone.run(() => {\r\n this.router.navigate(['/wallet/' + this.variablesService.currentWallet.wallet_id]);\r\n });\r\n }\r\n }\r\n\r\n closeWallet() {\r\n this.backend.closeWallet(this.variablesService.currentWallet.wallet_id, () => {\r\n for (let i = this.variablesService.wallets.length - 1; i >= 0; i--) {\r\n if (this.variablesService.wallets[i].wallet_id === this.variablesService.currentWallet.wallet_id) {\r\n this.variablesService.wallets.splice(i, 1);\r\n }\r\n }\r\n this.backend.storeSecureAppData(() => {\r\n this.ngZone.run(() => {\r\n if (this.variablesService.wallets.length) {\r\n this.variablesService.currentWallet = this.variablesService.wallets[0];\r\n this.router.navigate(['/wallet/' + this.variablesService.currentWallet.wallet_id]);\r\n } else {\r\n this.router.navigate(['/']);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n back() {\r\n this.location.back();\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n

{{variablesService.currentWallet.name}}

\\r\\n \\r\\n \\r\\n
\\r\\n {{variablesService.currentWallet.alias['name']}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.address}}\\r\\n \\r\\n
\\r\\n
\\r\\n {{variablesService.currentWallet.balance | intToMoney : '3'}} {{variablesService.defaultCurrency}}\\r\\n $ {{variablesService.currentWallet.getMoneyEquivalent(variablesService.moneyEquivalent) | intToMoney | number : '1.2-2'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{ tab.title | translate }}\\r\\n {{variablesService.currentWallet.new_contracts}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","module.exports = \":host {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n padding: 0 3rem 3rem;\\n min-width: 95rem;\\n width: 100%;\\n height: 100%; }\\n\\n.header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n flex: 0 0 auto;\\n height: 8rem; }\\n\\n.header > div {\\n display: flex;\\n align-items: center; }\\n\\n.header > div :not(:last-child) {\\n margin-right: 3.2rem; }\\n\\n.header h3 {\\n font-size: 1.7rem;\\n font-weight: 600;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n max-width: 50rem;\\n line-height: 2.7rem; }\\n\\n.header button {\\n display: flex;\\n align-items: center;\\n background: transparent;\\n border: none;\\n cursor: pointer;\\n font-weight: 400;\\n outline: none;\\n padding: 0; }\\n\\n.header button .icon {\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.header button .icon.account {\\n -webkit-mask: url('account.svg') no-repeat center;\\n mask: url('account.svg') no-repeat center; }\\n\\n.header button .icon.details {\\n -webkit-mask: url('details.svg') no-repeat center;\\n mask: url('details.svg') no-repeat center; }\\n\\n.header button .icon.lock {\\n -webkit-mask: url('lock.svg') no-repeat center;\\n mask: url('lock.svg') no-repeat center; }\\n\\n.header .alias {\\n display: flex;\\n align-items: center;\\n font-size: 1.3rem; }\\n\\n.header .alias .icon {\\n cursor: pointer;\\n margin-right: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.header .alias .icon.edit {\\n -webkit-mask: url('details.svg') no-repeat center;\\n mask: url('details.svg') no-repeat center; }\\n\\n.header .alias .icon.transfer {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.address {\\n display: flex;\\n align-items: center;\\n flex: 0 0 auto;\\n font-size: 1.4rem;\\n line-height: 1.7rem; }\\n\\n.address .icon {\\n cursor: pointer;\\n margin-left: 1.2rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.address .icon.copy {\\n -webkit-mask: url('copy.svg') no-repeat center;\\n mask: url('copy.svg') no-repeat center; }\\n\\n.address .icon.copy:hover {\\n opacity: 0.75; }\\n\\n.address .icon.copied {\\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\\n mask: url('complete-testwallet.svg') no-repeat center; }\\n\\n.balance {\\n display: flex;\\n align-items: flex-end;\\n justify-content: flex-start;\\n flex: 0 0 auto;\\n margin: 2.6rem 0; }\\n\\n.balance :first-child {\\n font-size: 3.3rem;\\n font-weight: 600;\\n line-height: 2.4rem;\\n margin-right: 3.5rem; }\\n\\n.balance :last-child {\\n font-size: 1.8rem;\\n font-weight: 600;\\n line-height: 1.3rem; }\\n\\n.tabs {\\n display: flex;\\n flex-direction: column;\\n flex: 1 1 auto; }\\n\\n.tabs .tabs-header {\\n display: flex;\\n justify-content: space-between;\\n flex: 0 0 auto; }\\n\\n.tabs .tabs-header .tab {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1 0 auto;\\n cursor: pointer;\\n padding: 0 1rem;\\n height: 5rem; }\\n\\n.tabs .tabs-header .tab .icon {\\n margin-right: 1.3rem;\\n width: 1.7rem;\\n height: 1.7rem; }\\n\\n.tabs .tabs-header .tab .icon.send {\\n -webkit-mask: url('send.svg') no-repeat center;\\n mask: url('send.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.receive {\\n -webkit-mask: url('receive.svg') no-repeat center;\\n mask: url('receive.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.history {\\n -webkit-mask: url('history.svg') no-repeat center;\\n mask: url('history.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.contracts {\\n -webkit-mask: url('contracts.svg') no-repeat center;\\n mask: url('contracts.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.messages {\\n -webkit-mask: url('message.svg') no-repeat center;\\n mask: url('message.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .icon.staking {\\n -webkit-mask: url('staking.svg') no-repeat center;\\n mask: url('staking.svg') no-repeat center; }\\n\\n.tabs .tabs-header .tab .indicator {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: 1rem;\\n font-size: 1rem;\\n font-weight: 600;\\n margin-left: 1.3rem;\\n padding: 0 0.5rem;\\n min-width: 1.6rem;\\n height: 1.6rem; }\\n\\n.tabs .tabs-header .tab.disabled {\\n cursor: not-allowed; }\\n\\n.tabs .tabs-header .tab:not(:last-child) {\\n margin-right: 0.3rem; }\\n\\n.tabs .tabs-content {\\n display: flex;\\n padding: 3rem;\\n flex: 1 1 auto;\\n overflow-x: hidden;\\n overflow-y: overlay; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvd2FsbGV0L0Q6XFx6YW5vX3phbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXBwXFx3YWxsZXRcXHdhbGxldC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGtCQUFrQjtFQUNsQixhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLG9CQUFvQjtFQUNwQixnQkFBZ0I7RUFDaEIsV0FBVztFQUNYLFlBQVksRUFBQTs7QUFHZDtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsOEJBQThCO0VBQzlCLGNBQWM7RUFDZCxZQUFZLEVBQUE7O0FBTGQ7SUFRSSxhQUFhO0lBQ2IsbUJBQW1CLEVBQUE7O0FBVHZCO01BWU0sb0JBQW9CLEVBQUE7O0FBWjFCO0lBaUJJLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsdUJBQXVCO0lBQ3ZCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLG1CQUFtQixFQUFBOztBQXZCdkI7SUEyQkksYUFBYTtJQUNiLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLFVBQVUsRUFBQTs7QUFsQ2Q7TUFxQ00sb0JBQW9CO01BQ3BCLGFBQWE7TUFDYixjQUFjLEVBQUE7O0FBdkNwQjtRQTBDUSxpREFBMEQ7Z0JBQTFELHlDQUEwRCxFQUFBOztBQTFDbEU7UUE4Q1EsaURBQTBEO2dCQUExRCx5Q0FBMEQsRUFBQTs7QUE5Q2xFO1FBa0RRLDhDQUF1RDtnQkFBdkQsc0NBQXVELEVBQUE7O0FBbEQvRDtJQXdESSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLGlCQUFpQixFQUFBOztBQTFEckI7TUE2RE0sZUFBZTtNQUNmLG9CQUFvQjtNQUNwQixhQUFhO01BQ2IsY0FBYyxFQUFBOztBQWhFcEI7UUFtRVEsaURBQTBEO2dCQUExRCx5Q0FBMEQsRUFBQTs7QUFuRWxFO1FBdUVRLDhDQUF1RDtnQkFBdkQsc0NBQXVELEVBQUE7O0FBTS9EO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixjQUFjO0VBQ2QsaUJBQWlCO0VBQ2pCLG1CQUFtQixFQUFBOztBQUxyQjtJQVFJLGVBQWU7SUFDZixtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLGNBQWMsRUFBQTs7QUFYbEI7TUFjTSw4Q0FBdUQ7Y0FBdkQsc0NBQXVELEVBQUE7O0FBZDdEO1FBaUJRLGFBQWEsRUFBQTs7QUFqQnJCO01Bc0JNLDZEQUFzRTtjQUF0RSxxREFBc0UsRUFBQTs7QUFLNUU7RUFDRSxhQUFhO0VBQ2IscUJBQXFCO0VBQ3JCLDJCQUEyQjtFQUMzQixjQUFjO0VBQ2QsZ0JBQWdCLEVBQUE7O0FBTGxCO0lBUUksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixtQkFBbUI7SUFDbkIsb0JBQW9CLEVBQUE7O0FBWHhCO0lBZUksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixtQkFBbUIsRUFBQTs7QUFJdkI7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLGNBQWMsRUFBQTs7QUFIaEI7SUFNSSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLGNBQWMsRUFBQTs7QUFSbEI7TUFXTSxhQUFhO01BQ2IsbUJBQW1CO01BQ25CLHVCQUF1QjtNQUN2QixjQUFjO01BQ2QsZUFBZTtNQUNmLGVBQWU7TUFDZixZQUFZLEVBQUE7O0FBakJsQjtRQW9CUSxvQkFBb0I7UUFDcEIsYUFBYTtRQUNiLGNBQWMsRUFBQTs7QUF0QnRCO1VBeUJVLDhDQUF1RDtrQkFBdkQsc0NBQXVELEVBQUE7O0FBekJqRTtVQTZCVSxpREFBMEQ7a0JBQTFELHlDQUEwRCxFQUFBOztBQTdCcEU7VUFpQ1UsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUFqQ3BFO1VBcUNVLG1EQUE0RDtrQkFBNUQsMkNBQTRELEVBQUE7O0FBckN0RTtVQXlDVSxpREFBMEQ7a0JBQTFELHlDQUEwRCxFQUFBOztBQXpDcEU7VUE2Q1UsaURBQTBEO2tCQUExRCx5Q0FBMEQsRUFBQTs7QUE3Q3BFO1FBa0RRLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLG1CQUFtQjtRQUNuQixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGNBQWMsRUFBQTs7QUEzRHRCO1FBK0RRLG1CQUFtQixFQUFBOztBQS9EM0I7UUFtRVEsb0JBQW9CLEVBQUE7O0FBbkU1QjtJQXlFSSxhQUFhO0lBQ2IsYUFBYTtJQUNiLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsbUJBQW1CLEVBQUEiLCJmaWxlIjoic3JjL2FwcC93YWxsZXQvd2FsbGV0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOmhvc3Qge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgcGFkZGluZzogMCAzcmVtIDNyZW07XHJcbiAgbWluLXdpZHRoOiA5NXJlbTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbi5oZWFkZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZmxleDogMCAwIGF1dG87XHJcbiAgaGVpZ2h0OiA4cmVtO1xyXG5cclxuICA+IGRpdiB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICA6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMy4ycmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaDMge1xyXG4gICAgZm9udC1zaXplOiAxLjdyZW07XHJcbiAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG1heC13aWR0aDogNTByZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi43cmVtO1xyXG4gIH1cclxuXHJcbiAgYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDEuMnJlbTtcclxuICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAmLmFjY291bnQge1xyXG4gICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvYWNjb3VudC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZGV0YWlscyB7XHJcbiAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9kZXRhaWxzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5sb2NrIHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2xvY2suc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWxpYXMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmb250LXNpemU6IDEuM3JlbTtcclxuXHJcbiAgICAuaWNvbiB7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxLjJyZW07XHJcbiAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgIGhlaWdodDogMS43cmVtO1xyXG5cclxuICAgICAgJi5lZGl0IHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL2RldGFpbHMuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLnRyYW5zZmVyIHtcclxuICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYWRkcmVzcyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gIC5pY29uIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XHJcbiAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgJi5jb3B5IHtcclxuICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9jb3B5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmNvcGllZCB7XHJcbiAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29tcGxldGUtdGVzdHdhbGxldC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYmFsYW5jZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gIGZsZXg6IDAgMCBhdXRvO1xyXG4gIG1hcmdpbjogMi42cmVtIDA7XHJcblxyXG4gIDpmaXJzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDMuM3JlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAzLjVyZW07XHJcbiAgfVxyXG5cclxuICA6bGFzdC1jaGlsZCB7XHJcbiAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLnRhYnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuXHJcbiAgLnRhYnMtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4OiAwIDAgYXV0bztcclxuXHJcbiAgICAudGFiIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGZsZXg6IDEgMCBhdXRvO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgICAgaGVpZ2h0OiA1cmVtO1xyXG5cclxuICAgICAgLmljb24ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMS4zcmVtO1xyXG4gICAgICAgIHdpZHRoOiAxLjdyZW07XHJcbiAgICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcblxyXG4gICAgICAgICYuc2VuZCB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3NlbmQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5yZWNlaXZlIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvcmVjZWl2ZS5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmhpc3Rvcnkge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9oaXN0b3J5LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuY29udHJhY3RzIHtcclxuICAgICAgICAgIG1hc2s6IHVybCguLi8uLi9hc3NldHMvaWNvbnMvY29udHJhY3RzLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubWVzc2FnZXMge1xyXG4gICAgICAgICAgbWFzazogdXJsKC4uLy4uL2Fzc2V0cy9pY29ucy9tZXNzYWdlLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuc3Rha2luZyB7XHJcbiAgICAgICAgICBtYXNrOiB1cmwoLi4vLi4vYXNzZXRzL2ljb25zL3N0YWtpbmcuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmluZGljYXRvciB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XHJcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuM3JlbTtcclxuICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcclxuICAgICAgICBtaW4td2lkdGg6IDEuNnJlbTtcclxuICAgICAgICBoZWlnaHQ6IDEuNnJlbTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuM3JlbTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnRhYnMtY29udGVudCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgcGFkZGluZzogM3JlbTtcclxuICAgIGZsZXg6IDEgMSBhdXRvO1xyXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xyXG4gICAgb3ZlcmZsb3cteTogb3ZlcmxheTtcclxuICB9XHJcbn1cclxuIl19 */\"","import {Component, OnInit, OnDestroy, NgZone, ViewChild, ElementRef} from '@angular/core';\r\nimport {ActivatedRoute, Router, RoutesRecognized} from '@angular/router';\r\nimport {VariablesService} from '../_helpers/services/variables.service';\r\nimport {BackendService} from '../_helpers/services/backend.service';\r\nimport {TranslateService} from '@ngx-translate/core';\r\nimport {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-wallet',\r\n templateUrl: './wallet.component.html',\r\n styleUrls: ['./wallet.component.scss']\r\n})\r\nexport class WalletComponent implements OnInit, OnDestroy {\r\n subRouting1;\r\n subRouting2;\r\n walletID;\r\n copyAnimation = false;\r\n copyAnimationTimeout;\r\n\r\n @ViewChild('scrolledContent') private scrolledContent: ElementRef;\r\n\r\n tabs = [\r\n {\r\n title: 'WALLET.TABS.HISTORY',\r\n icon: 'history',\r\n link: '/history',\r\n indicator: false,\r\n active: true\r\n },\r\n {\r\n title: 'WALLET.TABS.SEND',\r\n icon: 'send',\r\n link: '/send',\r\n indicator: false,\r\n active: false\r\n },\r\n {\r\n title: 'WALLET.TABS.RECEIVE',\r\n icon: 'receive',\r\n link: '/receive',\r\n indicator: false,\r\n active: false\r\n },\r\n {\r\n title: 'WALLET.TABS.CONTRACTS',\r\n icon: 'contracts',\r\n link: '/contracts',\r\n indicator: 1,\r\n active: false\r\n },\r\n /*{\r\n title: 'WALLET.TABS.MESSAGES',\r\n icon: 'messages',\r\n link: '/messages',\r\n indicator: 32,\r\n active: false\r\n },*/\r\n {\r\n title: 'WALLET.TABS.STAKING',\r\n icon: 'staking',\r\n link: '/staking',\r\n indicator: false,\r\n active: false\r\n }\r\n ];\r\n aliasSubscription: Subscription;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private backend: BackendService,\r\n private variablesService: VariablesService,\r\n private ngZone: NgZone,\r\n private translate: TranslateService,\r\n private intToMoneyPipe: IntToMoneyPipe\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.subRouting1 = this.route.params.subscribe(params => {\r\n this.walletID = +params['id'];\r\n this.variablesService.setCurrentWallet(this.walletID);\r\n this.scrolledContent.nativeElement.scrollTop = 0;\r\n clearTimeout(this.copyAnimationTimeout);\r\n this.copyAnimation = false;\r\n });\r\n this.subRouting2 = this.router.events.subscribe(val => {\r\n if (val instanceof RoutesRecognized) {\r\n if ( val.state.root.firstChild && val.state.root.firstChild.firstChild ) {\r\n for (let i = 0; i < this.tabs.length; i++) {\r\n this.tabs[i].active = (this.tabs[i].link === '/' + val.state.root.firstChild.firstChild.url[0].path);\r\n }\r\n }\r\n }\r\n });\r\n if (this.variablesService.currentWallet.alias.hasOwnProperty('name')) {\r\n this.variablesService.currentWallet.wakeAlias = false;\r\n }\r\n this.aliasSubscription = this.variablesService.getAliasChangedEvent.subscribe(() => {\r\n if (this.variablesService.currentWallet.alias.hasOwnProperty('name')) {\r\n this.variablesService.currentWallet.wakeAlias = false;\r\n }\r\n });\r\n }\r\n\r\n changeTab(index) {\r\n if ((this.tabs[index].link === '/send' || this.tabs[index].link === '/contracts' || this.tabs[index].link === '/staking') && this.variablesService.daemon_state !== 2) {\r\n return;\r\n }\r\n this.tabs.forEach((tab) => {\r\n tab.active = false;\r\n });\r\n this.tabs[index].active = true;\r\n this.ngZone.run( () => {\r\n this.scrolledContent.nativeElement.scrollTop = 0;\r\n this.router.navigate(['wallet/' + this.walletID + this.tabs[index].link]);\r\n });\r\n }\r\n\r\n copyAddress() {\r\n this.backend.setClipboard(this.variablesService.currentWallet.address);\r\n this.copyAnimation = true;\r\n this.copyAnimationTimeout = window.setTimeout(() => {\r\n this.copyAnimation = false;\r\n }, 2000);\r\n }\r\n\r\n getTooltip() {\r\n const tooltip = document.createElement('div');\r\n const available = document.createElement('span');\r\n available.setAttribute('class', 'available');\r\n available.innerHTML = this.translate.instant('WALLET.AVAILABLE_BALANCE', {available: this.intToMoneyPipe.transform(this.variablesService.currentWallet.unlocked_balance), currency: this.variablesService.defaultCurrency});\r\n tooltip.appendChild(available);\r\n const locked = document.createElement('span');\r\n locked.setAttribute('class', 'locked');\r\n locked.innerHTML = this.translate.instant('WALLET.LOCKED_BALANCE', {locked: this.intToMoneyPipe.transform(this.variablesService.currentWallet.balance.minus(this.variablesService.currentWallet.unlocked_balance)), currency: this.variablesService.defaultCurrency});\r\n tooltip.appendChild(locked);\r\n const link = document.createElement('span');\r\n link.setAttribute('class', 'link');\r\n link.innerHTML = this.translate.instant('WALLET.LOCKED_BALANCE_LINK');\r\n link.addEventListener('click', () => {\r\n this.openInBrowser('docs.zano.org/docs/locked-balance');\r\n });\r\n tooltip.appendChild(link);\r\n return tooltip;\r\n }\r\n\r\n openInBrowser(link) {\r\n this.backend.openUrlInBrowser(link);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subRouting1.unsubscribe();\r\n this.subRouting2.unsubscribe();\r\n this.aliasSubscription.unsubscribe();\r\n clearTimeout(this.copyAnimationTimeout);\r\n }\r\n\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/src/gui/qt-daemon/html/polyfills.js b/src/gui/qt-daemon/html/polyfills.js index 68d4dcae..95744b12 100644 --- a/src/gui/qt-daemon/html/polyfills.js +++ b/src/gui/qt-daemon/html/polyfills.js @@ -649,7 +649,7 @@ module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { /*! no static exports found */ /***/ (function(module, exports) { -var core = module.exports = { version: '2.6.1' }; +var core = module.exports = { version: '2.6.2' }; if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef @@ -1807,7 +1807,7 @@ var store = global[SHARED] || (global[SHARED] = {}); })('versions', []).push({ version: core.version, mode: __webpack_require__(/*! ./_library */ "./node_modules/core-js/modules/_library.js") ? 'pure' : 'global', - copyright: '© 2018 Denis Pushkarev (zloirock.ru)' + copyright: '© 2019 Denis Pushkarev (zloirock.ru)' }); @@ -2364,7 +2364,6 @@ $metadata.exp({ metadata: function metadata(metadataKey, metadataValue) { * found in the LICENSE file at https://angular.io/license */ var Zone$1 = (function (global) { - var FUNCTION = 'function'; var performance = global['performance']; function mark(name) { performance && performance['mark'] && performance['mark'](name); @@ -2373,12 +2372,26 @@ var Zone$1 = (function (global) { performance && performance['measure'] && performance['measure'](name, label); } mark('Zone'); + var checkDuplicate = global[('__zone_symbol__forceDuplicateZoneCheck')] === true; if (global['Zone']) { - throw new Error('Zone already loaded.'); + // if global['Zone'] already exists (maybe zone.js was already loaded or + // some other lib also registered a global object named Zone), we may need + // to throw an error, but sometimes user may not want this error. + // For example, + // we have two web pages, page1 includes zone.js, page2 doesn't. + // and the 1st time user load page1 and page2, everything work fine, + // but when user load page2 again, error occurs because global['Zone'] already exists. + // so we add a flag to let user choose whether to throw this error or not. + // By default, if existing Zone is from zone.js, we will not throw the error. + if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') { + throw new Error('Zone already loaded.'); + } + else { + return global['Zone']; + } } var Zone = /** @class */ (function () { function Zone(parent, zoneSpec) { - this._properties = null; this._parent = parent; this._name = zoneSpec ? zoneSpec.name || 'unnamed' : ''; this._properties = zoneSpec && zoneSpec.properties || {}; @@ -2421,7 +2434,9 @@ var Zone$1 = (function (global) { }); Zone.__load_patch = function (name, fn) { if (patches.hasOwnProperty(name)) { - throw Error('Already loaded patch: ' + name); + if (checkDuplicate) { + throw Error('Already loaded patch: ' + name); + } } else if (!global['__Zone_disable_' + name]) { var perfName = 'Zone:' + name; @@ -2465,7 +2480,7 @@ var Zone$1 = (function (global) { return this._zoneDelegate.fork(this, zoneSpec); }; Zone.prototype.wrap = function (callback, source) { - if (typeof callback !== FUNCTION) { + if (typeof callback !== 'function') { throw new Error('Expecting function got: ' + callback); } var _callback = this._zoneDelegate.intercept(this, callback, source); @@ -2475,9 +2490,6 @@ var Zone$1 = (function (global) { }; }; Zone.prototype.run = function (callback, applyThis, applyArgs, source) { - if (applyThis === void 0) { applyThis = undefined; } - if (applyArgs === void 0) { applyArgs = null; } - if (source === void 0) { source = null; } _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; try { return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source); @@ -2488,8 +2500,6 @@ var Zone$1 = (function (global) { }; Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) { if (applyThis === void 0) { applyThis = null; } - if (applyArgs === void 0) { applyArgs = null; } - if (source === void 0) { source = null; } _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; try { try { @@ -2513,10 +2523,7 @@ var Zone$1 = (function (global) { // https://github.com/angular/zone.js/issues/778, sometimes eventTask // will run in notScheduled(canceled) state, we should not try to // run such kind of task but just return - // we have to define an variable here, if not - // typescript compiler will complain below - var isNotScheduled = task.state === notScheduled; - if (isNotScheduled && task.type === eventTask) { + if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) { return; } var reEntryGuard = task.state != running; @@ -2527,7 +2534,7 @@ var Zone$1 = (function (global) { _currentZoneFrame = { parent: _currentZoneFrame, zone: this }; try { if (task.type == macroTask && task.data && !task.data.isPeriodic) { - task.cancelFn = null; + task.cancelFn = undefined; } try { return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs); @@ -2563,8 +2570,7 @@ var Zone$1 = (function (global) { var newZone = this; while (newZone) { if (newZone === task.zone) { - throw Error("can not reschedule task to " + this - .name + " which is descendants of the original zone " + task.zone.name); + throw Error("can not reschedule task to " + this.name + " which is descendants of the original zone " + task.zone.name); } newZone = newZone.parent; } @@ -2594,7 +2600,7 @@ var Zone$1 = (function (global) { return task; }; Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) { - return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, null)); + return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined)); }; Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) { return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel)); @@ -2635,16 +2641,14 @@ var Zone$1 = (function (global) { }()); var DELEGATE_ZS = { name: '', - onHasTask: function (delegate, _, target, hasTaskState) { - return delegate.hasTask(target, hasTaskState); - }, + onHasTask: function (delegate, _, target, hasTaskState) { return delegate.hasTask(target, hasTaskState); }, onScheduleTask: function (delegate, _, target, task) { return delegate.scheduleTask(target, task); }, - onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) { return delegate.invokeTask(target, task, applyThis, applyArgs); }, - onCancelTask: function (delegate, _, target, task) { - return delegate.cancelTask(target, task); - } + onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) { + return delegate.invokeTask(target, task, applyThis, applyArgs); + }, + onCancelTask: function (delegate, _, target, task) { return delegate.cancelTask(target, task); } }; var ZoneDelegate = /** @class */ (function () { function ZoneDelegate(zone, parentDelegate, zoneSpec) { @@ -2672,8 +2676,8 @@ var Zone$1 = (function (global) { zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone); this._scheduleTaskZS = zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS); - this._scheduleTaskDlgt = - zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); + this._scheduleTaskDlgt = zoneSpec && + (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt); this._scheduleTaskCurrZone = zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone); this._invokeTaskZS = @@ -2728,8 +2732,7 @@ var Zone$1 = (function (global) { callback; }; ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) { - return this._invokeZS ? - this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : + return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) : callback.apply(applyThis, applyArgs); }; ZoneDelegate.prototype.handleError = function (targetZone, error) { @@ -2761,8 +2764,7 @@ var Zone$1 = (function (global) { return returnTask; }; ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) { - return this._invokeTaskZS ? - this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : + return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) : task.callback.apply(applyThis, applyArgs); }; ZoneDelegate.prototype.cancelTask = function (targetZone, task) { @@ -2782,7 +2784,7 @@ var Zone$1 = (function (global) { // hasTask should not throw error so other ZoneDelegate // can still trigger hasTask callback try { - return this._hasTaskZS && + this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty); } catch (err) { @@ -2872,14 +2874,12 @@ var Zone$1 = (function (global) { } } else { - throw new Error(this.type + " '" + this.source + "': can not transition to '" + toState + "', expecting state '" + fromState1 + "'" + (fromState2 ? - ' or \'' + fromState2 + '\'' : - '') + ", was '" + this._state + "'."); + throw new Error(this.type + " '" + this.source + "': can not transition to '" + toState + "', expecting state '" + fromState1 + "'" + (fromState2 ? ' or \'' + fromState2 + '\'' : '') + ", was '" + this._state + "'."); } }; ZoneTask.prototype.toString = function () { if (this.data && typeof this.data.handleId !== 'undefined') { - return this.data.handleId; + return this.data.handleId.toString(); } else { return Object.prototype.toString.call(this); @@ -2920,7 +2920,13 @@ var Zone$1 = (function (global) { } } if (nativeMicroTaskQueuePromise) { - nativeMicroTaskQueuePromise[symbolThen](drainMicroTaskQueue); + var nativeThen = nativeMicroTaskQueuePromise[symbolThen]; + if (!nativeThen) { + // native Promise is not patchable, we need to use `then` directly + // issue 1078 + nativeThen = nativeMicroTaskQueuePromise['then']; + } + nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue); } else { global[symbolSetTimeout](drainMicroTaskQueue, 0); @@ -2967,12 +2973,13 @@ var Zone$1 = (function (global) { patchEventTarget: function () { return []; }, patchOnProperties: noop, patchMethod: function () { return noop; }, - bindArguments: function () { return null; }, + bindArguments: function () { return []; }, + patchThen: function () { return noop; }, setNativePromise: function (NativePromise) { // sometimes NativePromise.resolve static function // is not ready yet, (such as core-js/es6.promise) // so we need to check here. - if (NativePromise && typeof NativePromise.resolve === FUNCTION) { + if (NativePromise && typeof NativePromise.resolve === 'function') { nativeMicroTaskQueuePromise = NativePromise.resolve(0); } }, @@ -2988,6 +2995,16 @@ var Zone$1 = (function (global) { return global['Zone'] = Zone; })(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); +var __values = (undefined && undefined.__values) || function (o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; +}; Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; var ObjectDefineProperty = Object.defineProperty; @@ -3130,7 +3147,7 @@ Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { var queue = promise[symbolValue]; promise[symbolValue] = value; if (promise[symbolFinally] === symbolFinally) { - // the promise is generated by Promise.prototype.finally + // the promise is generated by Promise.prototype.finally if (state === RESOLVED) { // the state is resolved, should ignore the value // and use parent promise value @@ -3214,7 +3231,9 @@ Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { chainPromise[symbolParentPromiseState] = promiseState; } // should not pass value to finally callback - var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]); + var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? + [] : + [parentPromiseValue]); resolvePromise(chainPromise, true, value); } catch (error) { @@ -3249,6 +3268,7 @@ Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { return resolvePromise(new this(null), REJECTED, error); }; ZoneAwarePromise.race = function (values) { + var e_1, _a; var resolve; var reject; var promise = new this(function (res, rej) { @@ -3261,40 +3281,70 @@ Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { function onReject(error) { promise && (promise = false || reject(error)); } - for (var _i = 0, values_1 = values; _i < values_1.length; _i++) { - var value = values_1[_i]; - if (!isThenable(value)) { - value = this.resolve(value); + try { + for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) { + var value = values_1_1.value; + if (!isThenable(value)) { + value = this.resolve(value); + } + value.then(onResolve, onReject); } - value.then(onResolve, onReject); + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1); + } + finally { if (e_1) throw e_1.error; } } return promise; }; ZoneAwarePromise.all = function (values) { + var e_2, _a; var resolve; var reject; var promise = new this(function (res, rej) { resolve = res; reject = rej; }); - var count = 0; + // Start at 2 to prevent prematurely resolving if .then is called immediately. + var unresolvedCount = 2; + var valueIndex = 0; var resolvedValues = []; - for (var _i = 0, values_2 = values; _i < values_2.length; _i++) { - var value = values_2[_i]; + var _loop_2 = function (value) { if (!isThenable(value)) { - value = this.resolve(value); + value = this_1.resolve(value); } - value.then((function (index) { return function (value) { - resolvedValues[index] = value; - count--; - if (!count) { + var curValueIndex = valueIndex; + value.then(function (value) { + resolvedValues[curValueIndex] = value; + unresolvedCount--; + if (unresolvedCount === 0) { resolve(resolvedValues); } - }; })(count), reject); - count++; + }, reject); + unresolvedCount++; + valueIndex++; + }; + var this_1 = this; + try { + for (var values_2 = __values(values), values_2_1 = values_2.next(); !values_2_1.done; values_2_1 = values_2.next()) { + var value = values_2_1.value; + _loop_2(value); + } } - if (!count) + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (values_2_1 && !values_2_1.done && (_a = values_2.return)) _a.call(values_2); + } + finally { if (e_2) throw e_2.error; } + } + // Make the unresolvedCount zero-based again. + unresolvedCount -= 2; + if (unresolvedCount === 0) { resolve(resolvedValues); + } return promise; }; ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) { @@ -3390,31 +3440,112 @@ Zone.__load_patch('ZoneAwarePromise', function (global, Zone, api) { }; Ctor[symbolThenPatched] = true; } - function zoneify(fn) { - return function () { - var resultPromise = fn.apply(this, arguments); - if (resultPromise instanceof ZoneAwarePromise) { - return resultPromise; - } - var ctor = resultPromise.constructor; - if (!ctor[symbolThenPatched]) { - patchThen(ctor); - } - return resultPromise; - }; - } + api.patchThen = patchThen; if (NativePromise) { patchThen(NativePromise); - var fetch_1 = global['fetch']; - if (typeof fetch_1 == 'function') { - global['fetch'] = zoneify(fetch_1); - } } // This is not part of public API, but it is useful for tests, so we expose it. Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors; return ZoneAwarePromise; }); +/** + * @license + * Copyright Google Inc. All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +Zone.__load_patch('fetch', function (global, Zone, api) { + var fetch = global['fetch']; + var ZoneAwarePromise = global.Promise; + var symbolThenPatched = api.symbol('thenPatched'); + var fetchTaskScheduling = api.symbol('fetchTaskScheduling'); + var fetchTaskAborting = api.symbol('fetchTaskAborting'); + if (typeof fetch !== 'function') { + return; + } + var OriginalAbortController = global['AbortController']; + var supportAbort = typeof OriginalAbortController === 'function'; + var abortNative = null; + if (supportAbort) { + global['AbortController'] = function () { + var abortController = new OriginalAbortController(); + var signal = abortController.signal; + signal.abortController = abortController; + return abortController; + }; + abortNative = api.patchMethod(OriginalAbortController.prototype, 'abort', function (delegate) { return function (self, args) { + if (self.task) { + return self.task.zone.cancelTask(self.task); + } + return delegate.apply(self, args); + }; }); + } + var placeholder = function () { }; + global['fetch'] = function () { + var _this = this; + var args = Array.prototype.slice.call(arguments); + var options = args.length > 1 ? args[1] : null; + var signal = options && options.signal; + return new Promise(function (res, rej) { + var task = Zone.current.scheduleMacroTask('fetch', placeholder, args, function () { + var fetchPromise; + var zone = Zone.current; + try { + zone[fetchTaskScheduling] = true; + fetchPromise = fetch.apply(_this, args); + } + catch (error) { + rej(error); + return; + } + finally { + zone[fetchTaskScheduling] = false; + } + if (!(fetchPromise instanceof ZoneAwarePromise)) { + var ctor = fetchPromise.constructor; + if (!ctor[symbolThenPatched]) { + api.patchThen(ctor); + } + } + fetchPromise.then(function (resource) { + if (task.state !== 'notScheduled') { + task.invoke(); + } + res(resource); + }, function (error) { + if (task.state !== 'notScheduled') { + task.invoke(); + } + rej(error); + }); + }, function () { + if (!supportAbort) { + rej('No AbortController supported, can not cancel fetch'); + return; + } + if (signal && signal.abortController && !signal.aborted && + typeof signal.abortController.abort === 'function' && abortNative) { + try { + Zone.current[fetchTaskAborting] = true; + abortNative.call(signal.abortController); + } + finally { + Zone.current[fetchTaskAborting] = false; + } + } + else { + rej('cancel fetch need a AbortController.signal'); + } + }); + if (signal && signal.abortController) { + signal.abortController.task = task; + } + }); + }; +}); + /** * @license * Copyright Google Inc. All Rights Reserved. @@ -3530,9 +3661,23 @@ var wrapFn = function (event) { } var target = this || event.target || _global; var listener = target[eventNameSymbol]; - var result = listener && listener.apply(this, arguments); - if (result != undefined && !result) { - event.preventDefault(); + var result; + if (isBrowser && target === internalWindow && event.type === 'error') { + // window.onerror have different signiture + // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror + // and onerror callback will prevent default when callback return true + var errorEvent = event; + result = listener && + listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error); + if (result === true) { + event.preventDefault(); + } + } + else { + result = listener && listener.apply(this, arguments); + if (result != undefined && !result) { + event.preventDefault(); + } } return result; }; @@ -3550,6 +3695,10 @@ function patchProperty(obj, prop, prototype) { if (!desc || !desc.configurable) { return; } + var onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched'); + if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) { + return; + } // A property descriptor cannot have getter/setter and be writable // deleting the writable and value properties avoids this error: // @@ -3627,6 +3776,7 @@ function patchProperty(obj, prop, prototype) { return null; }; ObjectDefineProperty(obj, prop, desc); + obj[onPropPatchedSymbol] = true; } function patchOnProperties(obj, properties, prototype) { if (properties) { @@ -3717,6 +3867,31 @@ function patchClass(className) { } } } +function copySymbolProperties(src, dest) { + if (typeof Object.getOwnPropertySymbols !== 'function') { + return; + } + var symbols = Object.getOwnPropertySymbols(src); + symbols.forEach(function (symbol) { + var desc = Object.getOwnPropertyDescriptor(src, symbol); + Object.defineProperty(dest, symbol, { + get: function () { + return src[symbol]; + }, + set: function (value) { + if (desc && (!desc.writable || typeof desc.set !== 'function')) { + // if src[symbol] is not writable or not have a setter, just return + return; + } + src[symbol] = value; + }, + enumerable: desc ? desc.enumerable : true, + configurable: desc ? desc.configurable : true + }); + }); +} +var shouldCopySymbolProperties = false; + function patchMethod(target, name, patchFn) { var proto = target; while (proto && !proto.hasOwnProperty(name)) { @@ -3727,7 +3902,7 @@ function patchMethod(target, name, patchFn) { proto = target; } var delegateName = zoneSymbol(name); - var delegate; + var delegate = null; if (proto && !(delegate = proto[delegateName])) { delegate = proto[delegateName] = proto[name]; // check whether proto[name] is writable @@ -3739,6 +3914,9 @@ function patchMethod(target, name, patchFn) { return patchDelegate_1(this, arguments); }; attachOriginToPatched(proto[name], delegate); + if (shouldCopySymbolProperties) { + copySymbolProperties(delegate, proto[name]); + } } } return delegate; @@ -3757,7 +3935,7 @@ function patchMacroTask(obj, funcName, metaCreator) { setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) { var meta = metaCreator(self, args); if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') { - return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask, null); + return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask); } else { // cause an error by calling it directly. @@ -3771,6 +3949,17 @@ function attachOriginToPatched(patched, original) { } var isDetectedIEOrEdge = false; var ieOrEdge = false; +function isIE() { + try { + var ua = internalWindow.navigator.userAgent; + if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) { + return true; + } + } + catch (error) { + } + return false; +} function isIEOrEdge() { if (isDetectedIEOrEdge) { return ieOrEdge; @@ -3852,6 +4041,21 @@ Zone.__load_patch('toString', function (global) { * @fileoverview * @suppress {missingRequire} */ +var passiveSupported = false; +if (typeof window !== 'undefined') { + try { + var options = Object.defineProperty({}, 'passive', { + get: function () { + passiveSupported = true; + } + }); + window.addEventListener('test', options, options); + window.removeEventListener('test', options, options); + } + catch (err) { + passiveSupported = false; + } +} // an identifier to tell ZoneTask do not create a new invoke closure var OPTIMIZED_ZONE_EVENT_TASK_DATA = { useG: true @@ -3987,6 +4191,7 @@ function patchEventTarget(_global, apis, patchOptions) { if (proto[zoneSymbolAddEventListener]) { return false; } + var eventNameToString = patchOptions && patchOptions.eventNameToString; // a shared global taskData to pass data for scheduleEventTask // so we do not need to create a new object just for pass some data var taskData = {}; @@ -4002,12 +4207,24 @@ function patchEventTarget(_global, apis, patchOptions) { nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] = proto[patchOptions.prepend]; } - var customScheduleGlobal = function () { + function checkIsPassive(task) { + if (!passiveSupported && typeof taskData.options !== 'boolean' && + typeof taskData.options !== 'undefined' && taskData.options !== null) { + // options is a non-null non-undefined object + // passive is not supported + // don't pass options as object + // just pass capture as a boolean + task.options = !!taskData.options.capture; + taskData.options = task.options; + } + } + var customScheduleGlobal = function (task) { // if there is already a task for the eventName + capture, // just return, because we use the shared globalZoneAwareCallback here. if (taskData.isExisting) { return; } + checkIsPassive(task); return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options); }; var customCancelGlobal = function (task) { @@ -4048,6 +4265,7 @@ function patchEventTarget(_global, apis, patchOptions) { return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options); }; var customScheduleNonGlobal = function (task) { + checkIsPassive(task); return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options); }; var customSchedulePrepend = function (task) { @@ -4070,10 +4288,15 @@ function patchEventTarget(_global, apis, patchOptions) { if (prepend === void 0) { prepend = false; } return function () { var target = this || _global; + var eventName = arguments[0]; var delegate = arguments[1]; if (!delegate) { return nativeListener.apply(this, arguments); } + if (isNode && eventName === 'uncaughtException') { + // don't patch uncaughtException of nodejs to prevent endless loop + return nativeListener.apply(this, arguments); + } // don't create the bind delegate function for handleEvent // case here to improve addEventListener performance // we will create the bind delegate when invoke @@ -4087,7 +4310,6 @@ function patchEventTarget(_global, apis, patchOptions) { if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) { return; } - var eventName = arguments[0]; var options = arguments[2]; if (blackListedEvents) { // check black list @@ -4117,8 +4339,8 @@ function patchEventTarget(_global, apis, patchOptions) { var symbolEventName; if (!symbolEventNames) { // the code is duplicate, but I just want to get some better performance - var falseEventName = eventName + FALSE_STR; - var trueEventName = eventName + TRUE_STR; + var falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR; + var trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR; var symbol = ZONE_SYMBOL_PREFIX + falseEventName; var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName; zoneSymbolEventNames$1[eventName] = {}; @@ -4153,7 +4375,8 @@ function patchEventTarget(_global, apis, patchOptions) { source = targetSource[eventName]; } if (!source) { - source = constructorName + addSource + eventName; + source = constructorName + addSource + + (eventNameToString ? eventNameToString(eventName) : eventName); } // do not create a new object as task.data to pass those things // just use the global shared one @@ -4168,7 +4391,7 @@ function patchEventTarget(_global, apis, patchOptions) { taskData.capture = capture; taskData.eventName = eventName; taskData.isExisting = isExisting; - var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : null; + var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined; // keep taskData into data to allow onScheduleEventTask to access the task information if (data) { data.taskData = taskData; @@ -4186,7 +4409,11 @@ function patchEventTarget(_global, apis, patchOptions) { if (once) { options.once = true; } - task.options = options; + if (!(!passiveSupported && typeof task.options === 'boolean')) { + // if not support passive, and we pass an option object + // to addEventListener, we should save the options to task + task.options = options; + } task.target = target; task.capture = capture; task.eventName = eventName; @@ -4271,7 +4498,7 @@ function patchEventTarget(_global, apis, patchOptions) { var target = this || _global; var eventName = arguments[0]; var listeners = []; - var tasks = findEventTasks(target, eventName); + var tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName); for (var i = 0; i < tasks.length; i++) { var task = tasks[i]; var delegate = task.originalDelegate ? task.originalDelegate : task.callback; @@ -4427,9 +4654,9 @@ function patchTimer(window, setName, cancelName, nameSuffix) { patchMethod(window, setName, function (delegate) { return function (self, args) { if (typeof args[0] === 'function') { var options = { - handleId: null, isPeriodic: nameSuffix === 'Interval', - delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null, + delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : + undefined, args: args }; var task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask); @@ -4544,7 +4771,7 @@ function propertyPatch() { }; Object.getOwnPropertyDescriptor = function (obj, prop) { var desc = _getOwnPropertyDescriptor(obj, prop); - if (isUnconfigurable(obj, prop)) { + if (desc && isUnconfigurable(obj, prop)) { desc.configurable = false; } return desc; @@ -4772,10 +4999,10 @@ var globalEventHandlersEventNames = [ 'wheel' ]; var documentEventNames = [ - 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'fullscreenchange', + 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange', 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror', 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange', - 'visibilitychange' + 'visibilitychange', 'resume' ]; var windowEventNames = [ 'absolutedeviceorientation', @@ -4887,7 +5114,7 @@ var websocketEventNames = ['close', 'error', 'open', 'message']; var workerEventNames = ['error', 'message']; var eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames); function filterProperties(target, onProperties, ignoreProperties) { - if (!ignoreProperties) { + if (!ignoreProperties || ignoreProperties.length === 0) { return onProperties; } var tip = ignoreProperties.filter(function (ip) { return ip.target === target; }); @@ -4912,13 +5139,14 @@ function propertyDescriptorPatch(api, _global) { } var supportsWebSocket = typeof WebSocket !== 'undefined'; if (canPatchViaPropertyDescriptor()) { - var ignoreProperties = _global.__Zone_ignore_on_properties; + var ignoreProperties = _global['__Zone_ignore_on_properties']; // for browsers that we can patch the descriptor: Chrome & Firefox if (isBrowser) { var internalWindow = window; + var ignoreErrorProperties = isIE ? [{ target: internalWindow, ignoreProperties: ['error'] }] : []; // in IE/Edge, onProp not exist in window object, but in WindowPrototype // so we need to pass WindowPrototype to check onProp exist or not - patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties, ObjectGetPrototypeOf(internalWindow)); + patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow)); patchFilteredProperties(Document.prototype, eventNames, ignoreProperties); if (typeof internalWindow['SVGElement'] !== 'undefined') { patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties); @@ -4940,9 +5168,9 @@ function propertyDescriptorPatch(api, _global) { } } patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties); - var XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget']; - if (XMLHttpRequestEventTarget) { - patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties); + var XMLHttpRequestEventTarget_1 = _global['XMLHttpRequestEventTarget']; + if (XMLHttpRequestEventTarget_1) { + patchFilteredProperties(XMLHttpRequestEventTarget_1 && XMLHttpRequestEventTarget_1.prototype, XMLHttpRequestEventNames, ignoreProperties); } if (typeof IDBIndex !== 'undefined') { patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties); @@ -5157,16 +5385,16 @@ function patchEvent(global, api) { * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -function registerElementPatch(_global) { - if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) { +function patchCallbacks(target, targetName, method, callbacks) { + var symbol = Zone.__symbol__(method); + if (target[symbol]) { return; } - var _registerElement = document.registerElement; - var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback']; - document.registerElement = function (name, opts) { + var nativeDelegate = target[symbol] = target[method]; + target[method] = function (name, opts, options) { if (opts && opts.prototype) { callbacks.forEach(function (callback) { - var source = 'Document.registerElement::' + callback; + var source = targetName + "." + method + "::" + callback; var prototype = opts.prototype; if (prototype.hasOwnProperty(callback)) { var descriptor = ObjectGetOwnPropertyDescriptor(prototype, callback); @@ -5183,9 +5411,23 @@ function registerElementPatch(_global) { } }); } - return _registerElement.call(document, name, opts); + return nativeDelegate.call(target, name, opts, options); }; - attachOriginToPatched(document.registerElement, _registerElement); + attachOriginToPatched(target[method], nativeDelegate); +} +function registerElementPatch(_global) { + if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) { + return; + } + var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback']; + patchCallbacks(document, 'Document', 'registerElement', callbacks); +} +function patchCustomElements(_global) { + if ((!isBrowser && !isMix) || !('customElements' in _global)) { + return; + } + var callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback']; + patchCallbacks(_global.customElements, 'customElements', 'define', callbacks); } /** @@ -5248,7 +5490,10 @@ Zone.__load_patch('EventTarget', function (global, Zone, api) { Zone.__load_patch('on_property', function (global, Zone, api) { propertyDescriptorPatch(api, global); propertyPatch(); +}); +Zone.__load_patch('customElements', function (global, Zone, api) { registerElementPatch(global); + patchCustomElements(global); }); Zone.__load_patch('canvas', function (global) { var HTMLCanvasElement = global['HTMLCanvasElement']; @@ -5267,6 +5512,7 @@ Zone.__load_patch('XHR', function (global, Zone) { var XHR_LISTENER = zoneSymbol('xhrListener'); var XHR_SCHEDULED = zoneSymbol('xhrScheduled'); var XHR_URL = zoneSymbol('xhrURL'); + var XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled'); function patchXHR(window) { var XMLHttpRequestPrototype = XMLHttpRequest.prototype; function findPendingTask(target) { @@ -5275,9 +5521,9 @@ Zone.__load_patch('XHR', function (global, Zone) { var oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; var oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; if (!oriAddListener) { - var XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget']; - if (XMLHttpRequestEventTarget) { - var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype; + var XMLHttpRequestEventTarget_1 = window['XMLHttpRequestEventTarget']; + if (XMLHttpRequestEventTarget_1) { + var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget_1.prototype; oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER]; oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER]; } @@ -5285,9 +5531,10 @@ Zone.__load_patch('XHR', function (global, Zone) { var READY_STATE_CHANGE = 'readystatechange'; var SCHEDULED = 'scheduled'; function scheduleTask(task) { - XMLHttpRequest[XHR_SCHEDULED] = false; var data = task.data; var target = data.target; + target[XHR_SCHEDULED] = false; + target[XHR_ERROR_BEFORE_SCHEDULED] = false; // remove existing event listener var listener = target[XHR_LISTENER]; if (!oriAddListener) { @@ -5301,8 +5548,35 @@ Zone.__load_patch('XHR', function (global, Zone) { if (target.readyState === target.DONE) { // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with // readyState=4 multiple times, so we need to check task state here - if (!data.aborted && XMLHttpRequest[XHR_SCHEDULED] && task.state === SCHEDULED) { - task.invoke(); + if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) { + // check whether the xhr has registered onload listener + // if that is the case, the task should invoke after all + // onload listeners finish. + var loadTasks = target['__zone_symbol__loadfalse']; + if (loadTasks && loadTasks.length > 0) { + var oriInvoke_1 = task.invoke; + task.invoke = function () { + // need to load the tasks again, because in other + // load listener, they may remove themselves + var loadTasks = target['__zone_symbol__loadfalse']; + for (var i = 0; i < loadTasks.length; i++) { + if (loadTasks[i] === task) { + loadTasks.splice(i, 1); + } + } + if (!data.aborted && task.state === SCHEDULED) { + oriInvoke_1.call(task); + } + }; + loadTasks.push(task); + } + else { + task.invoke(); + } + } + else if (!data.aborted && target[XHR_SCHEDULED] === false) { + // error occurs when xhr.send() + target[XHR_ERROR_BEFORE_SCHEDULED] = true; } } }; @@ -5312,7 +5586,7 @@ Zone.__load_patch('XHR', function (global, Zone) { target[XHR_TASK] = task; } sendNative.apply(target, data.args); - XMLHttpRequest[XHR_SCHEDULED] = true; + target[XHR_SCHEDULED] = true; return task; } function placeholderCallback() { } @@ -5329,24 +5603,32 @@ Zone.__load_patch('XHR', function (global, Zone) { return openNative.apply(self, args); }; }); var XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send'; + var fetchTaskAborting = zoneSymbol('fetchTaskAborting'); + var fetchTaskScheduling = zoneSymbol('fetchTaskScheduling'); var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () { return function (self, args) { + if (Zone.current[fetchTaskScheduling] === true) { + // a fetch is scheduling, so we are using xhr to polyfill fetch + // and because we already schedule macroTask for fetch, we should + // not schedule a macroTask for xhr again + return sendNative.apply(self, args); + } if (self[XHR_SYNC]) { // if the XHR is sync there is no task to schedule, just execute the code. return sendNative.apply(self, args); } else { - var options = { - target: self, - url: self[XHR_URL], - isPeriodic: false, - delay: null, - args: args, - aborted: false - }; - return scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask); + var options = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false }; + var task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask); + if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted && + task.state === SCHEDULED) { + // xhr request throw error when send + // we should invoke task instead of leaving a scheduled + // pending macroTask + task.invoke(); + } } }; }); - var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { return function (self) { + var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { return function (self, args) { var task = findPendingTask(self); if (task && typeof task.type == 'string') { // If the XHR has already completed, do nothing. @@ -5358,6 +5640,10 @@ Zone.__load_patch('XHR', function (global, Zone) { } task.zone.cancelTask(task); } + else if (Zone.current[fetchTaskAborting] === true) { + // the abort is called from fetch polyfill, we need to call native abort of XHR. + return abortNative.apply(self, args); + } // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no // task // to cancel. Do nothing. @@ -5497,8 +5783,8 @@ __webpack_require__.r(__webpack_exports__); /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -__webpack_require__(/*! D:\Projects\Zano\src\gui\qt-daemon\html_source\src\polyfills.ts */"./src/polyfills.ts"); -module.exports = __webpack_require__(/*! D:\Projects\Zano\src\gui\qt-daemon\html_source\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); +__webpack_require__(/*! D:\zano_zano\src\gui\qt-daemon\html_source\src\polyfills.ts */"./src/polyfills.ts"); +module.exports = __webpack_require__(/*! D:\zano_zano\src\gui\qt-daemon\html_source\node_modules\@angular-devkit\build-angular\src\angular-cli-files\models\jit-polyfills.js */"./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js"); /***/ }) diff --git a/src/gui/qt-daemon/html/polyfills.js.map b/src/gui/qt-daemon/html/polyfills.js.map index 6db359d7..b3c91da2 100644 --- a/src/gui/qt-daemon/html/polyfills.js.map +++ b/src/gui/qt-daemon/html/polyfills.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js","webpack:///./node_modules/core-js/es7/reflect.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_array-from-iterable.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_metadata.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/es7.reflect.define-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.delete-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.metadata.js","webpack:///./node_modules/zone.js/dist/zone.js","webpack:///./src/polyfills.ts"],"names":[],"mappings":"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A;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,qBAAqB;AACrB,0BAA0B;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;;;;;;;AC/Ia;AACb,kBAAkB,mBAAO,CAAC,wEAAiB;AAC3C,cAAc,mBAAO,CAAC,wDAAS;AAC/B,eAAe,mBAAO,CAAC,kEAAc;AACrC,eAAe,mBAAO,CAAC,kEAAc;AACrC,iBAAiB,mBAAO,CAAC,sEAAgB;AACzC,YAAY,mBAAO,CAAC,4DAAW;AAC/B,wBAAwB,mBAAO,CAAC,0EAAkB;AAClD,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,eAAe,mBAAO,CAAC,sFAAwB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,qBAAqB;AACrB,0BAA0B;AAC1B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;ACpFa;AACb,aAAa,mBAAO,CAAC,4DAAW;AAChC,cAAc,mBAAO,CAAC,4DAAW;AACjC,eAAe,mBAAO,CAAC,gE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AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;;ACpEA,eAAe,mBAAO,CAAC,sDAAQ;AAC/B;;AAEA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA,iCAAiC,SAAS,EAAE;AAC5C,CAAC,YAAY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,qBAAqB;AAC3D,iCAAiC,aAAa;AAC9C;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;;;;;ACrBA;AACA,UAAU;AACV;;;;;;;;;;;;ACFA;;;;;;;;;;;;ACAA;;;;;;;;;;;;ACAA,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,eAAe,mBAAO,CAAC,kEAAc;AACrC,UAAU,mBAAO,CAAC,sDAAQ;AAC1B,cAAc,mBAAO,CAAC,kEAAc;AACpC;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,0DAAU;AAChC,iDAAiD;AACjD,CAAC;AACD;AACA,qBAAqB;AACrB;AACA,SAAS;AACT,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpDA,UAAU,mBAAO,CAAC,4DAAW;AAC7B,cAAc,mBAAO,CAAC,4DAAW;AACjC,aAAa,mBAAO,CAAC,4DAAW;AAChC,iDAAiD,mBAAO,CAAC,sEAAgB;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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gEAAa;AACrC,eAAe,mBAAO,CAAC,kEAAc;AACrC,gBAAgB,mBAAO,CAAC,oEAAe;AACvC;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE;;;;;;;;;;;;ACdH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAA4D;AAC7D,CAAC,SACW;AACZ,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uBAAuB;AAC9D,uCAAuC,kBAAkB;AACzD,oCAAoC,eAAe;AACnD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD,uCAAuC,kBAAkB;AACzD,oCAAoC,eAAe;AACnD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,kFAAkF,gEAAgE,EAAE;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B,EAAE;AACnE;AACA;AACA;AACA,wCAAwC,6DAA6D,EAAE;AACvG,uCAAuC,WAAW,EAAE;AACpD;AACA,kCAAkC,aAAa,EAAE;AACjD,oCAAoC,aAAa,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4HAA4H,wBAAwB,oCAAoC;AACxL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,sEAAsE;AACtJ;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oDAAoD;AAC5F;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qEAAqE,gBAAgB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,MAAI;AAC1C;AACA;AACA,sCAAsC,MAAI;AAC1C;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,oCAAoC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAsB;AAChE,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8BAA8B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,6BAA6B,EAAE;AACpF;AACA;AACA;AACA;AACA,8CAA8C,kDAAkD,EAAE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+BAA+B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,gBAAgB;AACrF;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA,yCAAyC,6BAA6B;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ,qFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,0CAA0C;AAC5G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;;ACn/FD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AAEH,mEAAmE;AACnE,+BAA+B;AAC/B,+BAA+B;AAC/B,iCAAiC;AACjC,kCAAkC;AAClC,oCAAoC;AACpC,+BAA+B;AAC/B,6BAA6B;AAC7B,+BAA+B;AAC/B,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B;AAC/B,4BAA4B;AAC5B,iCAAiC;AACjC,4BAA4B;AAE5B;;;;IAII;AACJ,8BAA8B;AAE9B,+EAA+E;AAC/E,oEAAoE;AAEpE,gEAAgE;AAChE,gCAAgC;AAEhC;;;;IAII;AACJ,8EAA8E;AAE9E;;;GAGG;AAEF,sGAAsG;AACtG,iGAAiG;AACjG,sHAAsH;AAEtH;;;EAGE;AACH,4DAA4D;AAE5D;;GAEG;AACwB,CAAE,6BAA6B;AAG1D;;GAEG","file":"polyfills.js","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport 'core-js/es7/reflect';\n","require('../modules/es7.reflect.define-metadata');\nrequire('../modules/es7.reflect.delete-metadata');\nrequire('../modules/es7.reflect.get-metadata');\nrequire('../modules/es7.reflect.get-metadata-keys');\nrequire('../modules/es7.reflect.get-own-metadata');\nrequire('../modules/es7.reflect.get-own-metadata-keys');\nrequire('../modules/es7.reflect.has-metadata');\nrequire('../modules/es7.reflect.has-own-metadata');\nrequire('../modules/es7.reflect.metadata');\nmodule.exports = require('../modules/_core').Reflect;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.6.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n","/**\n* @license\n* Copyright Google Inc. All Rights Reserved.\n*\n* Use of this source code is governed by an MIT-style license that can be\n* found in the LICENSE file at https://angular.io/license\n*/\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(factory());\n}(this, (function () { 'use strict';\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar Zone$1 = (function (global) {\n var FUNCTION = 'function';\n var performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n if (global['Zone']) {\n throw new Error('Zone already loaded.');\n }\n var Zone = /** @class */ (function () {\n function Zone(parent, zoneSpec) {\n this._properties = null;\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = zoneSpec && zoneSpec.properties || {};\n this._zoneDelegate =\n new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n Zone.assertZonePatched = function () {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +\n 'has been overwritten.\\n' +\n 'Most likely cause is that a Promise polyfill has been loaded ' +\n 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +\n 'If you must load one, do so before loading zone.js.)');\n }\n };\n Object.defineProperty(Zone, \"root\", {\n get: function () {\n var zone = Zone.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"current\", {\n get: function () {\n return _currentZoneFrame.zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"currentTask\", {\n get: function () {\n return _currentTask;\n },\n enumerable: true,\n configurable: true\n });\n Zone.__load_patch = function (name, fn) {\n if (patches.hasOwnProperty(name)) {\n throw Error('Already loaded patch: ' + name);\n }\n else if (!global['__Zone_disable_' + name]) {\n var perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, Zone, _api);\n performanceMeasure(perfName, perfName);\n }\n };\n Object.defineProperty(Zone.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone.prototype, \"name\", {\n get: function () {\n return this._name;\n },\n enumerable: true,\n configurable: true\n });\n Zone.prototype.get = function (key) {\n var zone = this.getZoneWith(key);\n if (zone)\n return zone._properties[key];\n };\n Zone.prototype.getZoneWith = function (key) {\n var current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n };\n Zone.prototype.fork = function (zoneSpec) {\n if (!zoneSpec)\n throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n };\n Zone.prototype.wrap = function (callback, source) {\n if (typeof callback !== FUNCTION) {\n throw new Error('Expecting function got: ' + callback);\n }\n var _callback = this._zoneDelegate.intercept(this, callback, source);\n var zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n };\n Zone.prototype.run = function (callback, applyThis, applyArgs, source) {\n if (applyThis === void 0) { applyThis = undefined; }\n if (applyArgs === void 0) { applyArgs = null; }\n if (source === void 0) { source = null; }\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) {\n if (applyThis === void 0) { applyThis = null; }\n if (applyArgs === void 0) { applyArgs = null; }\n if (source === void 0) { source = null; }\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runTask = function (task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n }\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n // we have to define an variable here, if not\n // typescript compiler will complain below\n var isNotScheduled = task.state === notScheduled;\n if (isNotScheduled && task.type === eventTask) {\n return;\n }\n var reEntryGuard = task.state != running;\n reEntryGuard && task._transitionTo(running, scheduled);\n task.runCount++;\n var previousTask = _currentTask;\n _currentTask = task;\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n if (task.type == macroTask && task.data && !task.data.isPeriodic) {\n task.cancelFn = null;\n }\n try {\n return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n if (task.state !== notScheduled && task.state !== unknown) {\n if (task.type == eventTask || (task.data && task.data.isPeriodic)) {\n reEntryGuard && task._transitionTo(scheduled, running);\n }\n else {\n task.runCount = 0;\n this._updateTaskCount(task, -1);\n reEntryGuard &&\n task._transitionTo(notScheduled, running, notScheduled);\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n };\n Zone.prototype.scheduleTask = function (task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n var newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(\"can not reschedule task to \" + this\n .name + \" which is descendants of the original zone \" + task.zone.name);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n var zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n }\n catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n };\n Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, null));\n };\n Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.cancelTask = function (task) {\n if (task.zone != this)\n throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n }\n catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = 0;\n return task;\n };\n Zone.prototype._updateTaskCount = function (task, count) {\n var zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (var i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n };\n Zone.__symbol__ = __symbol__;\n return Zone;\n }());\n var DELEGATE_ZS = {\n name: '',\n onHasTask: function (delegate, _, target, hasTaskState) {\n return delegate.hasTask(target, hasTaskState);\n },\n onScheduleTask: function (delegate, _, target, task) {\n return delegate.scheduleTask(target, task);\n },\n onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) { return delegate.invokeTask(target, task, applyThis, applyArgs); },\n onCancelTask: function (delegate, _, target, task) {\n return delegate.cancelTask(target, task);\n }\n };\n var ZoneDelegate = /** @class */ (function () {\n function ZoneDelegate(zone, parentDelegate, zoneSpec) {\n this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 };\n this.zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone);\n this._interceptZS =\n zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt =\n zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone =\n zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt =\n zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone);\n this._handleErrorZS =\n zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt =\n zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone =\n zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone);\n this._scheduleTaskZS =\n zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt =\n zoneSpec && (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone =\n zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone);\n this._invokeTaskZS =\n zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt =\n zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone =\n zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone);\n this._cancelTaskZS =\n zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt =\n zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone =\n zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n var parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this.zone;\n }\n }\n }\n ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) {\n return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) :\n new Zone(targetZone, zoneSpec);\n };\n ZoneDelegate.prototype.intercept = function (targetZone, callback, source) {\n return this._interceptZS ?\n this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) :\n callback;\n };\n ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS ?\n this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) :\n callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.handleError = function (targetZone, error) {\n return this._handleErrorZS ?\n this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) :\n true;\n };\n ZoneDelegate.prototype.scheduleTask = function (targetZone, task) {\n var returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n if (!returnTask)\n returnTask = task;\n }\n else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n }\n else if (task.type == microTask) {\n scheduleMicroTask(task);\n }\n else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n };\n ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS ?\n this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :\n task.callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.cancelTask = function (targetZone, task) {\n var value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n }\n else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n };\n ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n return this._hasTaskZS &&\n this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n }\n catch (err) {\n this.handleError(targetZone, err);\n }\n };\n ZoneDelegate.prototype._updateTaskCount = function (type, count) {\n var counts = this._taskCounts;\n var prev = counts[type];\n var next = counts[type] = prev + count;\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n var isEmpty = {\n microTask: counts['microTask'] > 0,\n macroTask: counts['macroTask'] > 0,\n eventTask: counts['eventTask'] > 0,\n change: type\n };\n this.hasTask(this.zone, isEmpty);\n }\n };\n return ZoneDelegate;\n }());\n var ZoneTask = /** @class */ (function () {\n function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) {\n this._zone = null;\n this.runCount = 0;\n this._zoneDelegates = null;\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n this.callback = callback;\n var self = this;\n // TODO: @JiaLiPassion options should have interface\n if (type === eventTask && options && options.useG) {\n this.invoke = ZoneTask.invokeTask;\n }\n else {\n this.invoke = function () {\n return ZoneTask.invokeTask.call(global, self, this, arguments);\n };\n }\n }\n ZoneTask.invokeTask = function (task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n }\n finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n };\n Object.defineProperty(ZoneTask.prototype, \"zone\", {\n get: function () {\n return this._zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZoneTask.prototype, \"state\", {\n get: function () {\n return this._state;\n },\n enumerable: true,\n configurable: true\n });\n ZoneTask.prototype.cancelScheduleRequest = function () {\n this._transitionTo(notScheduled, scheduling);\n };\n ZoneTask.prototype._transitionTo = function (toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n }\n else {\n throw new Error(this.type + \" '\" + this.source + \"': can not transition to '\" + toState + \"', expecting state '\" + fromState1 + \"'\" + (fromState2 ?\n ' or \\'' + fromState2 + '\\'' :\n '') + \", was '\" + this._state + \"'.\");\n }\n };\n ZoneTask.prototype.toString = function () {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId;\n }\n else {\n return Object.prototype.toString.call(this);\n }\n };\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n ZoneTask.prototype.toJSON = function () {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n runCount: this.runCount\n };\n };\n return ZoneTask;\n }());\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var symbolSetTimeout = __symbol__('setTimeout');\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var _microTaskQueue = [];\n var _isDrainingMicrotaskQueue = false;\n var nativeMicroTaskQueuePromise;\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n if (!nativeMicroTaskQueuePromise) {\n if (global[symbolPromise]) {\n nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);\n }\n }\n if (nativeMicroTaskQueuePromise) {\n nativeMicroTaskQueuePromise[symbolThen](drainMicroTaskQueue);\n }\n else {\n global[symbolSetTimeout](drainMicroTaskQueue, 0);\n }\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n var queue = _microTaskQueue;\n _microTaskQueue = [];\n for (var i = 0; i < queue.length; i++) {\n var task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n }\n catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var NO_ZONE = { name: 'NO ZONE' };\n var notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';\n var microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';\n var patches = {};\n var _api = {\n symbol: __symbol__,\n currentZoneFrame: function () { return _currentZoneFrame; },\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: function () { return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; },\n patchEventTarget: function () { return []; },\n patchOnProperties: noop,\n patchMethod: function () { return noop; },\n bindArguments: function () { return null; },\n setNativePromise: function (NativePromise) {\n // sometimes NativePromise.resolve static function\n // is not ready yet, (such as core-js/es6.promise)\n // so we need to check here.\n if (NativePromise && typeof NativePromise.resolve === FUNCTION) {\n nativeMicroTaskQueuePromise = NativePromise.resolve(0);\n }\n },\n };\n var _currentZoneFrame = { parent: null, zone: new Zone(null, null) };\n var _currentTask = null;\n var _numberOfNestedTaskFrames = 0;\n function noop() { }\n function __symbol__(name) {\n return '__zone_symbol__' + name;\n }\n performanceMeasure('Zone', 'Zone');\n return global['Zone'] = Zone;\n})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);\n\nZone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {\n var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var ObjectDefineProperty = Object.defineProperty;\n function readableObjectToString(obj) {\n if (obj && obj.toString === Object.prototype.toString) {\n var className = obj.constructor && obj.constructor.name;\n return (className ? className : '') + ': ' + JSON.stringify(obj);\n }\n return obj ? obj.toString() : Object.prototype.toString.call(obj);\n }\n var __symbol__ = api.symbol;\n var _uncaughtPromiseErrors = [];\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var creationTrace = '__creationTrace__';\n api.onUnhandledError = function (e) {\n if (api.showUncaughtError()) {\n var rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n }\n else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = function () {\n while (_uncaughtPromiseErrors.length) {\n var _loop_1 = function () {\n var uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(function () {\n throw uncaughtPromiseError;\n });\n }\n catch (error) {\n handleUnhandledRejection(error);\n }\n };\n while (_uncaughtPromiseErrors.length) {\n _loop_1();\n }\n }\n };\n var UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n var handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];\n if (handler && typeof handler === 'function') {\n handler.call(this, e);\n }\n }\n catch (err) {\n }\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n var symbolState = __symbol__('state');\n var symbolValue = __symbol__('value');\n var symbolFinally = __symbol__('finally');\n var symbolParentPromiseValue = __symbol__('parentPromiseValue');\n var symbolParentPromiseState = __symbol__('parentPromiseState');\n var source = 'Promise.then';\n var UNRESOLVED = null;\n var RESOLVED = true;\n var REJECTED = false;\n var REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return function (v) {\n try {\n resolvePromise(promise, state, v);\n }\n catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n var once = function () {\n var wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n var TYPE_ERROR = 'Promise resolved with itself';\n var CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n var onceWrapper = once();\n if (promise === value) {\n throw new TypeError(TYPE_ERROR);\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n var then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED && value instanceof ZoneAwarePromise &&\n value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&\n value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n }\n else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n }\n }\n else {\n promise[symbolState] = state;\n var queue = promise[symbolValue];\n promise[symbolValue] = value;\n if (promise[symbolFinally] === symbolFinally) {\n // the promise is generated by Promise.prototype.finally \n if (state === RESOLVED) {\n // the state is resolved, should ignore the value\n // and use parent promise value\n promise[symbolState] = promise[symbolParentPromiseState];\n promise[symbolValue] = promise[symbolParentPromiseValue];\n }\n }\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n // check if longStackTraceZone is here\n var trace = Zone.currentTask && Zone.currentTask.data &&\n Zone.currentTask.data[creationTrace];\n if (trace) {\n // only keep the long stack trace into error when in longStackTraceZone\n ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace });\n }\n }\n for (var i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n try {\n // try to print more readable error log\n throw new Error('Uncaught (in promise): ' + readableObjectToString(value) +\n (value && value.stack ? '\\n' + value.stack : ''));\n }\n catch (err) {\n var error_1 = err;\n error_1.rejection = value;\n error_1.promise = promise;\n error_1.zone = Zone.current;\n error_1.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(error_1);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n var REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n var handler = Zone[REJECTION_HANDLED_HANDLER];\n if (handler && typeof handler === 'function') {\n handler.call(this, { rejection: promise[symbolValue], promise: promise });\n }\n }\n catch (err) {\n }\n promise[symbolState] = REJECTED;\n for (var i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n var promiseState = promise[symbolState];\n var delegate = promiseState ?\n (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :\n (typeof onRejected === 'function') ? onRejected : forwardRejection;\n zone.scheduleMicroTask(source, function () {\n try {\n var parentPromiseValue = promise[symbolValue];\n var isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally];\n if (isFinallyPromise) {\n // if the promise is generated from finally call, keep parent promise's state and value\n chainPromise[symbolParentPromiseValue] = parentPromiseValue;\n chainPromise[symbolParentPromiseState] = promiseState;\n }\n // should not pass value to finally callback\n var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ? [] : [parentPromiseValue]);\n resolvePromise(chainPromise, true, value);\n }\n catch (error) {\n // if error occurs, should always return this error\n resolvePromise(chainPromise, false, error);\n }\n }, chainPromise);\n }\n var ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';\n var ZoneAwarePromise = /** @class */ (function () {\n function ZoneAwarePromise(executor) {\n var promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED));\n }\n catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n ZoneAwarePromise.toString = function () {\n return ZONE_AWARE_PROMISE_TO_STRING;\n };\n ZoneAwarePromise.resolve = function (value) {\n return resolvePromise(new this(null), RESOLVED, value);\n };\n ZoneAwarePromise.reject = function (error) {\n return resolvePromise(new this(null), REJECTED, error);\n };\n ZoneAwarePromise.race = function (values) {\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n function onResolve(value) {\n promise && (promise = null || resolve(value));\n }\n function onReject(error) {\n promise && (promise = null || reject(error));\n }\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n return promise;\n };\n ZoneAwarePromise.all = function (values) {\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n var count = 0;\n var resolvedValues = [];\n for (var _i = 0, values_2 = values; _i < values_2.length; _i++) {\n var value = values_2[_i];\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then((function (index) { return function (value) {\n resolvedValues[index] = value;\n count--;\n if (!count) {\n resolve(resolvedValues);\n }\n }; })(count), reject);\n count++;\n }\n if (!count)\n resolve(resolvedValues);\n return promise;\n };\n ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) {\n var chainPromise = new this.constructor(null);\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n };\n ZoneAwarePromise.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n ZoneAwarePromise.prototype.finally = function (onFinally) {\n var chainPromise = new this.constructor(null);\n chainPromise[symbolFinally] = symbolFinally;\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFinally, onFinally);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);\n }\n return chainPromise;\n };\n return ZoneAwarePromise;\n }());\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n var NativePromise = global[symbolPromise] = global['Promise'];\n var ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise');\n var desc = ObjectGetOwnPropertyDescriptor(global, 'Promise');\n if (!desc || desc.configurable) {\n desc && delete desc.writable;\n desc && delete desc.value;\n if (!desc) {\n desc = { configurable: true, enumerable: true };\n }\n desc.get = function () {\n // if we already set ZoneAwarePromise, use patched one\n // otherwise return native one.\n return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise];\n };\n desc.set = function (NewNativePromise) {\n if (NewNativePromise === ZoneAwarePromise) {\n // if the NewNativePromise is ZoneAwarePromise\n // save to global\n global[ZONE_AWARE_PROMISE] = NewNativePromise;\n }\n else {\n // if the NewNativePromise is not ZoneAwarePromise\n // for example: after load zone.js, some library just\n // set es6-promise to global, if we set it to global\n // directly, assertZonePatched will fail and angular\n // will not loaded, so we just set the NewNativePromise\n // to global[symbolPromise], so the result is just like\n // we load ES6 Promise before zone.js\n global[symbolPromise] = NewNativePromise;\n if (!NewNativePromise.prototype[symbolThen]) {\n patchThen(NewNativePromise);\n }\n api.setNativePromise(NewNativePromise);\n }\n };\n ObjectDefineProperty(global, 'Promise', desc);\n }\n global['Promise'] = ZoneAwarePromise;\n var symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n var proto = Ctor.prototype;\n var prop = ObjectGetOwnPropertyDescriptor(proto, 'then');\n if (prop && (prop.writable === false || !prop.configurable)) {\n // check Ctor.prototype.then propertyDescriptor is writable or not\n // in meteor env, writable is false, we should ignore such case\n return;\n }\n var originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n var _this = this;\n var wrapped = new ZoneAwarePromise(function (resolve, reject) {\n originalThen.call(_this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n function zoneify(fn) {\n return function () {\n var resultPromise = fn.apply(this, arguments);\n if (resultPromise instanceof ZoneAwarePromise) {\n return resultPromise;\n }\n var ctor = resultPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n patchThen(ctor);\n }\n return resultPromise;\n };\n }\n if (NativePromise) {\n patchThen(NativePromise);\n var fetch_1 = global['fetch'];\n if (typeof fetch_1 == 'function') {\n global['fetch'] = zoneify(fetch_1);\n }\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis,missingRequire}\n */\n// issue #989, to reduce bundle size, use short name\n/** Object.getOwnPropertyDescriptor */\nvar ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n/** Object.defineProperty */\nvar ObjectDefineProperty = Object.defineProperty;\n/** Object.getPrototypeOf */\nvar ObjectGetPrototypeOf = Object.getPrototypeOf;\n/** Object.create */\nvar ObjectCreate = Object.create;\n/** Array.prototype.slice */\nvar ArraySlice = Array.prototype.slice;\n/** addEventListener string const */\nvar ADD_EVENT_LISTENER_STR = 'addEventListener';\n/** removeEventListener string const */\nvar REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\n/** zoneSymbol addEventListener */\nvar ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);\n/** zoneSymbol removeEventListener */\nvar ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);\n/** true string const */\nvar TRUE_STR = 'true';\n/** false string const */\nvar FALSE_STR = 'false';\n/** __zone_symbol__ string const */\nvar ZONE_SYMBOL_PREFIX = '__zone_symbol__';\nfunction wrapWithCurrentZone(callback, source) {\n return Zone.current.wrap(callback, source);\n}\nfunction scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {\n return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);\n}\nvar zoneSymbol = Zone.__symbol__;\nvar isWindowExists = typeof window !== 'undefined';\nvar internalWindow = isWindowExists ? window : undefined;\nvar _global = isWindowExists && internalWindow || typeof self === 'object' && self || global;\nvar REMOVE_ATTRIBUTE = 'removeAttribute';\nvar NULL_ON_PROP_VALUE = [null];\nfunction bindArguments(args, source) {\n for (var i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = wrapWithCurrentZone(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n var source = prototype.constructor['name'];\n var _loop_1 = function (i) {\n var name_1 = fnNames[i];\n var delegate = prototype[name_1];\n if (delegate) {\n var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name_1);\n if (!isPropertyWritable(prototypeDesc)) {\n return \"continue\";\n }\n prototype[name_1] = (function (delegate) {\n var patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name_1));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n };\n for (var i = 0; i < fnNames.length; i++) {\n _loop_1(i);\n }\n}\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n if (propertyDesc.writable === false) {\n return false;\n }\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\nvar isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nvar isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]');\nvar isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nvar isMix = typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]' && !isWebWorker &&\n !!(isWindowExists && internalWindow['HTMLElement']);\nvar zoneSymbolEventNames = {};\nvar wrapFn = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n var eventNameSymbol = zoneSymbolEventNames[event.type];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type);\n }\n var target = this || event.target || _global;\n var listener = target[eventNameSymbol];\n var result = listener && listener.apply(this, arguments);\n if (result != undefined && !result) {\n event.preventDefault();\n }\n return result;\n};\nfunction patchProperty(obj, prop, prototype) {\n var desc = ObjectGetOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = { enumerable: true, configurable: true };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n var originalDescGet = desc.get;\n var originalDescSet = desc.set;\n // substr(2) cuz 'onclick' -> 'click', etc\n var eventName = prop.substr(2);\n var eventNameSymbol = zoneSymbolEventNames[eventName];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName);\n }\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return;\n }\n var previousValue = target[eventNameSymbol];\n if (previousValue) {\n target.removeEventListener(eventName, wrapFn);\n }\n // issue #978, when onload handler was added before loading zone.js\n // we should remove it with originalDescSet\n if (originalDescSet) {\n originalDescSet.apply(target, NULL_ON_PROP_VALUE);\n }\n if (typeof newValue === 'function') {\n target[eventNameSymbol] = newValue;\n target.addEventListener(eventName, wrapFn, false);\n }\n else {\n target[eventNameSymbol] = null;\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return null;\n }\n var listener = target[eventNameSymbol];\n if (listener) {\n return listener;\n }\n else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n var value = originalDescGet && originalDescGet.call(this);\n if (value) {\n desc.set.call(this, value);\n if (typeof target[REMOVE_ATTRIBUTE] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n ObjectDefineProperty(obj, prop, desc);\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (var i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n }\n else {\n var onProperties = [];\n for (var prop in obj) {\n if (prop.substr(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (var j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nvar originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n var OriginalClass = _global[className];\n if (!OriginalClass)\n return;\n // keep original class in global\n _global[zoneSymbol(className)] = OriginalClass;\n _global[className] = function () {\n var a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global[className], OriginalClass);\n var instance = new OriginalClass(function () { });\n var prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob')\n continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n }\n else {\n ObjectDefineProperty(_global[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n }\n else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n }\n });\n }\n }(prop));\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction patchMethod(target, name, patchFn) {\n var proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n var delegateName = zoneSymbol(name);\n var delegate;\n if (proto && !(delegate = proto[delegateName])) {\n delegate = proto[delegateName] = proto[name];\n // check whether proto[name] is writable\n // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob\n var desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);\n if (isPropertyWritable(desc)) {\n var patchDelegate_1 = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate_1(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n }\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n var setNative = null;\n function scheduleTask(task) {\n var data = task.data;\n data.args[data.cbIdx] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) {\n var meta = metaCreator(self, args);\n if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {\n return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask, null);\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n }; });\n}\n\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nvar isDetectedIEOrEdge = false;\nvar ieOrEdge = false;\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n var ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n return ieOrEdge;\n }\n catch (error) {\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// override Function.prototype.toString to make zone.js patched function\n// look like native function\nZone.__load_patch('toString', function (global) {\n // patch Func.prototype.toString to let them look like native\n var originalFunctionToString = Function.prototype.toString;\n var ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');\n var PROMISE_SYMBOL = zoneSymbol('Promise');\n var ERROR_SYMBOL = zoneSymbol('Error');\n var newFunctionToString = function toString() {\n if (typeof this === 'function') {\n var originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.apply(this[ORIGINAL_DELEGATE_SYMBOL], arguments);\n }\n else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n var nativePromise = global[PROMISE_SYMBOL];\n if (nativePromise) {\n return originalFunctionToString.apply(nativePromise, arguments);\n }\n }\n if (this === Error) {\n var nativeError = global[ERROR_SYMBOL];\n if (nativeError) {\n return originalFunctionToString.apply(nativeError, arguments);\n }\n }\n }\n return originalFunctionToString.apply(this, arguments);\n };\n newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;\n Function.prototype.toString = newFunctionToString;\n // patch Object.prototype.toString to let them look like native\n var originalObjectToString = Object.prototype.toString;\n var PROMISE_OBJECT_TO_STRING = '[object Promise]';\n Object.prototype.toString = function () {\n if (this instanceof Promise) {\n return PROMISE_OBJECT_TO_STRING;\n }\n return originalObjectToString.apply(this, arguments);\n };\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\n// an identifier to tell ZoneTask do not create a new invoke closure\nvar OPTIMIZED_ZONE_EVENT_TASK_DATA = {\n useG: true\n};\nvar zoneSymbolEventNames$1 = {};\nvar globalSources = {};\nvar EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\\w+)(true|false)$/;\nvar IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped');\nfunction patchEventTarget(_global, apis, patchOptions) {\n var ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR;\n var REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR;\n var LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners';\n var REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners';\n var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n var PREPEND_EVENT_LISTENER = 'prependListener';\n var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n var invokeTask = function (task, target, event) {\n // for better performance, check isRemoved which is set\n // by removeEventListener\n if (task.isRemoved) {\n return;\n }\n var delegate = task.callback;\n if (typeof delegate === 'object' && delegate.handleEvent) {\n // create the bind version of handleEvent when invoke\n task.callback = function (event) { return delegate.handleEvent(event); };\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n task.invoke(task, target, [event]);\n var options = task.options;\n if (options && typeof options === 'object' && options.once) {\n // if options.once is true, after invoke once remove listener here\n // only browser need to do this, nodejs eventEmitter will cal removeListener\n // inside EventEmitter.once\n var delegate_1 = task.originalDelegate ? task.originalDelegate : task.callback;\n target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate_1, options);\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = false\n var globalZoneAwareCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n var target = this || event.target || _global;\n var tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n var copyTasks = tasks.slice();\n for (var i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = true\n var globalZoneAwareCaptureCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n var target = this || event.target || _global;\n var tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n var copyTasks = tasks.slice();\n for (var i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n function patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n var useGlobalCallback = true;\n if (patchOptions && patchOptions.useG !== undefined) {\n useGlobalCallback = patchOptions.useG;\n }\n var validateHandler = patchOptions && patchOptions.vh;\n var checkDuplicate = true;\n if (patchOptions && patchOptions.chkDup !== undefined) {\n checkDuplicate = patchOptions.chkDup;\n }\n var returnTarget = false;\n if (patchOptions && patchOptions.rt !== undefined) {\n returnTarget = patchOptions.rt;\n }\n var proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n // a shared global taskData to pass data for scheduleEventTask\n // so we do not need to create a new object just for pass some data\n var taskData = {};\n var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];\n var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =\n proto[REMOVE_EVENT_LISTENER];\n var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =\n proto[LISTENERS_EVENT_LISTENER];\n var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];\n var nativePrependEventListener;\n if (patchOptions && patchOptions.prepend) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] =\n proto[patchOptions.prepend];\n }\n var customScheduleGlobal = function () {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);\n };\n var customCancelGlobal = function (task) {\n // if task is not marked as isRemoved, this call is directly\n // from Zone.prototype.cancelTask, we should remove the task\n // from tasksList of target first\n if (!task.isRemoved) {\n var symbolEventNames = zoneSymbolEventNames$1[task.eventName];\n var symbolEventName = void 0;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && task.target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n if (existingTask === task) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n task.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n task.allRemoved = true;\n task.target[symbolEventName] = null;\n }\n break;\n }\n }\n }\n }\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.allRemoved) {\n return;\n }\n return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);\n };\n var customScheduleNonGlobal = function (task) {\n return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n var customSchedulePrepend = function (task) {\n return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n var customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);\n };\n var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n var compareTaskCallbackVsDelegate = function (task, delegate) {\n var typeOfDelegate = typeof delegate;\n return (typeOfDelegate === 'function' && task.callback === delegate) ||\n (typeOfDelegate === 'object' && task.originalDelegate === delegate);\n };\n var compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate;\n var blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')];\n var makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget, prepend) {\n if (returnTarget === void 0) { returnTarget = false; }\n if (prepend === void 0) { prepend = false; }\n return function () {\n var target = this || _global;\n var delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n var isHandleEvent = false;\n if (typeof delegate !== 'function') {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n var eventName = arguments[0];\n var options = arguments[2];\n if (blackListedEvents) {\n // check black list\n for (var i = 0; i < blackListedEvents.length; i++) {\n if (eventName === blackListedEvents[i]) {\n return nativeListener.apply(this, arguments);\n }\n }\n }\n var capture;\n var once = false;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n once = options ? !!options.once : false;\n }\n var zone = Zone.current;\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n var symbolEventName;\n if (!symbolEventNames) {\n // the code is duplicate, but I just want to get some better performance\n var falseEventName = eventName + FALSE_STR;\n var trueEventName = eventName + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n symbolEventName = capture ? symbolCapture : symbol;\n }\n else {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = target[symbolEventName];\n var isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (var i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n }\n else {\n existingTasks = target[symbolEventName] = [];\n }\n var source;\n var constructorName = target.constructor['name'];\n var targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source = constructorName + addSource + eventName;\n }\n // do not create a new object as task.data to pass those things\n // just use the global shared one\n taskData.options = options;\n if (once) {\n // if addEventListener with once options, we don't pass it to\n // native addEventListener, instead we keep the once setting\n // and handle ourselves.\n taskData.options.once = false;\n }\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : null;\n // keep taskData into data to allow onScheduleEventTask to access the task information\n if (data) {\n data.taskData = taskData;\n }\n var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n // should clear taskData.target to avoid memory leak\n // issue, https://github.com/angular/angular/issues/20442\n taskData.target = null;\n // need to clear up taskData because it is a global object\n if (data) {\n data.taskData = null;\n }\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n if (once) {\n options.once = true;\n }\n task.options = options;\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n }\n else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var options = arguments[2];\n var capture;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n }\n var delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler &&\n !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n var symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n existingTask.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.allRemoved = true;\n target[symbolEventName] = null;\n }\n existingTask.zone.cancelTask(existingTask);\n if (returnTarget) {\n return target;\n }\n return;\n }\n }\n }\n // issue 930, didn't find the event name or callback\n // from zone kept existingTasks, the callback maybe\n // added outside of zone, we need to call native removeEventListener\n // to try to remove it.\n return nativeRemoveEventListener.apply(this, arguments);\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var listeners = [];\n var tasks = findEventTasks(target, eventName);\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n if (!eventName) {\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n var prop = keys[i];\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n // in nodejs EventEmitter, removeListener event is\n // used for monitoring the removeListener call,\n // so just keep removeListener eventListener until\n // all other eventListeners are removed\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);\n }\n }\n // remove removeListener listener finally\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');\n }\n else {\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n if (symbolEventNames) {\n var symbolEventName = symbolEventNames[FALSE_STR];\n var symbolCaptureEventName = symbolEventNames[TRUE_STR];\n var tasks = target[symbolEventName];\n var captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n var removeTasks = tasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n if (captureTasks) {\n var removeTasks = captureTasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n }\n }\n if (returnTarget) {\n return this;\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n }\n var results = [];\n for (var i = 0; i < apis.length; i++) {\n results[i] = patchEventTargetMethods(apis[i], patchOptions);\n }\n return results;\n}\nfunction findEventTasks(target, eventName) {\n var foundTasks = [];\n for (var prop in target) {\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n var tasks = target[prop];\n if (tasks) {\n for (var i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n}\nfunction patchEventPrototype(global, api) {\n var Event = global['Event'];\n if (Event && Event.prototype) {\n api.patchMethod(Event.prototype, 'stopImmediatePropagation', function (delegate) { return function (self, args) {\n self[IMMEDIATE_PROPAGATION_SYMBOL] = true;\n // we need to call the native stopImmediatePropagation\n // in case in some hybrid application, some part of\n // application will be controlled by zone, some are not\n delegate && delegate.apply(self, args);\n }; });\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nvar taskSymbol = zoneSymbol('zoneTask');\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n var setNative = null;\n var clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n var tasksByHandleId = {};\n function scheduleTask(task) {\n var data = task.data;\n function timer() {\n try {\n task.invoke.apply(this, arguments);\n }\n finally {\n // issue-934, task will be cancelled\n // even it is a periodic task such as\n // setInterval\n if (!(task.data && task.data.isPeriodic)) {\n if (typeof data.handleId === 'number') {\n // in non-nodejs env, we remove timerId\n // from local cache\n delete tasksByHandleId[data.handleId];\n }\n else if (data.handleId) {\n // Node returns complex objects as handleIds\n // we remove task reference from timer object\n data.handleId[taskSymbol] = null;\n }\n }\n }\n }\n data.args[0] = timer;\n data.handleId = setNative.apply(window, data.args);\n return task;\n }\n function clearTask(task) {\n return clearNative(task.data.handleId);\n }\n setNative =\n patchMethod(window, setName, function (delegate) { return function (self, args) {\n if (typeof args[0] === 'function') {\n var options = {\n handleId: null,\n isPeriodic: nameSuffix === 'Interval',\n delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 : null,\n args: args\n };\n var task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n var handle = task.data.handleId;\n if (typeof handle === 'number') {\n // for non nodejs env, we save handleId: task\n // mapping in local cache for clearTimeout\n tasksByHandleId[handle] = task;\n }\n else if (handle) {\n // for nodejs env, we save task\n // reference in timerId Object for clearTimeout\n handle[taskSymbol] = task;\n }\n // check whether handle is null, because some polyfill or browser\n // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame\n if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&\n typeof handle.unref === 'function') {\n task.ref = handle.ref.bind(handle);\n task.unref = handle.unref.bind(handle);\n }\n if (typeof handle === 'number' || handle) {\n return handle;\n }\n return task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n }; });\n clearNative =\n patchMethod(window, cancelName, function (delegate) { return function (self, args) {\n var id = args[0];\n var task;\n if (typeof id === 'number') {\n // non nodejs env.\n task = tasksByHandleId[id];\n }\n else {\n // nodejs env.\n task = id && id[taskSymbol];\n // other environments.\n if (!task) {\n task = id;\n }\n }\n if (task && typeof task.type === 'string') {\n if (task.state !== 'notScheduled' &&\n (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {\n if (typeof id === 'number') {\n delete tasksByHandleId[id];\n }\n else if (id) {\n id[taskSymbol] = null;\n }\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n }\n else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\n }; });\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/*\n * This is necessary for Chrome and Chrome mobile, to enable\n * things like redefining `createdCallback` on an element.\n */\nvar _defineProperty = Object[zoneSymbol('defineProperty')] = Object.defineProperty;\nvar _getOwnPropertyDescriptor = Object[zoneSymbol('getOwnPropertyDescriptor')] =\n Object.getOwnPropertyDescriptor;\nvar _create = Object.create;\nvar unconfigurablesKey = zoneSymbol('unconfigurables');\nfunction propertyPatch() {\n Object.defineProperty = function (obj, prop, desc) {\n if (isUnconfigurable(obj, prop)) {\n throw new TypeError('Cannot assign to read only property \\'' + prop + '\\' of ' + obj);\n }\n var originalConfigurableFlag = desc.configurable;\n if (prop !== 'prototype') {\n desc = rewriteDescriptor(obj, prop, desc);\n }\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n };\n Object.defineProperties = function (obj, props) {\n Object.keys(props).forEach(function (prop) {\n Object.defineProperty(obj, prop, props[prop]);\n });\n return obj;\n };\n Object.create = function (obj, proto) {\n if (typeof proto === 'object' && !Object.isFrozen(proto)) {\n Object.keys(proto).forEach(function (prop) {\n proto[prop] = rewriteDescriptor(obj, prop, proto[prop]);\n });\n }\n return _create(obj, proto);\n };\n Object.getOwnPropertyDescriptor = function (obj, prop) {\n var desc = _getOwnPropertyDescriptor(obj, prop);\n if (isUnconfigurable(obj, prop)) {\n desc.configurable = false;\n }\n return desc;\n };\n}\nfunction _redefineProperty(obj, prop, desc) {\n var originalConfigurableFlag = desc.configurable;\n desc = rewriteDescriptor(obj, prop, desc);\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n}\nfunction isUnconfigurable(obj, prop) {\n return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop];\n}\nfunction rewriteDescriptor(obj, prop, desc) {\n // issue-927, if the desc is frozen, don't try to change the desc\n if (!Object.isFrozen(desc)) {\n desc.configurable = true;\n }\n if (!desc.configurable) {\n // issue-927, if the obj is frozen, don't try to set the desc to obj\n if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) {\n _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} });\n }\n if (obj[unconfigurablesKey]) {\n obj[unconfigurablesKey][prop] = true;\n }\n }\n return desc;\n}\nfunction _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) {\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n if (desc.configurable) {\n // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's\n // retry with the original flag value\n if (typeof originalConfigurableFlag == 'undefined') {\n delete desc.configurable;\n }\n else {\n desc.configurable = originalConfigurableFlag;\n }\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n var descJson = null;\n try {\n descJson = JSON.stringify(desc);\n }\n catch (error) {\n descJson = desc.toString();\n }\n console.log(\"Attempting to configure '\" + prop + \"' with descriptor '\" + descJson + \"' on object '\" + obj + \"' and got error, giving up: \" + error);\n }\n }\n else {\n throw error;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// we have to patch the instance since the proto is non-configurable\nfunction apply(api, _global) {\n var WS = _global.WebSocket;\n // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener\n // On older Chrome, no need since EventTarget was already patched\n if (!_global.EventTarget) {\n patchEventTarget(_global, [WS.prototype]);\n }\n _global.WebSocket = function (x, y) {\n var socket = arguments.length > 1 ? new WS(x, y) : new WS(x);\n var proxySocket;\n var proxySocketProto;\n // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance\n var onmessageDesc = ObjectGetOwnPropertyDescriptor(socket, 'onmessage');\n if (onmessageDesc && onmessageDesc.configurable === false) {\n proxySocket = ObjectCreate(socket);\n // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror'\n // but proxySocket not, so we will keep socket as prototype and pass it to\n // patchOnProperties method\n proxySocketProto = socket;\n [ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, 'send', 'close'].forEach(function (propName) {\n proxySocket[propName] = function () {\n var args = ArraySlice.call(arguments);\n if (propName === ADD_EVENT_LISTENER_STR || propName === REMOVE_EVENT_LISTENER_STR) {\n var eventName = args.length > 0 ? args[0] : undefined;\n if (eventName) {\n var propertySymbol = Zone.__symbol__('ON_PROPERTY' + eventName);\n socket[propertySymbol] = proxySocket[propertySymbol];\n }\n }\n return socket[propName].apply(socket, args);\n };\n });\n }\n else {\n // we can patch the real socket\n proxySocket = socket;\n }\n patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto);\n return proxySocket;\n };\n var globalWebSocket = _global['WebSocket'];\n for (var prop in WS) {\n globalWebSocket[prop] = WS[prop];\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {globalThis}\n */\nvar globalEventHandlersEventNames = [\n 'abort',\n 'animationcancel',\n 'animationend',\n 'animationiteration',\n 'auxclick',\n 'beforeinput',\n 'blur',\n 'cancel',\n 'canplay',\n 'canplaythrough',\n 'change',\n 'compositionstart',\n 'compositionupdate',\n 'compositionend',\n 'cuechange',\n 'click',\n 'close',\n 'contextmenu',\n 'curechange',\n 'dblclick',\n 'drag',\n 'dragend',\n 'dragenter',\n 'dragexit',\n 'dragleave',\n 'dragover',\n 'drop',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'focus',\n 'focusin',\n 'focusout',\n 'gotpointercapture',\n 'input',\n 'invalid',\n 'keydown',\n 'keypress',\n 'keyup',\n 'load',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'lostpointercapture',\n 'mousedown',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'mousewheel',\n 'orientationchange',\n 'pause',\n 'play',\n 'playing',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerlockchange',\n 'mozpointerlockchange',\n 'webkitpointerlockerchange',\n 'pointerlockerror',\n 'mozpointerlockerror',\n 'webkitpointerlockerror',\n 'pointermove',\n 'pointout',\n 'pointerover',\n 'pointerup',\n 'progress',\n 'ratechange',\n 'reset',\n 'resize',\n 'scroll',\n 'seeked',\n 'seeking',\n 'select',\n 'selectionchange',\n 'selectstart',\n 'show',\n 'sort',\n 'stalled',\n 'submit',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'touchcancel',\n 'touchmove',\n 'touchstart',\n 'touchend',\n 'transitioncancel',\n 'transitionend',\n 'waiting',\n 'wheel'\n];\nvar documentEventNames = [\n 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'fullscreenchange',\n 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror',\n 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange',\n 'visibilitychange'\n];\nvar windowEventNames = [\n 'absolutedeviceorientation',\n 'afterinput',\n 'afterprint',\n 'appinstalled',\n 'beforeinstallprompt',\n 'beforeprint',\n 'beforeunload',\n 'devicelight',\n 'devicemotion',\n 'deviceorientation',\n 'deviceorientationabsolute',\n 'deviceproximity',\n 'hashchange',\n 'languagechange',\n 'message',\n 'mozbeforepaint',\n 'offline',\n 'online',\n 'paint',\n 'pageshow',\n 'pagehide',\n 'popstate',\n 'rejectionhandled',\n 'storage',\n 'unhandledrejection',\n 'unload',\n 'userproximity',\n 'vrdisplyconnected',\n 'vrdisplaydisconnected',\n 'vrdisplaypresentchange'\n];\nvar htmlElementEventNames = [\n 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend',\n 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend',\n 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend'\n];\nvar mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend'];\nvar ieElementEventNames = [\n 'activate',\n 'afterupdate',\n 'ariarequest',\n 'beforeactivate',\n 'beforedeactivate',\n 'beforeeditfocus',\n 'beforeupdate',\n 'cellchange',\n 'controlselect',\n 'dataavailable',\n 'datasetchanged',\n 'datasetcomplete',\n 'errorupdate',\n 'filterchange',\n 'layoutcomplete',\n 'losecapture',\n 'move',\n 'moveend',\n 'movestart',\n 'propertychange',\n 'resizeend',\n 'resizestart',\n 'rowenter',\n 'rowexit',\n 'rowsdelete',\n 'rowsinserted',\n 'command',\n 'compassneedscalibration',\n 'deactivate',\n 'help',\n 'mscontentzoom',\n 'msmanipulationstatechanged',\n 'msgesturechange',\n 'msgesturedoubletap',\n 'msgestureend',\n 'msgesturehold',\n 'msgesturestart',\n 'msgesturetap',\n 'msgotpointercapture',\n 'msinertiastart',\n 'mslostpointercapture',\n 'mspointercancel',\n 'mspointerdown',\n 'mspointerenter',\n 'mspointerhover',\n 'mspointerleave',\n 'mspointermove',\n 'mspointerout',\n 'mspointerover',\n 'mspointerup',\n 'pointerout',\n 'mssitemodejumplistitemremoved',\n 'msthumbnailclick',\n 'stop',\n 'storagecommit'\n];\nvar webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror'];\nvar formEventNames = ['autocomplete', 'autocompleteerror'];\nvar detailEventNames = ['toggle'];\nvar frameEventNames = ['load'];\nvar frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror'];\nvar marqueeEventNames = ['bounce', 'finish', 'start'];\nvar XMLHttpRequestEventNames = [\n 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend',\n 'readystatechange'\n];\nvar IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close'];\nvar websocketEventNames = ['close', 'error', 'open', 'message'];\nvar workerEventNames = ['error', 'message'];\nvar eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames);\nfunction filterProperties(target, onProperties, ignoreProperties) {\n if (!ignoreProperties) {\n return onProperties;\n }\n var tip = ignoreProperties.filter(function (ip) { return ip.target === target; });\n if (!tip || tip.length === 0) {\n return onProperties;\n }\n var targetIgnoreProperties = tip[0].ignoreProperties;\n return onProperties.filter(function (op) { return targetIgnoreProperties.indexOf(op) === -1; });\n}\nfunction patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {\n // check whether target is available, sometimes target will be undefined\n // because different browser or some 3rd party plugin.\n if (!target) {\n return;\n }\n var filteredProperties = filterProperties(target, onProperties, ignoreProperties);\n patchOnProperties(target, filteredProperties, prototype);\n}\nfunction propertyDescriptorPatch(api, _global) {\n if (isNode && !isMix) {\n return;\n }\n var supportsWebSocket = typeof WebSocket !== 'undefined';\n if (canPatchViaPropertyDescriptor()) {\n var ignoreProperties = _global.__Zone_ignore_on_properties;\n // for browsers that we can patch the descriptor: Chrome & Firefox\n if (isBrowser) {\n var internalWindow = window;\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties, ObjectGetPrototypeOf(internalWindow));\n patchFilteredProperties(Document.prototype, eventNames, ignoreProperties);\n if (typeof internalWindow['SVGElement'] !== 'undefined') {\n patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties);\n }\n patchFilteredProperties(Element.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties);\n patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties);\n patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties);\n var HTMLMarqueeElement_1 = internalWindow['HTMLMarqueeElement'];\n if (HTMLMarqueeElement_1) {\n patchFilteredProperties(HTMLMarqueeElement_1.prototype, marqueeEventNames, ignoreProperties);\n }\n var Worker_1 = internalWindow['Worker'];\n if (Worker_1) {\n patchFilteredProperties(Worker_1.prototype, workerEventNames, ignoreProperties);\n }\n }\n patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties);\n var XMLHttpRequestEventTarget = _global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n patchFilteredProperties(XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype, XMLHttpRequestEventNames, ignoreProperties);\n }\n if (typeof IDBIndex !== 'undefined') {\n patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties);\n }\n if (supportsWebSocket) {\n patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties);\n }\n }\n else {\n // Safari, Android browsers (Jelly Bean)\n patchViaCapturingAllTheEvents();\n patchClass('XMLHttpRequest');\n if (supportsWebSocket) {\n apply(api, _global);\n }\n }\n}\nfunction canPatchViaPropertyDescriptor() {\n if ((isBrowser || isMix) && !ObjectGetOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') &&\n typeof Element !== 'undefined') {\n // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364\n // IDL interface attributes are not configurable\n var desc = ObjectGetOwnPropertyDescriptor(Element.prototype, 'onclick');\n if (desc && !desc.configurable)\n return false;\n }\n var ON_READY_STATE_CHANGE = 'onreadystatechange';\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n var xhrDesc = ObjectGetOwnPropertyDescriptor(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE);\n // add enumerable and configurable here because in opera\n // by default XMLHttpRequest.prototype.onreadystatechange is undefined\n // without adding enumerable and configurable will cause onreadystatechange\n // non-configurable\n // and if XMLHttpRequest.prototype.onreadystatechange is undefined,\n // we should set a real desc instead a fake one\n if (xhrDesc) {\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {\n enumerable: true,\n configurable: true,\n get: function () {\n return true;\n }\n });\n var req = new XMLHttpRequest();\n var result = !!req.onreadystatechange;\n // restore original desc\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, xhrDesc || {});\n return result;\n }\n else {\n var SYMBOL_FAKE_ONREADYSTATECHANGE_1 = zoneSymbol('fake');\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {\n enumerable: true,\n configurable: true,\n get: function () {\n return this[SYMBOL_FAKE_ONREADYSTATECHANGE_1];\n },\n set: function (value) {\n this[SYMBOL_FAKE_ONREADYSTATECHANGE_1] = value;\n }\n });\n var req = new XMLHttpRequest();\n var detectFunc = function () { };\n req.onreadystatechange = detectFunc;\n var result = req[SYMBOL_FAKE_ONREADYSTATECHANGE_1] === detectFunc;\n req.onreadystatechange = null;\n return result;\n }\n}\nvar unboundKey = zoneSymbol('unbound');\n// Whenever any eventListener fires, we check the eventListener target and all parents\n// for `onwhatever` properties and replace them with zone-bound functions\n// - Chrome (for now)\nfunction patchViaCapturingAllTheEvents() {\n var _loop_1 = function (i) {\n var property = eventNames[i];\n var onproperty = 'on' + property;\n self.addEventListener(property, function (event) {\n var elt = event.target, bound, source;\n if (elt) {\n source = elt.constructor['name'] + '.' + onproperty;\n }\n else {\n source = 'unknown.' + onproperty;\n }\n while (elt) {\n if (elt[onproperty] && !elt[onproperty][unboundKey]) {\n bound = wrapWithCurrentZone(elt[onproperty], source);\n bound[unboundKey] = elt[onproperty];\n elt[onproperty] = bound;\n }\n elt = elt.parentElement;\n }\n }, true);\n };\n for (var i = 0; i < eventNames.length; i++) {\n _loop_1(i);\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction eventTargetPatch(_global, api) {\n var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video';\n var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket'\n .split(',');\n var EVENT_TARGET = 'EventTarget';\n var apis = [];\n var isWtf = _global['wtf'];\n var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(',');\n if (isWtf) {\n // Workaround for: https://github.com/google/tracing-framework/issues/555\n apis = WTF_ISSUE_555_ARRAY.map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET);\n }\n else if (_global[EVENT_TARGET]) {\n apis.push(EVENT_TARGET);\n }\n else {\n // Note: EventTarget is not available in all browsers,\n // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget\n apis = NO_EVENT_TARGET;\n }\n var isDisableIECheck = _global['__Zone_disable_IE_check'] || false;\n var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false;\n var ieOrEdge = isIEOrEdge();\n var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:';\n var FUNCTION_WRAPPER = '[object FunctionWrapper]';\n var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }';\n // predefine all __zone_symbol__ + eventName + true/false string\n for (var i = 0; i < eventNames.length; i++) {\n var eventName = eventNames[i];\n var falseEventName = eventName + FALSE_STR;\n var trueEventName = eventName + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n }\n // predefine all task.source string\n for (var i = 0; i < WTF_ISSUE_555.length; i++) {\n var target = WTF_ISSUE_555_ARRAY[i];\n var targets = globalSources[target] = {};\n for (var j = 0; j < eventNames.length; j++) {\n var eventName = eventNames[j];\n targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName;\n }\n }\n var checkIEAndCrossContext = function (nativeDelegate, delegate, target, args) {\n if (!isDisableIECheck && ieOrEdge) {\n if (isEnableCrossContextCheck) {\n try {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n else {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n }\n else if (isEnableCrossContextCheck) {\n try {\n delegate.toString();\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n return true;\n };\n var apiTypes = [];\n for (var i = 0; i < apis.length; i++) {\n var type = _global[apis[i]];\n apiTypes.push(type && type.prototype);\n }\n // vh is validateHandler to check event handler\n // is valid or not(for security check)\n patchEventTarget(_global, apiTypes, { vh: checkIEAndCrossContext });\n api.patchEventTarget = patchEventTarget;\n return true;\n}\nfunction patchEvent(global, api) {\n patchEventPrototype(global, api);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction registerElementPatch(_global) {\n if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) {\n return;\n }\n var _registerElement = document.registerElement;\n var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback'];\n document.registerElement = function (name, opts) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n var source = 'Document.registerElement::' + callback;\n var prototype = opts.prototype;\n if (prototype.hasOwnProperty(callback)) {\n var descriptor = ObjectGetOwnPropertyDescriptor(prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = wrapWithCurrentZone(descriptor.value, source);\n _redefineProperty(opts.prototype, callback, descriptor);\n }\n else {\n prototype[callback] = wrapWithCurrentZone(prototype[callback], source);\n }\n }\n else if (prototype[callback]) {\n prototype[callback] = wrapWithCurrentZone(prototype[callback], source);\n }\n });\n }\n return _registerElement.call(document, name, opts);\n };\n attachOriginToPatched(document.registerElement, _registerElement);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nZone.__load_patch('util', function (global, Zone, api) {\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n api.bindArguments = bindArguments;\n});\nZone.__load_patch('timers', function (global) {\n var set = 'set';\n var clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n});\nZone.__load_patch('requestAnimationFrame', function (global) {\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n});\nZone.__load_patch('blocking', function (global, Zone) {\n var blockingMethods = ['alert', 'prompt', 'confirm'];\n for (var i = 0; i < blockingMethods.length; i++) {\n var name_1 = blockingMethods[i];\n patchMethod(global, name_1, function (delegate, symbol, name) {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n});\nZone.__load_patch('EventTarget', function (global, Zone, api) {\n // load blackListEvents from global\n var SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');\n if (global[SYMBOL_BLACK_LISTED_EVENTS]) {\n Zone[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS];\n }\n patchEvent(global, api);\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]);\n }\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n patchClass('IntersectionObserver');\n patchClass('FileReader');\n});\nZone.__load_patch('on_property', function (global, Zone, api) {\n propertyDescriptorPatch(api, global);\n propertyPatch();\n registerElementPatch(global);\n});\nZone.__load_patch('canvas', function (global) {\n var HTMLCanvasElement = global['HTMLCanvasElement'];\n if (typeof HTMLCanvasElement !== 'undefined' && HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.toBlob) {\n patchMacroTask(HTMLCanvasElement.prototype, 'toBlob', function (self, args) {\n return { name: 'HTMLCanvasElement.toBlob', target: self, cbIdx: 0, args: args };\n });\n }\n});\nZone.__load_patch('XHR', function (global, Zone) {\n // Treat XMLHttpRequest as a macrotask.\n patchXHR(global);\n var XHR_TASK = zoneSymbol('xhrTask');\n var XHR_SYNC = zoneSymbol('xhrSync');\n var XHR_LISTENER = zoneSymbol('xhrListener');\n var XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n var XHR_URL = zoneSymbol('xhrURL');\n function patchXHR(window) {\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n function findPendingTask(target) {\n return target[XHR_TASK];\n }\n var oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n var oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n if (!oriAddListener) {\n var XMLHttpRequestEventTarget = window['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget) {\n var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget.prototype;\n oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n }\n var READY_STATE_CHANGE = 'readystatechange';\n var SCHEDULED = 'scheduled';\n function scheduleTask(task) {\n XMLHttpRequest[XHR_SCHEDULED] = false;\n var data = task.data;\n var target = data.target;\n // remove existing event listener\n var listener = target[XHR_LISTENER];\n if (!oriAddListener) {\n oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n if (listener) {\n oriRemoveListener.call(target, READY_STATE_CHANGE, listener);\n }\n var newListener = target[XHR_LISTENER] = function () {\n if (target.readyState === target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && XMLHttpRequest[XHR_SCHEDULED] && task.state === SCHEDULED) {\n task.invoke();\n }\n }\n };\n oriAddListener.call(target, READY_STATE_CHANGE, newListener);\n var storedTask = target[XHR_TASK];\n if (!storedTask) {\n target[XHR_TASK] = task;\n }\n sendNative.apply(target, data.args);\n XMLHttpRequest[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() { }\n function clearTask(task) {\n var data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () { return function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n self[XHR_URL] = args[1];\n return openNative.apply(self, args);\n }; });\n var XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';\n var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () { return function (self, args) {\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n }\n else {\n var options = {\n target: self,\n url: self[XHR_URL],\n isPeriodic: false,\n delay: null,\n args: args,\n aborted: false\n };\n return scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);\n }\n }; });\n var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { return function (self) {\n var task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || (task.data && task.data.aborted)) {\n return;\n }\n task.zone.cancelTask(task);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n }; });\n }\n});\nZone.__load_patch('geolocation', function (global) {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n});\nZone.__load_patch('PromiseRejectionEvent', function (global, Zone) {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n var eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach(function (eventTask) {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n var PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n var evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =\n findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] =\n findPromiseRejectionHandler('rejectionhandled');\n }\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n})));\n","/**\r\n * This file includes polyfills needed by Angular and is loaded before the app.\r\n * You can add your own extra polyfills to this file.\r\n *\r\n * This file is divided into 2 sections:\r\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\r\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\r\n * file.\r\n *\r\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\r\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\r\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\r\n *\r\n * Learn more in https://angular.io/guide/browser-support\r\n */\r\n\r\n/***************************************************************************************************\r\n * BROWSER POLYFILLS\r\n */\r\n\r\n/** IE9, IE10 and IE11 requires all of the following polyfills. **/\r\n// import 'core-js/es6/symbol';\r\n// import 'core-js/es6/object';\r\n// import 'core-js/es6/function';\r\n// import 'core-js/es6/parse-int';\r\n// import 'core-js/es6/parse-float';\r\n// import 'core-js/es6/number';\r\n// import 'core-js/es6/math';\r\n// import 'core-js/es6/string';\r\n// import 'core-js/es6/date';\r\n// import 'core-js/es6/array';\r\n// import 'core-js/es6/regexp';\r\n// import 'core-js/es6/map';\r\n// import 'core-js/es6/weak-map';\r\n// import 'core-js/es6/set';\r\n\r\n/**\r\n * If the application will be indexed by Google Search, the following is required.\r\n * Googlebot uses a renderer based on Chrome 41.\r\n * https://developers.google.com/search/docs/guides/rendering\r\n **/\r\n// import 'core-js/es6/array';\r\n\r\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\r\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\r\n\r\n/** IE10 and IE11 requires the following for the Reflect API. */\r\n// import 'core-js/es6/reflect';\r\n\r\n/**\r\n * Web Animations `@angular/platform-browser/animations`\r\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\r\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\r\n **/\r\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\r\n\r\n/**\r\n * By default, zone.js will patch all possible macroTask and DomEvents\r\n * user can disable parts of macroTask/DomEvents patch by setting following flags\r\n */\r\n\r\n // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\r\n // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\r\n // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\r\n\r\n /*\r\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\r\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\r\n */\r\n// (window as any).__Zone_enable_cross_context_check = true;\r\n\r\n/***************************************************************************************************\r\n * Zone JS is required by default for Angular itself.\r\n */\r\nimport 'zone.js/dist/zone'; // Included with Angular CLI.\r\n\r\n\r\n/***************************************************************************************************\r\n * APPLICATION IMPORTS\r\n */\r\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/jit-polyfills.js","webpack:///./node_modules/core-js/es7/reflect.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_array-from-iterable.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_metadata.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/es7.reflect.define-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.delete-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","webpack:///./node_modules/core-js/modules/es7.reflect.get-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.has-own-metadata.js","webpack:///./node_modules/core-js/modules/es7.reflect.metadata.js","webpack:///./node_modules/zone.js/dist/zone.js","webpack:///./src/polyfills.ts"],"names":[],"mappings":"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A;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,qBAAqB;AACrB,0BAA0B;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;;;;;;;AC/Ia;AACb,kBAAkB,mBAAO,CAAC,wEAAiB;AAC3C,cAAc,mBAAO,CAAC,wDAAS;AAC/B,eAAe,mBAAO,CAAC,kEAAc;AACrC,eAAe,mBAAO,CAAC,kEAAc;AACrC,iBAAiB,mBAAO,CAAC,sEAAgB;AACzC,YAAY,mBAAO,CAAC,4DAAW;AAC/B,wBAAwB,mBAAO,CAAC,0EAAkB;AAClD,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,eAAe,mBAAO,CAAC,sFAAwB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,qBAAqB;AACrB,0BAA0B;AAC1B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;ACpFa;AACb,aAAa,mBAAO,CAAC,4DAAW;AAChC,cAAc,mBAAO,CAAC,4DAAW;AACjC,eAAe,mBAAO,CAAC,gE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AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;;ACpEA,eAAe,mBAAO,CAAC,sDAAQ;AAC/B;;AAEA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA,iCAAiC,SAAS,EAAE;AAC5C,CAAC,YAAY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,qBAAqB;AAC3D,iCAAiC,aAAa;AAC9C;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;;;;;ACrBA;AACA,UAAU;AACV;;;;;;;;;;;;ACFA;;;;;;;;;;;;ACAA;;;;;;;;;;;;ACAA,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,eAAe,mBAAO,CAAC,kEAAc;AACrC,UAAU,mBAAO,CAAC,sDAAQ;AAC1B,cAAc,mBAAO,CAAC,kEAAc;AACpC;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,0DAAU;AAChC,iDAAiD;AACjD,CAAC;AACD;AACA,qBAAqB;AACrB;AACA,SAAS;AACT,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpDA,UAAU,mBAAO,CAAC,4DAAW;AAC7B,cAAc,mBAAO,CAAC,4DAAW;AACjC,aAAa,mBAAO,CAAC,4DAAW;AAChC,iDAAiD,mBAAO,CAAC,sEAAgB;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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gEAAa;AACrC,eAAe,mBAAO,CAAC,kEAAc;AACrC,gBAAgB,mBAAO,CAAC,oEAAe;AACvC;AACA;;AAEA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE;;;;;;;;;;;;ACdH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAA4D;AAC7D,CAAC,SACW;AACZ,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iEAAiE,+CAA+C,EAAE;AAClH;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,4DAA4D,0CAA0C;AACtG;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B,EAAE;AACnE;AACA;AACA;AACA,wCAAwC,6DAA6D,EAAE;AACvG,uCAAuC,WAAW,EAAE;AACpD;AACA,kCAAkC,aAAa,EAAE;AACjD,oCAAoC,WAAW,EAAE;AACjD,gCAAgC,aAAa,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B;AAC7B;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4HAA4H,wBAAwB,oCAAoC;AACxL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,sEAAsE;AACtJ;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oDAAoD;AAC5F;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qEAAqE,gBAAgB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,sCAAsC,MAAI;AAC1C;AACA;AACA,sCAAsC,MAAI;AAC1C;AACA;AACA,mFAAmF,kBAAkB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,mFAAmF,kBAAkB;AACrG;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG;AACvG;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,oCAAoC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAsB;AAChE,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8BAA8B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0BAA0B,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,6BAA6B,EAAE;AACpF;AACA;AACA;AACA;AACA,8CAA8C,kDAAkD,EAAE;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,sDAAsD;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+BAA+B,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,gBAAgB;AACrF;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA,yCAAyC,6BAA6B;AACtE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ,qFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,EAAE;AACZ;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,0CAA0C;AAC5G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;;ACjxGD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AAEH,mEAAmE;AACnE,+BAA+B;AAC/B,+BAA+B;AAC/B,iCAAiC;AACjC,kCAAkC;AAClC,oCAAoC;AACpC,+BAA+B;AAC/B,6BAA6B;AAC7B,+BAA+B;AAC/B,6BAA6B;AAC7B,8BAA8B;AAC9B,+BAA+B;AAC/B,4BAA4B;AAC5B,iCAAiC;AACjC,4BAA4B;AAE5B;;;;IAII;AACJ,8BAA8B;AAE9B,+EAA+E;AAC/E,oEAAoE;AAEpE,gEAAgE;AAChE,gCAAgC;AAEhC;;;;IAII;AACJ,8EAA8E;AAE9E;;;GAGG;AAEF,sGAAsG;AACtG,iGAAiG;AACjG,sHAAsH;AAEtH;;;EAGE;AACH,4DAA4D;AAE5D;;GAEG;AACwB,CAAE,6BAA6B;AAG1D;;GAEG","file":"polyfills.js","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport 'core-js/es7/reflect';\n","require('../modules/es7.reflect.define-metadata');\nrequire('../modules/es7.reflect.delete-metadata');\nrequire('../modules/es7.reflect.get-metadata');\nrequire('../modules/es7.reflect.get-metadata-keys');\nrequire('../modules/es7.reflect.get-own-metadata');\nrequire('../modules/es7.reflect.get-own-metadata-keys');\nrequire('../modules/es7.reflect.has-metadata');\nrequire('../modules/es7.reflect.has-own-metadata');\nrequire('../modules/es7.reflect.metadata');\nmodule.exports = require('../modules/_core').Reflect;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.6.2' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n","/**\n* @license\n* Copyright Google Inc. All Rights Reserved.\n*\n* Use of this source code is governed by an MIT-style license that can be\n* found in the LICENSE file at https://angular.io/license\n*/\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(factory());\n}(this, (function () { 'use strict';\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar Zone$1 = (function (global) {\n var performance = global['performance'];\n function mark(name) {\n performance && performance['mark'] && performance['mark'](name);\n }\n function performanceMeasure(name, label) {\n performance && performance['measure'] && performance['measure'](name, label);\n }\n mark('Zone');\n var checkDuplicate = global[('__zone_symbol__forceDuplicateZoneCheck')] === true;\n if (global['Zone']) {\n // if global['Zone'] already exists (maybe zone.js was already loaded or\n // some other lib also registered a global object named Zone), we may need\n // to throw an error, but sometimes user may not want this error.\n // For example,\n // we have two web pages, page1 includes zone.js, page2 doesn't.\n // and the 1st time user load page1 and page2, everything work fine,\n // but when user load page2 again, error occurs because global['Zone'] already exists.\n // so we add a flag to let user choose whether to throw this error or not.\n // By default, if existing Zone is from zone.js, we will not throw the error.\n if (checkDuplicate || typeof global['Zone'].__symbol__ !== 'function') {\n throw new Error('Zone already loaded.');\n }\n else {\n return global['Zone'];\n }\n }\n var Zone = /** @class */ (function () {\n function Zone(parent, zoneSpec) {\n this._parent = parent;\n this._name = zoneSpec ? zoneSpec.name || 'unnamed' : '';\n this._properties = zoneSpec && zoneSpec.properties || {};\n this._zoneDelegate =\n new ZoneDelegate(this, this._parent && this._parent._zoneDelegate, zoneSpec);\n }\n Zone.assertZonePatched = function () {\n if (global['Promise'] !== patches['ZoneAwarePromise']) {\n throw new Error('Zone.js has detected that ZoneAwarePromise `(window|global).Promise` ' +\n 'has been overwritten.\\n' +\n 'Most likely cause is that a Promise polyfill has been loaded ' +\n 'after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. ' +\n 'If you must load one, do so before loading zone.js.)');\n }\n };\n Object.defineProperty(Zone, \"root\", {\n get: function () {\n var zone = Zone.current;\n while (zone.parent) {\n zone = zone.parent;\n }\n return zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"current\", {\n get: function () {\n return _currentZoneFrame.zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone, \"currentTask\", {\n get: function () {\n return _currentTask;\n },\n enumerable: true,\n configurable: true\n });\n Zone.__load_patch = function (name, fn) {\n if (patches.hasOwnProperty(name)) {\n if (checkDuplicate) {\n throw Error('Already loaded patch: ' + name);\n }\n }\n else if (!global['__Zone_disable_' + name]) {\n var perfName = 'Zone:' + name;\n mark(perfName);\n patches[name] = fn(global, Zone, _api);\n performanceMeasure(perfName, perfName);\n }\n };\n Object.defineProperty(Zone.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Zone.prototype, \"name\", {\n get: function () {\n return this._name;\n },\n enumerable: true,\n configurable: true\n });\n Zone.prototype.get = function (key) {\n var zone = this.getZoneWith(key);\n if (zone)\n return zone._properties[key];\n };\n Zone.prototype.getZoneWith = function (key) {\n var current = this;\n while (current) {\n if (current._properties.hasOwnProperty(key)) {\n return current;\n }\n current = current._parent;\n }\n return null;\n };\n Zone.prototype.fork = function (zoneSpec) {\n if (!zoneSpec)\n throw new Error('ZoneSpec required!');\n return this._zoneDelegate.fork(this, zoneSpec);\n };\n Zone.prototype.wrap = function (callback, source) {\n if (typeof callback !== 'function') {\n throw new Error('Expecting function got: ' + callback);\n }\n var _callback = this._zoneDelegate.intercept(this, callback, source);\n var zone = this;\n return function () {\n return zone.runGuarded(_callback, this, arguments, source);\n };\n };\n Zone.prototype.run = function (callback, applyThis, applyArgs, source) {\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runGuarded = function (callback, applyThis, applyArgs, source) {\n if (applyThis === void 0) { applyThis = null; }\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n try {\n return this._zoneDelegate.invoke(this, callback, applyThis, applyArgs, source);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n _currentZoneFrame = _currentZoneFrame.parent;\n }\n };\n Zone.prototype.runTask = function (task, applyThis, applyArgs) {\n if (task.zone != this) {\n throw new Error('A task can only be run in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n }\n // https://github.com/angular/zone.js/issues/778, sometimes eventTask\n // will run in notScheduled(canceled) state, we should not try to\n // run such kind of task but just return\n if (task.state === notScheduled && (task.type === eventTask || task.type === macroTask)) {\n return;\n }\n var reEntryGuard = task.state != running;\n reEntryGuard && task._transitionTo(running, scheduled);\n task.runCount++;\n var previousTask = _currentTask;\n _currentTask = task;\n _currentZoneFrame = { parent: _currentZoneFrame, zone: this };\n try {\n if (task.type == macroTask && task.data && !task.data.isPeriodic) {\n task.cancelFn = undefined;\n }\n try {\n return this._zoneDelegate.invokeTask(this, task, applyThis, applyArgs);\n }\n catch (error) {\n if (this._zoneDelegate.handleError(this, error)) {\n throw error;\n }\n }\n }\n finally {\n // if the task's state is notScheduled or unknown, then it has already been cancelled\n // we should not reset the state to scheduled\n if (task.state !== notScheduled && task.state !== unknown) {\n if (task.type == eventTask || (task.data && task.data.isPeriodic)) {\n reEntryGuard && task._transitionTo(scheduled, running);\n }\n else {\n task.runCount = 0;\n this._updateTaskCount(task, -1);\n reEntryGuard &&\n task._transitionTo(notScheduled, running, notScheduled);\n }\n }\n _currentZoneFrame = _currentZoneFrame.parent;\n _currentTask = previousTask;\n }\n };\n Zone.prototype.scheduleTask = function (task) {\n if (task.zone && task.zone !== this) {\n // check if the task was rescheduled, the newZone\n // should not be the children of the original zone\n var newZone = this;\n while (newZone) {\n if (newZone === task.zone) {\n throw Error(\"can not reschedule task to \" + this.name + \" which is descendants of the original zone \" + task.zone.name);\n }\n newZone = newZone.parent;\n }\n }\n task._transitionTo(scheduling, notScheduled);\n var zoneDelegates = [];\n task._zoneDelegates = zoneDelegates;\n task._zone = this;\n try {\n task = this._zoneDelegate.scheduleTask(this, task);\n }\n catch (err) {\n // should set task's state to unknown when scheduleTask throw error\n // because the err may from reschedule, so the fromState maybe notScheduled\n task._transitionTo(unknown, scheduling, notScheduled);\n // TODO: @JiaLiPassion, should we check the result from handleError?\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n if (task._zoneDelegates === zoneDelegates) {\n // we have to check because internally the delegate can reschedule the task.\n this._updateTaskCount(task, 1);\n }\n if (task.state == scheduling) {\n task._transitionTo(scheduled, scheduling);\n }\n return task;\n };\n Zone.prototype.scheduleMicroTask = function (source, callback, data, customSchedule) {\n return this.scheduleTask(new ZoneTask(microTask, source, callback, data, customSchedule, undefined));\n };\n Zone.prototype.scheduleMacroTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(macroTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.scheduleEventTask = function (source, callback, data, customSchedule, customCancel) {\n return this.scheduleTask(new ZoneTask(eventTask, source, callback, data, customSchedule, customCancel));\n };\n Zone.prototype.cancelTask = function (task) {\n if (task.zone != this)\n throw new Error('A task can only be cancelled in the zone of creation! (Creation: ' +\n (task.zone || NO_ZONE).name + '; Execution: ' + this.name + ')');\n task._transitionTo(canceling, scheduled, running);\n try {\n this._zoneDelegate.cancelTask(this, task);\n }\n catch (err) {\n // if error occurs when cancelTask, transit the state to unknown\n task._transitionTo(unknown, canceling);\n this._zoneDelegate.handleError(this, err);\n throw err;\n }\n this._updateTaskCount(task, -1);\n task._transitionTo(notScheduled, canceling);\n task.runCount = 0;\n return task;\n };\n Zone.prototype._updateTaskCount = function (task, count) {\n var zoneDelegates = task._zoneDelegates;\n if (count == -1) {\n task._zoneDelegates = null;\n }\n for (var i = 0; i < zoneDelegates.length; i++) {\n zoneDelegates[i]._updateTaskCount(task.type, count);\n }\n };\n Zone.__symbol__ = __symbol__;\n return Zone;\n }());\n var DELEGATE_ZS = {\n name: '',\n onHasTask: function (delegate, _, target, hasTaskState) { return delegate.hasTask(target, hasTaskState); },\n onScheduleTask: function (delegate, _, target, task) {\n return delegate.scheduleTask(target, task);\n },\n onInvokeTask: function (delegate, _, target, task, applyThis, applyArgs) {\n return delegate.invokeTask(target, task, applyThis, applyArgs);\n },\n onCancelTask: function (delegate, _, target, task) { return delegate.cancelTask(target, task); }\n };\n var ZoneDelegate = /** @class */ (function () {\n function ZoneDelegate(zone, parentDelegate, zoneSpec) {\n this._taskCounts = { 'microTask': 0, 'macroTask': 0, 'eventTask': 0 };\n this.zone = zone;\n this._parentDelegate = parentDelegate;\n this._forkZS = zoneSpec && (zoneSpec && zoneSpec.onFork ? zoneSpec : parentDelegate._forkZS);\n this._forkDlgt = zoneSpec && (zoneSpec.onFork ? parentDelegate : parentDelegate._forkDlgt);\n this._forkCurrZone = zoneSpec && (zoneSpec.onFork ? this.zone : parentDelegate.zone);\n this._interceptZS =\n zoneSpec && (zoneSpec.onIntercept ? zoneSpec : parentDelegate._interceptZS);\n this._interceptDlgt =\n zoneSpec && (zoneSpec.onIntercept ? parentDelegate : parentDelegate._interceptDlgt);\n this._interceptCurrZone =\n zoneSpec && (zoneSpec.onIntercept ? this.zone : parentDelegate.zone);\n this._invokeZS = zoneSpec && (zoneSpec.onInvoke ? zoneSpec : parentDelegate._invokeZS);\n this._invokeDlgt =\n zoneSpec && (zoneSpec.onInvoke ? parentDelegate : parentDelegate._invokeDlgt);\n this._invokeCurrZone = zoneSpec && (zoneSpec.onInvoke ? this.zone : parentDelegate.zone);\n this._handleErrorZS =\n zoneSpec && (zoneSpec.onHandleError ? zoneSpec : parentDelegate._handleErrorZS);\n this._handleErrorDlgt =\n zoneSpec && (zoneSpec.onHandleError ? parentDelegate : parentDelegate._handleErrorDlgt);\n this._handleErrorCurrZone =\n zoneSpec && (zoneSpec.onHandleError ? this.zone : parentDelegate.zone);\n this._scheduleTaskZS =\n zoneSpec && (zoneSpec.onScheduleTask ? zoneSpec : parentDelegate._scheduleTaskZS);\n this._scheduleTaskDlgt = zoneSpec &&\n (zoneSpec.onScheduleTask ? parentDelegate : parentDelegate._scheduleTaskDlgt);\n this._scheduleTaskCurrZone =\n zoneSpec && (zoneSpec.onScheduleTask ? this.zone : parentDelegate.zone);\n this._invokeTaskZS =\n zoneSpec && (zoneSpec.onInvokeTask ? zoneSpec : parentDelegate._invokeTaskZS);\n this._invokeTaskDlgt =\n zoneSpec && (zoneSpec.onInvokeTask ? parentDelegate : parentDelegate._invokeTaskDlgt);\n this._invokeTaskCurrZone =\n zoneSpec && (zoneSpec.onInvokeTask ? this.zone : parentDelegate.zone);\n this._cancelTaskZS =\n zoneSpec && (zoneSpec.onCancelTask ? zoneSpec : parentDelegate._cancelTaskZS);\n this._cancelTaskDlgt =\n zoneSpec && (zoneSpec.onCancelTask ? parentDelegate : parentDelegate._cancelTaskDlgt);\n this._cancelTaskCurrZone =\n zoneSpec && (zoneSpec.onCancelTask ? this.zone : parentDelegate.zone);\n this._hasTaskZS = null;\n this._hasTaskDlgt = null;\n this._hasTaskDlgtOwner = null;\n this._hasTaskCurrZone = null;\n var zoneSpecHasTask = zoneSpec && zoneSpec.onHasTask;\n var parentHasTask = parentDelegate && parentDelegate._hasTaskZS;\n if (zoneSpecHasTask || parentHasTask) {\n // If we need to report hasTask, than this ZS needs to do ref counting on tasks. In such\n // a case all task related interceptors must go through this ZD. We can't short circuit it.\n this._hasTaskZS = zoneSpecHasTask ? zoneSpec : DELEGATE_ZS;\n this._hasTaskDlgt = parentDelegate;\n this._hasTaskDlgtOwner = this;\n this._hasTaskCurrZone = zone;\n if (!zoneSpec.onScheduleTask) {\n this._scheduleTaskZS = DELEGATE_ZS;\n this._scheduleTaskDlgt = parentDelegate;\n this._scheduleTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onInvokeTask) {\n this._invokeTaskZS = DELEGATE_ZS;\n this._invokeTaskDlgt = parentDelegate;\n this._invokeTaskCurrZone = this.zone;\n }\n if (!zoneSpec.onCancelTask) {\n this._cancelTaskZS = DELEGATE_ZS;\n this._cancelTaskDlgt = parentDelegate;\n this._cancelTaskCurrZone = this.zone;\n }\n }\n }\n ZoneDelegate.prototype.fork = function (targetZone, zoneSpec) {\n return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, targetZone, zoneSpec) :\n new Zone(targetZone, zoneSpec);\n };\n ZoneDelegate.prototype.intercept = function (targetZone, callback, source) {\n return this._interceptZS ?\n this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, targetZone, callback, source) :\n callback;\n };\n ZoneDelegate.prototype.invoke = function (targetZone, callback, applyThis, applyArgs, source) {\n return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, targetZone, callback, applyThis, applyArgs, source) :\n callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.handleError = function (targetZone, error) {\n return this._handleErrorZS ?\n this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, targetZone, error) :\n true;\n };\n ZoneDelegate.prototype.scheduleTask = function (targetZone, task) {\n var returnTask = task;\n if (this._scheduleTaskZS) {\n if (this._hasTaskZS) {\n returnTask._zoneDelegates.push(this._hasTaskDlgtOwner);\n }\n returnTask = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, targetZone, task);\n if (!returnTask)\n returnTask = task;\n }\n else {\n if (task.scheduleFn) {\n task.scheduleFn(task);\n }\n else if (task.type == microTask) {\n scheduleMicroTask(task);\n }\n else {\n throw new Error('Task is missing scheduleFn.');\n }\n }\n return returnTask;\n };\n ZoneDelegate.prototype.invokeTask = function (targetZone, task, applyThis, applyArgs) {\n return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, targetZone, task, applyThis, applyArgs) :\n task.callback.apply(applyThis, applyArgs);\n };\n ZoneDelegate.prototype.cancelTask = function (targetZone, task) {\n var value;\n if (this._cancelTaskZS) {\n value = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, targetZone, task);\n }\n else {\n if (!task.cancelFn) {\n throw Error('Task is not cancelable');\n }\n value = task.cancelFn(task);\n }\n return value;\n };\n ZoneDelegate.prototype.hasTask = function (targetZone, isEmpty) {\n // hasTask should not throw error so other ZoneDelegate\n // can still trigger hasTask callback\n try {\n this._hasTaskZS &&\n this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, targetZone, isEmpty);\n }\n catch (err) {\n this.handleError(targetZone, err);\n }\n };\n ZoneDelegate.prototype._updateTaskCount = function (type, count) {\n var counts = this._taskCounts;\n var prev = counts[type];\n var next = counts[type] = prev + count;\n if (next < 0) {\n throw new Error('More tasks executed then were scheduled.');\n }\n if (prev == 0 || next == 0) {\n var isEmpty = {\n microTask: counts['microTask'] > 0,\n macroTask: counts['macroTask'] > 0,\n eventTask: counts['eventTask'] > 0,\n change: type\n };\n this.hasTask(this.zone, isEmpty);\n }\n };\n return ZoneDelegate;\n }());\n var ZoneTask = /** @class */ (function () {\n function ZoneTask(type, source, callback, options, scheduleFn, cancelFn) {\n this._zone = null;\n this.runCount = 0;\n this._zoneDelegates = null;\n this._state = 'notScheduled';\n this.type = type;\n this.source = source;\n this.data = options;\n this.scheduleFn = scheduleFn;\n this.cancelFn = cancelFn;\n this.callback = callback;\n var self = this;\n // TODO: @JiaLiPassion options should have interface\n if (type === eventTask && options && options.useG) {\n this.invoke = ZoneTask.invokeTask;\n }\n else {\n this.invoke = function () {\n return ZoneTask.invokeTask.call(global, self, this, arguments);\n };\n }\n }\n ZoneTask.invokeTask = function (task, target, args) {\n if (!task) {\n task = this;\n }\n _numberOfNestedTaskFrames++;\n try {\n task.runCount++;\n return task.zone.runTask(task, target, args);\n }\n finally {\n if (_numberOfNestedTaskFrames == 1) {\n drainMicroTaskQueue();\n }\n _numberOfNestedTaskFrames--;\n }\n };\n Object.defineProperty(ZoneTask.prototype, \"zone\", {\n get: function () {\n return this._zone;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZoneTask.prototype, \"state\", {\n get: function () {\n return this._state;\n },\n enumerable: true,\n configurable: true\n });\n ZoneTask.prototype.cancelScheduleRequest = function () {\n this._transitionTo(notScheduled, scheduling);\n };\n ZoneTask.prototype._transitionTo = function (toState, fromState1, fromState2) {\n if (this._state === fromState1 || this._state === fromState2) {\n this._state = toState;\n if (toState == notScheduled) {\n this._zoneDelegates = null;\n }\n }\n else {\n throw new Error(this.type + \" '\" + this.source + \"': can not transition to '\" + toState + \"', expecting state '\" + fromState1 + \"'\" + (fromState2 ? ' or \\'' + fromState2 + '\\'' : '') + \", was '\" + this._state + \"'.\");\n }\n };\n ZoneTask.prototype.toString = function () {\n if (this.data && typeof this.data.handleId !== 'undefined') {\n return this.data.handleId.toString();\n }\n else {\n return Object.prototype.toString.call(this);\n }\n };\n // add toJSON method to prevent cyclic error when\n // call JSON.stringify(zoneTask)\n ZoneTask.prototype.toJSON = function () {\n return {\n type: this.type,\n state: this.state,\n source: this.source,\n zone: this.zone.name,\n runCount: this.runCount\n };\n };\n return ZoneTask;\n }());\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// MICROTASK QUEUE\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var symbolSetTimeout = __symbol__('setTimeout');\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var _microTaskQueue = [];\n var _isDrainingMicrotaskQueue = false;\n var nativeMicroTaskQueuePromise;\n function scheduleMicroTask(task) {\n // if we are not running in any task, and there has not been anything scheduled\n // we must bootstrap the initial task creation by manually scheduling the drain\n if (_numberOfNestedTaskFrames === 0 && _microTaskQueue.length === 0) {\n // We are not running in Task, so we need to kickstart the microtask queue.\n if (!nativeMicroTaskQueuePromise) {\n if (global[symbolPromise]) {\n nativeMicroTaskQueuePromise = global[symbolPromise].resolve(0);\n }\n }\n if (nativeMicroTaskQueuePromise) {\n var nativeThen = nativeMicroTaskQueuePromise[symbolThen];\n if (!nativeThen) {\n // native Promise is not patchable, we need to use `then` directly\n // issue 1078\n nativeThen = nativeMicroTaskQueuePromise['then'];\n }\n nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue);\n }\n else {\n global[symbolSetTimeout](drainMicroTaskQueue, 0);\n }\n }\n task && _microTaskQueue.push(task);\n }\n function drainMicroTaskQueue() {\n if (!_isDrainingMicrotaskQueue) {\n _isDrainingMicrotaskQueue = true;\n while (_microTaskQueue.length) {\n var queue = _microTaskQueue;\n _microTaskQueue = [];\n for (var i = 0; i < queue.length; i++) {\n var task = queue[i];\n try {\n task.zone.runTask(task, null, null);\n }\n catch (error) {\n _api.onUnhandledError(error);\n }\n }\n }\n _api.microtaskDrainDone();\n _isDrainingMicrotaskQueue = false;\n }\n }\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n /// BOOTSTRAP\n //////////////////////////////////////////////////////\n //////////////////////////////////////////////////////\n var NO_ZONE = { name: 'NO ZONE' };\n var notScheduled = 'notScheduled', scheduling = 'scheduling', scheduled = 'scheduled', running = 'running', canceling = 'canceling', unknown = 'unknown';\n var microTask = 'microTask', macroTask = 'macroTask', eventTask = 'eventTask';\n var patches = {};\n var _api = {\n symbol: __symbol__,\n currentZoneFrame: function () { return _currentZoneFrame; },\n onUnhandledError: noop,\n microtaskDrainDone: noop,\n scheduleMicroTask: scheduleMicroTask,\n showUncaughtError: function () { return !Zone[__symbol__('ignoreConsoleErrorUncaughtError')]; },\n patchEventTarget: function () { return []; },\n patchOnProperties: noop,\n patchMethod: function () { return noop; },\n bindArguments: function () { return []; },\n patchThen: function () { return noop; },\n setNativePromise: function (NativePromise) {\n // sometimes NativePromise.resolve static function\n // is not ready yet, (such as core-js/es6.promise)\n // so we need to check here.\n if (NativePromise && typeof NativePromise.resolve === 'function') {\n nativeMicroTaskQueuePromise = NativePromise.resolve(0);\n }\n },\n };\n var _currentZoneFrame = { parent: null, zone: new Zone(null, null) };\n var _currentTask = null;\n var _numberOfNestedTaskFrames = 0;\n function noop() { }\n function __symbol__(name) {\n return '__zone_symbol__' + name;\n }\n performanceMeasure('Zone', 'Zone');\n return global['Zone'] = Zone;\n})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global);\n\nvar __values = (undefined && undefined.__values) || function (o) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\n if (m) return m.call(o);\n return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n};\nZone.__load_patch('ZoneAwarePromise', function (global, Zone, api) {\n var ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var ObjectDefineProperty = Object.defineProperty;\n function readableObjectToString(obj) {\n if (obj && obj.toString === Object.prototype.toString) {\n var className = obj.constructor && obj.constructor.name;\n return (className ? className : '') + ': ' + JSON.stringify(obj);\n }\n return obj ? obj.toString() : Object.prototype.toString.call(obj);\n }\n var __symbol__ = api.symbol;\n var _uncaughtPromiseErrors = [];\n var symbolPromise = __symbol__('Promise');\n var symbolThen = __symbol__('then');\n var creationTrace = '__creationTrace__';\n api.onUnhandledError = function (e) {\n if (api.showUncaughtError()) {\n var rejection = e && e.rejection;\n if (rejection) {\n console.error('Unhandled Promise rejection:', rejection instanceof Error ? rejection.message : rejection, '; Zone:', e.zone.name, '; Task:', e.task && e.task.source, '; Value:', rejection, rejection instanceof Error ? rejection.stack : undefined);\n }\n else {\n console.error(e);\n }\n }\n };\n api.microtaskDrainDone = function () {\n while (_uncaughtPromiseErrors.length) {\n var _loop_1 = function () {\n var uncaughtPromiseError = _uncaughtPromiseErrors.shift();\n try {\n uncaughtPromiseError.zone.runGuarded(function () {\n throw uncaughtPromiseError;\n });\n }\n catch (error) {\n handleUnhandledRejection(error);\n }\n };\n while (_uncaughtPromiseErrors.length) {\n _loop_1();\n }\n }\n };\n var UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL = __symbol__('unhandledPromiseRejectionHandler');\n function handleUnhandledRejection(e) {\n api.onUnhandledError(e);\n try {\n var handler = Zone[UNHANDLED_PROMISE_REJECTION_HANDLER_SYMBOL];\n if (handler && typeof handler === 'function') {\n handler.call(this, e);\n }\n }\n catch (err) {\n }\n }\n function isThenable(value) {\n return value && value.then;\n }\n function forwardResolution(value) {\n return value;\n }\n function forwardRejection(rejection) {\n return ZoneAwarePromise.reject(rejection);\n }\n var symbolState = __symbol__('state');\n var symbolValue = __symbol__('value');\n var symbolFinally = __symbol__('finally');\n var symbolParentPromiseValue = __symbol__('parentPromiseValue');\n var symbolParentPromiseState = __symbol__('parentPromiseState');\n var source = 'Promise.then';\n var UNRESOLVED = null;\n var RESOLVED = true;\n var REJECTED = false;\n var REJECTED_NO_CATCH = 0;\n function makeResolver(promise, state) {\n return function (v) {\n try {\n resolvePromise(promise, state, v);\n }\n catch (err) {\n resolvePromise(promise, false, err);\n }\n // Do not return value or you will break the Promise spec.\n };\n }\n var once = function () {\n var wasCalled = false;\n return function wrapper(wrappedFunction) {\n return function () {\n if (wasCalled) {\n return;\n }\n wasCalled = true;\n wrappedFunction.apply(null, arguments);\n };\n };\n };\n var TYPE_ERROR = 'Promise resolved with itself';\n var CURRENT_TASK_TRACE_SYMBOL = __symbol__('currentTaskTrace');\n // Promise Resolution\n function resolvePromise(promise, state, value) {\n var onceWrapper = once();\n if (promise === value) {\n throw new TypeError(TYPE_ERROR);\n }\n if (promise[symbolState] === UNRESOLVED) {\n // should only get value.then once based on promise spec.\n var then = null;\n try {\n if (typeof value === 'object' || typeof value === 'function') {\n then = value && value.then;\n }\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n return promise;\n }\n // if (value instanceof ZoneAwarePromise) {\n if (state !== REJECTED && value instanceof ZoneAwarePromise &&\n value.hasOwnProperty(symbolState) && value.hasOwnProperty(symbolValue) &&\n value[symbolState] !== UNRESOLVED) {\n clearRejectedNoCatch(value);\n resolvePromise(promise, value[symbolState], value[symbolValue]);\n }\n else if (state !== REJECTED && typeof then === 'function') {\n try {\n then.call(value, onceWrapper(makeResolver(promise, state)), onceWrapper(makeResolver(promise, false)));\n }\n catch (err) {\n onceWrapper(function () {\n resolvePromise(promise, false, err);\n })();\n }\n }\n else {\n promise[symbolState] = state;\n var queue = promise[symbolValue];\n promise[symbolValue] = value;\n if (promise[symbolFinally] === symbolFinally) {\n // the promise is generated by Promise.prototype.finally\n if (state === RESOLVED) {\n // the state is resolved, should ignore the value\n // and use parent promise value\n promise[symbolState] = promise[symbolParentPromiseState];\n promise[symbolValue] = promise[symbolParentPromiseValue];\n }\n }\n // record task information in value when error occurs, so we can\n // do some additional work such as render longStackTrace\n if (state === REJECTED && value instanceof Error) {\n // check if longStackTraceZone is here\n var trace = Zone.currentTask && Zone.currentTask.data &&\n Zone.currentTask.data[creationTrace];\n if (trace) {\n // only keep the long stack trace into error when in longStackTraceZone\n ObjectDefineProperty(value, CURRENT_TASK_TRACE_SYMBOL, { configurable: true, enumerable: false, writable: true, value: trace });\n }\n }\n for (var i = 0; i < queue.length;) {\n scheduleResolveOrReject(promise, queue[i++], queue[i++], queue[i++], queue[i++]);\n }\n if (queue.length == 0 && state == REJECTED) {\n promise[symbolState] = REJECTED_NO_CATCH;\n try {\n // try to print more readable error log\n throw new Error('Uncaught (in promise): ' + readableObjectToString(value) +\n (value && value.stack ? '\\n' + value.stack : ''));\n }\n catch (err) {\n var error_1 = err;\n error_1.rejection = value;\n error_1.promise = promise;\n error_1.zone = Zone.current;\n error_1.task = Zone.currentTask;\n _uncaughtPromiseErrors.push(error_1);\n api.scheduleMicroTask(); // to make sure that it is running\n }\n }\n }\n }\n // Resolving an already resolved promise is a noop.\n return promise;\n }\n var REJECTION_HANDLED_HANDLER = __symbol__('rejectionHandledHandler');\n function clearRejectedNoCatch(promise) {\n if (promise[symbolState] === REJECTED_NO_CATCH) {\n // if the promise is rejected no catch status\n // and queue.length > 0, means there is a error handler\n // here to handle the rejected promise, we should trigger\n // windows.rejectionhandled eventHandler or nodejs rejectionHandled\n // eventHandler\n try {\n var handler = Zone[REJECTION_HANDLED_HANDLER];\n if (handler && typeof handler === 'function') {\n handler.call(this, { rejection: promise[symbolValue], promise: promise });\n }\n }\n catch (err) {\n }\n promise[symbolState] = REJECTED;\n for (var i = 0; i < _uncaughtPromiseErrors.length; i++) {\n if (promise === _uncaughtPromiseErrors[i].promise) {\n _uncaughtPromiseErrors.splice(i, 1);\n }\n }\n }\n }\n function scheduleResolveOrReject(promise, zone, chainPromise, onFulfilled, onRejected) {\n clearRejectedNoCatch(promise);\n var promiseState = promise[symbolState];\n var delegate = promiseState ?\n (typeof onFulfilled === 'function') ? onFulfilled : forwardResolution :\n (typeof onRejected === 'function') ? onRejected : forwardRejection;\n zone.scheduleMicroTask(source, function () {\n try {\n var parentPromiseValue = promise[symbolValue];\n var isFinallyPromise = chainPromise && symbolFinally === chainPromise[symbolFinally];\n if (isFinallyPromise) {\n // if the promise is generated from finally call, keep parent promise's state and value\n chainPromise[symbolParentPromiseValue] = parentPromiseValue;\n chainPromise[symbolParentPromiseState] = promiseState;\n }\n // should not pass value to finally callback\n var value = zone.run(delegate, undefined, isFinallyPromise && delegate !== forwardRejection && delegate !== forwardResolution ?\n [] :\n [parentPromiseValue]);\n resolvePromise(chainPromise, true, value);\n }\n catch (error) {\n // if error occurs, should always return this error\n resolvePromise(chainPromise, false, error);\n }\n }, chainPromise);\n }\n var ZONE_AWARE_PROMISE_TO_STRING = 'function ZoneAwarePromise() { [native code] }';\n var ZoneAwarePromise = /** @class */ (function () {\n function ZoneAwarePromise(executor) {\n var promise = this;\n if (!(promise instanceof ZoneAwarePromise)) {\n throw new Error('Must be an instanceof Promise.');\n }\n promise[symbolState] = UNRESOLVED;\n promise[symbolValue] = []; // queue;\n try {\n executor && executor(makeResolver(promise, RESOLVED), makeResolver(promise, REJECTED));\n }\n catch (error) {\n resolvePromise(promise, false, error);\n }\n }\n ZoneAwarePromise.toString = function () {\n return ZONE_AWARE_PROMISE_TO_STRING;\n };\n ZoneAwarePromise.resolve = function (value) {\n return resolvePromise(new this(null), RESOLVED, value);\n };\n ZoneAwarePromise.reject = function (error) {\n return resolvePromise(new this(null), REJECTED, error);\n };\n ZoneAwarePromise.race = function (values) {\n var e_1, _a;\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n function onResolve(value) {\n promise && (promise = null || resolve(value));\n }\n function onReject(error) {\n promise && (promise = null || reject(error));\n }\n try {\n for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n var value = values_1_1.value;\n if (!isThenable(value)) {\n value = this.resolve(value);\n }\n value.then(onResolve, onReject);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return promise;\n };\n ZoneAwarePromise.all = function (values) {\n var e_2, _a;\n var resolve;\n var reject;\n var promise = new this(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n // Start at 2 to prevent prematurely resolving if .then is called immediately.\n var unresolvedCount = 2;\n var valueIndex = 0;\n var resolvedValues = [];\n var _loop_2 = function (value) {\n if (!isThenable(value)) {\n value = this_1.resolve(value);\n }\n var curValueIndex = valueIndex;\n value.then(function (value) {\n resolvedValues[curValueIndex] = value;\n unresolvedCount--;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n }, reject);\n unresolvedCount++;\n valueIndex++;\n };\n var this_1 = this;\n try {\n for (var values_2 = __values(values), values_2_1 = values_2.next(); !values_2_1.done; values_2_1 = values_2.next()) {\n var value = values_2_1.value;\n _loop_2(value);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (values_2_1 && !values_2_1.done && (_a = values_2.return)) _a.call(values_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n // Make the unresolvedCount zero-based again.\n unresolvedCount -= 2;\n if (unresolvedCount === 0) {\n resolve(resolvedValues);\n }\n return promise;\n };\n ZoneAwarePromise.prototype.then = function (onFulfilled, onRejected) {\n var chainPromise = new this.constructor(null);\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFulfilled, onRejected);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFulfilled, onRejected);\n }\n return chainPromise;\n };\n ZoneAwarePromise.prototype.catch = function (onRejected) {\n return this.then(null, onRejected);\n };\n ZoneAwarePromise.prototype.finally = function (onFinally) {\n var chainPromise = new this.constructor(null);\n chainPromise[symbolFinally] = symbolFinally;\n var zone = Zone.current;\n if (this[symbolState] == UNRESOLVED) {\n this[symbolValue].push(zone, chainPromise, onFinally, onFinally);\n }\n else {\n scheduleResolveOrReject(this, zone, chainPromise, onFinally, onFinally);\n }\n return chainPromise;\n };\n return ZoneAwarePromise;\n }());\n // Protect against aggressive optimizers dropping seemingly unused properties.\n // E.g. Closure Compiler in advanced mode.\n ZoneAwarePromise['resolve'] = ZoneAwarePromise.resolve;\n ZoneAwarePromise['reject'] = ZoneAwarePromise.reject;\n ZoneAwarePromise['race'] = ZoneAwarePromise.race;\n ZoneAwarePromise['all'] = ZoneAwarePromise.all;\n var NativePromise = global[symbolPromise] = global['Promise'];\n var ZONE_AWARE_PROMISE = Zone.__symbol__('ZoneAwarePromise');\n var desc = ObjectGetOwnPropertyDescriptor(global, 'Promise');\n if (!desc || desc.configurable) {\n desc && delete desc.writable;\n desc && delete desc.value;\n if (!desc) {\n desc = { configurable: true, enumerable: true };\n }\n desc.get = function () {\n // if we already set ZoneAwarePromise, use patched one\n // otherwise return native one.\n return global[ZONE_AWARE_PROMISE] ? global[ZONE_AWARE_PROMISE] : global[symbolPromise];\n };\n desc.set = function (NewNativePromise) {\n if (NewNativePromise === ZoneAwarePromise) {\n // if the NewNativePromise is ZoneAwarePromise\n // save to global\n global[ZONE_AWARE_PROMISE] = NewNativePromise;\n }\n else {\n // if the NewNativePromise is not ZoneAwarePromise\n // for example: after load zone.js, some library just\n // set es6-promise to global, if we set it to global\n // directly, assertZonePatched will fail and angular\n // will not loaded, so we just set the NewNativePromise\n // to global[symbolPromise], so the result is just like\n // we load ES6 Promise before zone.js\n global[symbolPromise] = NewNativePromise;\n if (!NewNativePromise.prototype[symbolThen]) {\n patchThen(NewNativePromise);\n }\n api.setNativePromise(NewNativePromise);\n }\n };\n ObjectDefineProperty(global, 'Promise', desc);\n }\n global['Promise'] = ZoneAwarePromise;\n var symbolThenPatched = __symbol__('thenPatched');\n function patchThen(Ctor) {\n var proto = Ctor.prototype;\n var prop = ObjectGetOwnPropertyDescriptor(proto, 'then');\n if (prop && (prop.writable === false || !prop.configurable)) {\n // check Ctor.prototype.then propertyDescriptor is writable or not\n // in meteor env, writable is false, we should ignore such case\n return;\n }\n var originalThen = proto.then;\n // Keep a reference to the original method.\n proto[symbolThen] = originalThen;\n Ctor.prototype.then = function (onResolve, onReject) {\n var _this = this;\n var wrapped = new ZoneAwarePromise(function (resolve, reject) {\n originalThen.call(_this, resolve, reject);\n });\n return wrapped.then(onResolve, onReject);\n };\n Ctor[symbolThenPatched] = true;\n }\n api.patchThen = patchThen;\n if (NativePromise) {\n patchThen(NativePromise);\n }\n // This is not part of public API, but it is useful for tests, so we expose it.\n Promise[Zone.__symbol__('uncaughtPromiseErrors')] = _uncaughtPromiseErrors;\n return ZoneAwarePromise;\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nZone.__load_patch('fetch', function (global, Zone, api) {\n var fetch = global['fetch'];\n var ZoneAwarePromise = global.Promise;\n var symbolThenPatched = api.symbol('thenPatched');\n var fetchTaskScheduling = api.symbol('fetchTaskScheduling');\n var fetchTaskAborting = api.symbol('fetchTaskAborting');\n if (typeof fetch !== 'function') {\n return;\n }\n var OriginalAbortController = global['AbortController'];\n var supportAbort = typeof OriginalAbortController === 'function';\n var abortNative = null;\n if (supportAbort) {\n global['AbortController'] = function () {\n var abortController = new OriginalAbortController();\n var signal = abortController.signal;\n signal.abortController = abortController;\n return abortController;\n };\n abortNative = api.patchMethod(OriginalAbortController.prototype, 'abort', function (delegate) { return function (self, args) {\n if (self.task) {\n return self.task.zone.cancelTask(self.task);\n }\n return delegate.apply(self, args);\n }; });\n }\n var placeholder = function () { };\n global['fetch'] = function () {\n var _this = this;\n var args = Array.prototype.slice.call(arguments);\n var options = args.length > 1 ? args[1] : null;\n var signal = options && options.signal;\n return new Promise(function (res, rej) {\n var task = Zone.current.scheduleMacroTask('fetch', placeholder, args, function () {\n var fetchPromise;\n var zone = Zone.current;\n try {\n zone[fetchTaskScheduling] = true;\n fetchPromise = fetch.apply(_this, args);\n }\n catch (error) {\n rej(error);\n return;\n }\n finally {\n zone[fetchTaskScheduling] = false;\n }\n if (!(fetchPromise instanceof ZoneAwarePromise)) {\n var ctor = fetchPromise.constructor;\n if (!ctor[symbolThenPatched]) {\n api.patchThen(ctor);\n }\n }\n fetchPromise.then(function (resource) {\n if (task.state !== 'notScheduled') {\n task.invoke();\n }\n res(resource);\n }, function (error) {\n if (task.state !== 'notScheduled') {\n task.invoke();\n }\n rej(error);\n });\n }, function () {\n if (!supportAbort) {\n rej('No AbortController supported, can not cancel fetch');\n return;\n }\n if (signal && signal.abortController && !signal.aborted &&\n typeof signal.abortController.abort === 'function' && abortNative) {\n try {\n Zone.current[fetchTaskAborting] = true;\n abortNative.call(signal.abortController);\n }\n finally {\n Zone.current[fetchTaskAborting] = false;\n }\n }\n else {\n rej('cancel fetch need a AbortController.signal');\n }\n });\n if (signal && signal.abortController) {\n signal.abortController.task = task;\n }\n });\n };\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Suppress closure compiler errors about unknown 'Zone' variable\n * @fileoverview\n * @suppress {undefinedVars,globalThis,missingRequire}\n */\n// issue #989, to reduce bundle size, use short name\n/** Object.getOwnPropertyDescriptor */\nvar ObjectGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n/** Object.defineProperty */\nvar ObjectDefineProperty = Object.defineProperty;\n/** Object.getPrototypeOf */\nvar ObjectGetPrototypeOf = Object.getPrototypeOf;\n/** Object.create */\nvar ObjectCreate = Object.create;\n/** Array.prototype.slice */\nvar ArraySlice = Array.prototype.slice;\n/** addEventListener string const */\nvar ADD_EVENT_LISTENER_STR = 'addEventListener';\n/** removeEventListener string const */\nvar REMOVE_EVENT_LISTENER_STR = 'removeEventListener';\n/** zoneSymbol addEventListener */\nvar ZONE_SYMBOL_ADD_EVENT_LISTENER = Zone.__symbol__(ADD_EVENT_LISTENER_STR);\n/** zoneSymbol removeEventListener */\nvar ZONE_SYMBOL_REMOVE_EVENT_LISTENER = Zone.__symbol__(REMOVE_EVENT_LISTENER_STR);\n/** true string const */\nvar TRUE_STR = 'true';\n/** false string const */\nvar FALSE_STR = 'false';\n/** __zone_symbol__ string const */\nvar ZONE_SYMBOL_PREFIX = '__zone_symbol__';\nfunction wrapWithCurrentZone(callback, source) {\n return Zone.current.wrap(callback, source);\n}\nfunction scheduleMacroTaskWithCurrentZone(source, callback, data, customSchedule, customCancel) {\n return Zone.current.scheduleMacroTask(source, callback, data, customSchedule, customCancel);\n}\nvar zoneSymbol = Zone.__symbol__;\nvar isWindowExists = typeof window !== 'undefined';\nvar internalWindow = isWindowExists ? window : undefined;\nvar _global = isWindowExists && internalWindow || typeof self === 'object' && self || global;\nvar REMOVE_ATTRIBUTE = 'removeAttribute';\nvar NULL_ON_PROP_VALUE = [null];\nfunction bindArguments(args, source) {\n for (var i = args.length - 1; i >= 0; i--) {\n if (typeof args[i] === 'function') {\n args[i] = wrapWithCurrentZone(args[i], source + '_' + i);\n }\n }\n return args;\n}\nfunction patchPrototype(prototype, fnNames) {\n var source = prototype.constructor['name'];\n var _loop_1 = function (i) {\n var name_1 = fnNames[i];\n var delegate = prototype[name_1];\n if (delegate) {\n var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, name_1);\n if (!isPropertyWritable(prototypeDesc)) {\n return \"continue\";\n }\n prototype[name_1] = (function (delegate) {\n var patched = function () {\n return delegate.apply(this, bindArguments(arguments, source + '.' + name_1));\n };\n attachOriginToPatched(patched, delegate);\n return patched;\n })(delegate);\n }\n };\n for (var i = 0; i < fnNames.length; i++) {\n _loop_1(i);\n }\n}\nfunction isPropertyWritable(propertyDesc) {\n if (!propertyDesc) {\n return true;\n }\n if (propertyDesc.writable === false) {\n return false;\n }\n return !(typeof propertyDesc.get === 'function' && typeof propertyDesc.set === 'undefined');\n}\nvar isWebWorker = (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope);\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nvar isNode = (!('nw' in _global) && typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]');\nvar isBrowser = !isNode && !isWebWorker && !!(isWindowExists && internalWindow['HTMLElement']);\n// we are in electron of nw, so we are both browser and nodejs\n// Make sure to access `process` through `_global` so that WebPack does not accidentally browserify\n// this code.\nvar isMix = typeof _global.process !== 'undefined' &&\n {}.toString.call(_global.process) === '[object process]' && !isWebWorker &&\n !!(isWindowExists && internalWindow['HTMLElement']);\nvar zoneSymbolEventNames = {};\nvar wrapFn = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n var eventNameSymbol = zoneSymbolEventNames[event.type];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[event.type] = zoneSymbol('ON_PROPERTY' + event.type);\n }\n var target = this || event.target || _global;\n var listener = target[eventNameSymbol];\n var result;\n if (isBrowser && target === internalWindow && event.type === 'error') {\n // window.onerror have different signiture\n // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#window.onerror\n // and onerror callback will prevent default when callback return true\n var errorEvent = event;\n result = listener &&\n listener.call(this, errorEvent.message, errorEvent.filename, errorEvent.lineno, errorEvent.colno, errorEvent.error);\n if (result === true) {\n event.preventDefault();\n }\n }\n else {\n result = listener && listener.apply(this, arguments);\n if (result != undefined && !result) {\n event.preventDefault();\n }\n }\n return result;\n};\nfunction patchProperty(obj, prop, prototype) {\n var desc = ObjectGetOwnPropertyDescriptor(obj, prop);\n if (!desc && prototype) {\n // when patch window object, use prototype to check prop exist or not\n var prototypeDesc = ObjectGetOwnPropertyDescriptor(prototype, prop);\n if (prototypeDesc) {\n desc = { enumerable: true, configurable: true };\n }\n }\n // if the descriptor not exists or is not configurable\n // just return\n if (!desc || !desc.configurable) {\n return;\n }\n var onPropPatchedSymbol = zoneSymbol('on' + prop + 'patched');\n if (obj.hasOwnProperty(onPropPatchedSymbol) && obj[onPropPatchedSymbol]) {\n return;\n }\n // A property descriptor cannot have getter/setter and be writable\n // deleting the writable and value properties avoids this error:\n //\n // TypeError: property descriptors must not specify a value or be writable when a\n // getter or setter has been specified\n delete desc.writable;\n delete desc.value;\n var originalDescGet = desc.get;\n var originalDescSet = desc.set;\n // substr(2) cuz 'onclick' -> 'click', etc\n var eventName = prop.substr(2);\n var eventNameSymbol = zoneSymbolEventNames[eventName];\n if (!eventNameSymbol) {\n eventNameSymbol = zoneSymbolEventNames[eventName] = zoneSymbol('ON_PROPERTY' + eventName);\n }\n desc.set = function (newValue) {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return;\n }\n var previousValue = target[eventNameSymbol];\n if (previousValue) {\n target.removeEventListener(eventName, wrapFn);\n }\n // issue #978, when onload handler was added before loading zone.js\n // we should remove it with originalDescSet\n if (originalDescSet) {\n originalDescSet.apply(target, NULL_ON_PROP_VALUE);\n }\n if (typeof newValue === 'function') {\n target[eventNameSymbol] = newValue;\n target.addEventListener(eventName, wrapFn, false);\n }\n else {\n target[eventNameSymbol] = null;\n }\n };\n // The getter would return undefined for unassigned properties but the default value of an\n // unassigned property is null\n desc.get = function () {\n // in some of windows's onproperty callback, this is undefined\n // so we need to check it\n var target = this;\n if (!target && obj === _global) {\n target = _global;\n }\n if (!target) {\n return null;\n }\n var listener = target[eventNameSymbol];\n if (listener) {\n return listener;\n }\n else if (originalDescGet) {\n // result will be null when use inline event attribute,\n // such as \n // because the onclick function is internal raw uncompiled handler\n // the onclick will be evaluated when first time event was triggered or\n // the property is accessed, https://github.com/angular/zone.js/issues/525\n // so we should use original native get to retrieve the handler\n var value = originalDescGet && originalDescGet.call(this);\n if (value) {\n desc.set.call(this, value);\n if (typeof target[REMOVE_ATTRIBUTE] === 'function') {\n target.removeAttribute(prop);\n }\n return value;\n }\n }\n return null;\n };\n ObjectDefineProperty(obj, prop, desc);\n obj[onPropPatchedSymbol] = true;\n}\nfunction patchOnProperties(obj, properties, prototype) {\n if (properties) {\n for (var i = 0; i < properties.length; i++) {\n patchProperty(obj, 'on' + properties[i], prototype);\n }\n }\n else {\n var onProperties = [];\n for (var prop in obj) {\n if (prop.substr(0, 2) == 'on') {\n onProperties.push(prop);\n }\n }\n for (var j = 0; j < onProperties.length; j++) {\n patchProperty(obj, onProperties[j], prototype);\n }\n }\n}\nvar originalInstanceKey = zoneSymbol('originalInstance');\n// wrap some native API on `window`\nfunction patchClass(className) {\n var OriginalClass = _global[className];\n if (!OriginalClass)\n return;\n // keep original class in global\n _global[zoneSymbol(className)] = OriginalClass;\n _global[className] = function () {\n var a = bindArguments(arguments, className);\n switch (a.length) {\n case 0:\n this[originalInstanceKey] = new OriginalClass();\n break;\n case 1:\n this[originalInstanceKey] = new OriginalClass(a[0]);\n break;\n case 2:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1]);\n break;\n case 3:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2]);\n break;\n case 4:\n this[originalInstanceKey] = new OriginalClass(a[0], a[1], a[2], a[3]);\n break;\n default:\n throw new Error('Arg list too long.');\n }\n };\n // attach original delegate to patched function\n attachOriginToPatched(_global[className], OriginalClass);\n var instance = new OriginalClass(function () { });\n var prop;\n for (prop in instance) {\n // https://bugs.webkit.org/show_bug.cgi?id=44721\n if (className === 'XMLHttpRequest' && prop === 'responseBlob')\n continue;\n (function (prop) {\n if (typeof instance[prop] === 'function') {\n _global[className].prototype[prop] = function () {\n return this[originalInstanceKey][prop].apply(this[originalInstanceKey], arguments);\n };\n }\n else {\n ObjectDefineProperty(_global[className].prototype, prop, {\n set: function (fn) {\n if (typeof fn === 'function') {\n this[originalInstanceKey][prop] = wrapWithCurrentZone(fn, className + '.' + prop);\n // keep callback in wrapped function so we can\n // use it in Function.prototype.toString to return\n // the native one.\n attachOriginToPatched(this[originalInstanceKey][prop], fn);\n }\n else {\n this[originalInstanceKey][prop] = fn;\n }\n },\n get: function () {\n return this[originalInstanceKey][prop];\n }\n });\n }\n }(prop));\n }\n for (prop in OriginalClass) {\n if (prop !== 'prototype' && OriginalClass.hasOwnProperty(prop)) {\n _global[className][prop] = OriginalClass[prop];\n }\n }\n}\nfunction copySymbolProperties(src, dest) {\n if (typeof Object.getOwnPropertySymbols !== 'function') {\n return;\n }\n var symbols = Object.getOwnPropertySymbols(src);\n symbols.forEach(function (symbol) {\n var desc = Object.getOwnPropertyDescriptor(src, symbol);\n Object.defineProperty(dest, symbol, {\n get: function () {\n return src[symbol];\n },\n set: function (value) {\n if (desc && (!desc.writable || typeof desc.set !== 'function')) {\n // if src[symbol] is not writable or not have a setter, just return\n return;\n }\n src[symbol] = value;\n },\n enumerable: desc ? desc.enumerable : true,\n configurable: desc ? desc.configurable : true\n });\n });\n}\nvar shouldCopySymbolProperties = false;\n\nfunction patchMethod(target, name, patchFn) {\n var proto = target;\n while (proto && !proto.hasOwnProperty(name)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && target[name]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = target;\n }\n var delegateName = zoneSymbol(name);\n var delegate = null;\n if (proto && !(delegate = proto[delegateName])) {\n delegate = proto[delegateName] = proto[name];\n // check whether proto[name] is writable\n // some property is readonly in safari, such as HtmlCanvasElement.prototype.toBlob\n var desc = proto && ObjectGetOwnPropertyDescriptor(proto, name);\n if (isPropertyWritable(desc)) {\n var patchDelegate_1 = patchFn(delegate, delegateName, name);\n proto[name] = function () {\n return patchDelegate_1(this, arguments);\n };\n attachOriginToPatched(proto[name], delegate);\n if (shouldCopySymbolProperties) {\n copySymbolProperties(delegate, proto[name]);\n }\n }\n }\n return delegate;\n}\n// TODO: @JiaLiPassion, support cancel task later if necessary\nfunction patchMacroTask(obj, funcName, metaCreator) {\n var setNative = null;\n function scheduleTask(task) {\n var data = task.data;\n data.args[data.cbIdx] = function () {\n task.invoke.apply(this, arguments);\n };\n setNative.apply(data.target, data.args);\n return task;\n }\n setNative = patchMethod(obj, funcName, function (delegate) { return function (self, args) {\n var meta = metaCreator(self, args);\n if (meta.cbIdx >= 0 && typeof args[meta.cbIdx] === 'function') {\n return scheduleMacroTaskWithCurrentZone(meta.name, args[meta.cbIdx], meta, scheduleTask);\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(self, args);\n }\n }; });\n}\n\nfunction attachOriginToPatched(patched, original) {\n patched[zoneSymbol('OriginalDelegate')] = original;\n}\nvar isDetectedIEOrEdge = false;\nvar ieOrEdge = false;\nfunction isIE() {\n try {\n var ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1) {\n return true;\n }\n }\n catch (error) {\n }\n return false;\n}\nfunction isIEOrEdge() {\n if (isDetectedIEOrEdge) {\n return ieOrEdge;\n }\n isDetectedIEOrEdge = true;\n try {\n var ua = internalWindow.navigator.userAgent;\n if (ua.indexOf('MSIE ') !== -1 || ua.indexOf('Trident/') !== -1 || ua.indexOf('Edge/') !== -1) {\n ieOrEdge = true;\n }\n return ieOrEdge;\n }\n catch (error) {\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// override Function.prototype.toString to make zone.js patched function\n// look like native function\nZone.__load_patch('toString', function (global) {\n // patch Func.prototype.toString to let them look like native\n var originalFunctionToString = Function.prototype.toString;\n var ORIGINAL_DELEGATE_SYMBOL = zoneSymbol('OriginalDelegate');\n var PROMISE_SYMBOL = zoneSymbol('Promise');\n var ERROR_SYMBOL = zoneSymbol('Error');\n var newFunctionToString = function toString() {\n if (typeof this === 'function') {\n var originalDelegate = this[ORIGINAL_DELEGATE_SYMBOL];\n if (originalDelegate) {\n if (typeof originalDelegate === 'function') {\n return originalFunctionToString.apply(this[ORIGINAL_DELEGATE_SYMBOL], arguments);\n }\n else {\n return Object.prototype.toString.call(originalDelegate);\n }\n }\n if (this === Promise) {\n var nativePromise = global[PROMISE_SYMBOL];\n if (nativePromise) {\n return originalFunctionToString.apply(nativePromise, arguments);\n }\n }\n if (this === Error) {\n var nativeError = global[ERROR_SYMBOL];\n if (nativeError) {\n return originalFunctionToString.apply(nativeError, arguments);\n }\n }\n }\n return originalFunctionToString.apply(this, arguments);\n };\n newFunctionToString[ORIGINAL_DELEGATE_SYMBOL] = originalFunctionToString;\n Function.prototype.toString = newFunctionToString;\n // patch Object.prototype.toString to let them look like native\n var originalObjectToString = Object.prototype.toString;\n var PROMISE_OBJECT_TO_STRING = '[object Promise]';\n Object.prototype.toString = function () {\n if (this instanceof Promise) {\n return PROMISE_OBJECT_TO_STRING;\n }\n return originalObjectToString.apply(this, arguments);\n };\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nvar passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n }\n });\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\n// an identifier to tell ZoneTask do not create a new invoke closure\nvar OPTIMIZED_ZONE_EVENT_TASK_DATA = {\n useG: true\n};\nvar zoneSymbolEventNames$1 = {};\nvar globalSources = {};\nvar EVENT_NAME_SYMBOL_REGX = /^__zone_symbol__(\\w+)(true|false)$/;\nvar IMMEDIATE_PROPAGATION_SYMBOL = ('__zone_symbol__propagationStopped');\nfunction patchEventTarget(_global, apis, patchOptions) {\n var ADD_EVENT_LISTENER = (patchOptions && patchOptions.add) || ADD_EVENT_LISTENER_STR;\n var REMOVE_EVENT_LISTENER = (patchOptions && patchOptions.rm) || REMOVE_EVENT_LISTENER_STR;\n var LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.listeners) || 'eventListeners';\n var REMOVE_ALL_LISTENERS_EVENT_LISTENER = (patchOptions && patchOptions.rmAll) || 'removeAllListeners';\n var zoneSymbolAddEventListener = zoneSymbol(ADD_EVENT_LISTENER);\n var ADD_EVENT_LISTENER_SOURCE = '.' + ADD_EVENT_LISTENER + ':';\n var PREPEND_EVENT_LISTENER = 'prependListener';\n var PREPEND_EVENT_LISTENER_SOURCE = '.' + PREPEND_EVENT_LISTENER + ':';\n var invokeTask = function (task, target, event) {\n // for better performance, check isRemoved which is set\n // by removeEventListener\n if (task.isRemoved) {\n return;\n }\n var delegate = task.callback;\n if (typeof delegate === 'object' && delegate.handleEvent) {\n // create the bind version of handleEvent when invoke\n task.callback = function (event) { return delegate.handleEvent(event); };\n task.originalDelegate = delegate;\n }\n // invoke static task.invoke\n task.invoke(task, target, [event]);\n var options = task.options;\n if (options && typeof options === 'object' && options.once) {\n // if options.once is true, after invoke once remove listener here\n // only browser need to do this, nodejs eventEmitter will cal removeListener\n // inside EventEmitter.once\n var delegate_1 = task.originalDelegate ? task.originalDelegate : task.callback;\n target[REMOVE_EVENT_LISTENER].call(target, event.type, delegate_1, options);\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = false\n var globalZoneAwareCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n var target = this || event.target || _global;\n var tasks = target[zoneSymbolEventNames$1[event.type][FALSE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n var copyTasks = tasks.slice();\n for (var i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n // global shared zoneAwareCallback to handle all event callback with capture = true\n var globalZoneAwareCaptureCallback = function (event) {\n // https://github.com/angular/zone.js/issues/911, in IE, sometimes\n // event will be undefined, so we need to use window.event\n event = event || _global.event;\n if (!event) {\n return;\n }\n // event.target is needed for Samsung TV and SourceBuffer\n // || global is needed https://github.com/angular/zone.js/issues/190\n var target = this || event.target || _global;\n var tasks = target[zoneSymbolEventNames$1[event.type][TRUE_STR]];\n if (tasks) {\n // invoke all tasks which attached to current target with given event.type and capture = false\n // for performance concern, if task.length === 1, just invoke\n if (tasks.length === 1) {\n invokeTask(tasks[0], target, event);\n }\n else {\n // https://github.com/angular/zone.js/issues/836\n // copy the tasks array before invoke, to avoid\n // the callback will remove itself or other listener\n var copyTasks = tasks.slice();\n for (var i = 0; i < copyTasks.length; i++) {\n if (event && event[IMMEDIATE_PROPAGATION_SYMBOL] === true) {\n break;\n }\n invokeTask(copyTasks[i], target, event);\n }\n }\n }\n };\n function patchEventTargetMethods(obj, patchOptions) {\n if (!obj) {\n return false;\n }\n var useGlobalCallback = true;\n if (patchOptions && patchOptions.useG !== undefined) {\n useGlobalCallback = patchOptions.useG;\n }\n var validateHandler = patchOptions && patchOptions.vh;\n var checkDuplicate = true;\n if (patchOptions && patchOptions.chkDup !== undefined) {\n checkDuplicate = patchOptions.chkDup;\n }\n var returnTarget = false;\n if (patchOptions && patchOptions.rt !== undefined) {\n returnTarget = patchOptions.rt;\n }\n var proto = obj;\n while (proto && !proto.hasOwnProperty(ADD_EVENT_LISTENER)) {\n proto = ObjectGetPrototypeOf(proto);\n }\n if (!proto && obj[ADD_EVENT_LISTENER]) {\n // somehow we did not find it, but we can see it. This happens on IE for Window properties.\n proto = obj;\n }\n if (!proto) {\n return false;\n }\n if (proto[zoneSymbolAddEventListener]) {\n return false;\n }\n var eventNameToString = patchOptions && patchOptions.eventNameToString;\n // a shared global taskData to pass data for scheduleEventTask\n // so we do not need to create a new object just for pass some data\n var taskData = {};\n var nativeAddEventListener = proto[zoneSymbolAddEventListener] = proto[ADD_EVENT_LISTENER];\n var nativeRemoveEventListener = proto[zoneSymbol(REMOVE_EVENT_LISTENER)] =\n proto[REMOVE_EVENT_LISTENER];\n var nativeListeners = proto[zoneSymbol(LISTENERS_EVENT_LISTENER)] =\n proto[LISTENERS_EVENT_LISTENER];\n var nativeRemoveAllListeners = proto[zoneSymbol(REMOVE_ALL_LISTENERS_EVENT_LISTENER)] =\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER];\n var nativePrependEventListener;\n if (patchOptions && patchOptions.prepend) {\n nativePrependEventListener = proto[zoneSymbol(patchOptions.prepend)] =\n proto[patchOptions.prepend];\n }\n function checkIsPassive(task) {\n if (!passiveSupported && typeof taskData.options !== 'boolean' &&\n typeof taskData.options !== 'undefined' && taskData.options !== null) {\n // options is a non-null non-undefined object\n // passive is not supported\n // don't pass options as object\n // just pass capture as a boolean\n task.options = !!taskData.options.capture;\n taskData.options = task.options;\n }\n }\n var customScheduleGlobal = function (task) {\n // if there is already a task for the eventName + capture,\n // just return, because we use the shared globalZoneAwareCallback here.\n if (taskData.isExisting) {\n return;\n }\n checkIsPassive(task);\n return nativeAddEventListener.call(taskData.target, taskData.eventName, taskData.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, taskData.options);\n };\n var customCancelGlobal = function (task) {\n // if task is not marked as isRemoved, this call is directly\n // from Zone.prototype.cancelTask, we should remove the task\n // from tasksList of target first\n if (!task.isRemoved) {\n var symbolEventNames = zoneSymbolEventNames$1[task.eventName];\n var symbolEventName = void 0;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[task.capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && task.target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n if (existingTask === task) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n task.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n task.allRemoved = true;\n task.target[symbolEventName] = null;\n }\n break;\n }\n }\n }\n }\n // if all tasks for the eventName + capture have gone,\n // we will really remove the global event callback,\n // if not, return\n if (!task.allRemoved) {\n return;\n }\n return nativeRemoveEventListener.call(task.target, task.eventName, task.capture ? globalZoneAwareCaptureCallback : globalZoneAwareCallback, task.options);\n };\n var customScheduleNonGlobal = function (task) {\n checkIsPassive(task);\n return nativeAddEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n var customSchedulePrepend = function (task) {\n return nativePrependEventListener.call(taskData.target, taskData.eventName, task.invoke, taskData.options);\n };\n var customCancelNonGlobal = function (task) {\n return nativeRemoveEventListener.call(task.target, task.eventName, task.invoke, task.options);\n };\n var customSchedule = useGlobalCallback ? customScheduleGlobal : customScheduleNonGlobal;\n var customCancel = useGlobalCallback ? customCancelGlobal : customCancelNonGlobal;\n var compareTaskCallbackVsDelegate = function (task, delegate) {\n var typeOfDelegate = typeof delegate;\n return (typeOfDelegate === 'function' && task.callback === delegate) ||\n (typeOfDelegate === 'object' && task.originalDelegate === delegate);\n };\n var compare = (patchOptions && patchOptions.diff) ? patchOptions.diff : compareTaskCallbackVsDelegate;\n var blackListedEvents = Zone[Zone.__symbol__('BLACK_LISTED_EVENTS')];\n var makeAddListener = function (nativeListener, addSource, customScheduleFn, customCancelFn, returnTarget, prepend) {\n if (returnTarget === void 0) { returnTarget = false; }\n if (prepend === void 0) { prepend = false; }\n return function () {\n var target = this || _global;\n var eventName = arguments[0];\n var delegate = arguments[1];\n if (!delegate) {\n return nativeListener.apply(this, arguments);\n }\n if (isNode && eventName === 'uncaughtException') {\n // don't patch uncaughtException of nodejs to prevent endless loop\n return nativeListener.apply(this, arguments);\n }\n // don't create the bind delegate function for handleEvent\n // case here to improve addEventListener performance\n // we will create the bind delegate when invoke\n var isHandleEvent = false;\n if (typeof delegate !== 'function') {\n if (!delegate.handleEvent) {\n return nativeListener.apply(this, arguments);\n }\n isHandleEvent = true;\n }\n if (validateHandler && !validateHandler(nativeListener, delegate, target, arguments)) {\n return;\n }\n var options = arguments[2];\n if (blackListedEvents) {\n // check black list\n for (var i = 0; i < blackListedEvents.length; i++) {\n if (eventName === blackListedEvents[i]) {\n return nativeListener.apply(this, arguments);\n }\n }\n }\n var capture;\n var once = false;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n once = options ? !!options.once : false;\n }\n var zone = Zone.current;\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n var symbolEventName;\n if (!symbolEventNames) {\n // the code is duplicate, but I just want to get some better performance\n var falseEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + FALSE_STR;\n var trueEventName = (eventNameToString ? eventNameToString(eventName) : eventName) + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n symbolEventName = capture ? symbolCapture : symbol;\n }\n else {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = target[symbolEventName];\n var isExisting = false;\n if (existingTasks) {\n // already have task registered\n isExisting = true;\n if (checkDuplicate) {\n for (var i = 0; i < existingTasks.length; i++) {\n if (compare(existingTasks[i], delegate)) {\n // same callback, same capture, same event name, just return\n return;\n }\n }\n }\n }\n else {\n existingTasks = target[symbolEventName] = [];\n }\n var source;\n var constructorName = target.constructor['name'];\n var targetSource = globalSources[constructorName];\n if (targetSource) {\n source = targetSource[eventName];\n }\n if (!source) {\n source = constructorName + addSource +\n (eventNameToString ? eventNameToString(eventName) : eventName);\n }\n // do not create a new object as task.data to pass those things\n // just use the global shared one\n taskData.options = options;\n if (once) {\n // if addEventListener with once options, we don't pass it to\n // native addEventListener, instead we keep the once setting\n // and handle ourselves.\n taskData.options.once = false;\n }\n taskData.target = target;\n taskData.capture = capture;\n taskData.eventName = eventName;\n taskData.isExisting = isExisting;\n var data = useGlobalCallback ? OPTIMIZED_ZONE_EVENT_TASK_DATA : undefined;\n // keep taskData into data to allow onScheduleEventTask to access the task information\n if (data) {\n data.taskData = taskData;\n }\n var task = zone.scheduleEventTask(source, delegate, data, customScheduleFn, customCancelFn);\n // should clear taskData.target to avoid memory leak\n // issue, https://github.com/angular/angular/issues/20442\n taskData.target = null;\n // need to clear up taskData because it is a global object\n if (data) {\n data.taskData = null;\n }\n // have to save those information to task in case\n // application may call task.zone.cancelTask() directly\n if (once) {\n options.once = true;\n }\n if (!(!passiveSupported && typeof task.options === 'boolean')) {\n // if not support passive, and we pass an option object\n // to addEventListener, we should save the options to task\n task.options = options;\n }\n task.target = target;\n task.capture = capture;\n task.eventName = eventName;\n if (isHandleEvent) {\n // save original delegate for compare to check duplicate\n task.originalDelegate = delegate;\n }\n if (!prepend) {\n existingTasks.push(task);\n }\n else {\n existingTasks.unshift(task);\n }\n if (returnTarget) {\n return target;\n }\n };\n };\n proto[ADD_EVENT_LISTENER] = makeAddListener(nativeAddEventListener, ADD_EVENT_LISTENER_SOURCE, customSchedule, customCancel, returnTarget);\n if (nativePrependEventListener) {\n proto[PREPEND_EVENT_LISTENER] = makeAddListener(nativePrependEventListener, PREPEND_EVENT_LISTENER_SOURCE, customSchedulePrepend, customCancel, returnTarget, true);\n }\n proto[REMOVE_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var options = arguments[2];\n var capture;\n if (options === undefined) {\n capture = false;\n }\n else if (options === true) {\n capture = true;\n }\n else if (options === false) {\n capture = false;\n }\n else {\n capture = options ? !!options.capture : false;\n }\n var delegate = arguments[1];\n if (!delegate) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n if (validateHandler &&\n !validateHandler(nativeRemoveEventListener, delegate, target, arguments)) {\n return;\n }\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n var symbolEventName;\n if (symbolEventNames) {\n symbolEventName = symbolEventNames[capture ? TRUE_STR : FALSE_STR];\n }\n var existingTasks = symbolEventName && target[symbolEventName];\n if (existingTasks) {\n for (var i = 0; i < existingTasks.length; i++) {\n var existingTask = existingTasks[i];\n if (compare(existingTask, delegate)) {\n existingTasks.splice(i, 1);\n // set isRemoved to data for faster invokeTask check\n existingTask.isRemoved = true;\n if (existingTasks.length === 0) {\n // all tasks for the eventName + capture have gone,\n // remove globalZoneAwareCallback and remove the task cache from target\n existingTask.allRemoved = true;\n target[symbolEventName] = null;\n }\n existingTask.zone.cancelTask(existingTask);\n if (returnTarget) {\n return target;\n }\n return;\n }\n }\n }\n // issue 930, didn't find the event name or callback\n // from zone kept existingTasks, the callback maybe\n // added outside of zone, we need to call native removeEventListener\n // to try to remove it.\n return nativeRemoveEventListener.apply(this, arguments);\n };\n proto[LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n var listeners = [];\n var tasks = findEventTasks(target, eventNameToString ? eventNameToString(eventName) : eventName);\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n listeners.push(delegate);\n }\n return listeners;\n };\n proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER] = function () {\n var target = this || _global;\n var eventName = arguments[0];\n if (!eventName) {\n var keys = Object.keys(target);\n for (var i = 0; i < keys.length; i++) {\n var prop = keys[i];\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n // in nodejs EventEmitter, removeListener event is\n // used for monitoring the removeListener call,\n // so just keep removeListener eventListener until\n // all other eventListeners are removed\n if (evtName && evtName !== 'removeListener') {\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, evtName);\n }\n }\n // remove removeListener listener finally\n this[REMOVE_ALL_LISTENERS_EVENT_LISTENER].call(this, 'removeListener');\n }\n else {\n var symbolEventNames = zoneSymbolEventNames$1[eventName];\n if (symbolEventNames) {\n var symbolEventName = symbolEventNames[FALSE_STR];\n var symbolCaptureEventName = symbolEventNames[TRUE_STR];\n var tasks = target[symbolEventName];\n var captureTasks = target[symbolCaptureEventName];\n if (tasks) {\n var removeTasks = tasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n if (captureTasks) {\n var removeTasks = captureTasks.slice();\n for (var i = 0; i < removeTasks.length; i++) {\n var task = removeTasks[i];\n var delegate = task.originalDelegate ? task.originalDelegate : task.callback;\n this[REMOVE_EVENT_LISTENER].call(this, eventName, delegate, task.options);\n }\n }\n }\n }\n if (returnTarget) {\n return this;\n }\n };\n // for native toString patch\n attachOriginToPatched(proto[ADD_EVENT_LISTENER], nativeAddEventListener);\n attachOriginToPatched(proto[REMOVE_EVENT_LISTENER], nativeRemoveEventListener);\n if (nativeRemoveAllListeners) {\n attachOriginToPatched(proto[REMOVE_ALL_LISTENERS_EVENT_LISTENER], nativeRemoveAllListeners);\n }\n if (nativeListeners) {\n attachOriginToPatched(proto[LISTENERS_EVENT_LISTENER], nativeListeners);\n }\n return true;\n }\n var results = [];\n for (var i = 0; i < apis.length; i++) {\n results[i] = patchEventTargetMethods(apis[i], patchOptions);\n }\n return results;\n}\nfunction findEventTasks(target, eventName) {\n var foundTasks = [];\n for (var prop in target) {\n var match = EVENT_NAME_SYMBOL_REGX.exec(prop);\n var evtName = match && match[1];\n if (evtName && (!eventName || evtName === eventName)) {\n var tasks = target[prop];\n if (tasks) {\n for (var i = 0; i < tasks.length; i++) {\n foundTasks.push(tasks[i]);\n }\n }\n }\n }\n return foundTasks;\n}\nfunction patchEventPrototype(global, api) {\n var Event = global['Event'];\n if (Event && Event.prototype) {\n api.patchMethod(Event.prototype, 'stopImmediatePropagation', function (delegate) { return function (self, args) {\n self[IMMEDIATE_PROPAGATION_SYMBOL] = true;\n // we need to call the native stopImmediatePropagation\n // in case in some hybrid application, some part of\n // application will be controlled by zone, some are not\n delegate && delegate.apply(self, args);\n }; });\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nvar taskSymbol = zoneSymbol('zoneTask');\nfunction patchTimer(window, setName, cancelName, nameSuffix) {\n var setNative = null;\n var clearNative = null;\n setName += nameSuffix;\n cancelName += nameSuffix;\n var tasksByHandleId = {};\n function scheduleTask(task) {\n var data = task.data;\n function timer() {\n try {\n task.invoke.apply(this, arguments);\n }\n finally {\n // issue-934, task will be cancelled\n // even it is a periodic task such as\n // setInterval\n if (!(task.data && task.data.isPeriodic)) {\n if (typeof data.handleId === 'number') {\n // in non-nodejs env, we remove timerId\n // from local cache\n delete tasksByHandleId[data.handleId];\n }\n else if (data.handleId) {\n // Node returns complex objects as handleIds\n // we remove task reference from timer object\n data.handleId[taskSymbol] = null;\n }\n }\n }\n }\n data.args[0] = timer;\n data.handleId = setNative.apply(window, data.args);\n return task;\n }\n function clearTask(task) {\n return clearNative(task.data.handleId);\n }\n setNative =\n patchMethod(window, setName, function (delegate) { return function (self, args) {\n if (typeof args[0] === 'function') {\n var options = {\n isPeriodic: nameSuffix === 'Interval',\n delay: (nameSuffix === 'Timeout' || nameSuffix === 'Interval') ? args[1] || 0 :\n undefined,\n args: args\n };\n var task = scheduleMacroTaskWithCurrentZone(setName, args[0], options, scheduleTask, clearTask);\n if (!task) {\n return task;\n }\n // Node.js must additionally support the ref and unref functions.\n var handle = task.data.handleId;\n if (typeof handle === 'number') {\n // for non nodejs env, we save handleId: task\n // mapping in local cache for clearTimeout\n tasksByHandleId[handle] = task;\n }\n else if (handle) {\n // for nodejs env, we save task\n // reference in timerId Object for clearTimeout\n handle[taskSymbol] = task;\n }\n // check whether handle is null, because some polyfill or browser\n // may return undefined from setTimeout/setInterval/setImmediate/requestAnimationFrame\n if (handle && handle.ref && handle.unref && typeof handle.ref === 'function' &&\n typeof handle.unref === 'function') {\n task.ref = handle.ref.bind(handle);\n task.unref = handle.unref.bind(handle);\n }\n if (typeof handle === 'number' || handle) {\n return handle;\n }\n return task;\n }\n else {\n // cause an error by calling it directly.\n return delegate.apply(window, args);\n }\n }; });\n clearNative =\n patchMethod(window, cancelName, function (delegate) { return function (self, args) {\n var id = args[0];\n var task;\n if (typeof id === 'number') {\n // non nodejs env.\n task = tasksByHandleId[id];\n }\n else {\n // nodejs env.\n task = id && id[taskSymbol];\n // other environments.\n if (!task) {\n task = id;\n }\n }\n if (task && typeof task.type === 'string') {\n if (task.state !== 'notScheduled' &&\n (task.cancelFn && task.data.isPeriodic || task.runCount === 0)) {\n if (typeof id === 'number') {\n delete tasksByHandleId[id];\n }\n else if (id) {\n id[taskSymbol] = null;\n }\n // Do not cancel already canceled functions\n task.zone.cancelTask(task);\n }\n }\n else {\n // cause an error by calling it directly.\n delegate.apply(window, args);\n }\n }; });\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/*\n * This is necessary for Chrome and Chrome mobile, to enable\n * things like redefining `createdCallback` on an element.\n */\nvar _defineProperty = Object[zoneSymbol('defineProperty')] = Object.defineProperty;\nvar _getOwnPropertyDescriptor = Object[zoneSymbol('getOwnPropertyDescriptor')] =\n Object.getOwnPropertyDescriptor;\nvar _create = Object.create;\nvar unconfigurablesKey = zoneSymbol('unconfigurables');\nfunction propertyPatch() {\n Object.defineProperty = function (obj, prop, desc) {\n if (isUnconfigurable(obj, prop)) {\n throw new TypeError('Cannot assign to read only property \\'' + prop + '\\' of ' + obj);\n }\n var originalConfigurableFlag = desc.configurable;\n if (prop !== 'prototype') {\n desc = rewriteDescriptor(obj, prop, desc);\n }\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n };\n Object.defineProperties = function (obj, props) {\n Object.keys(props).forEach(function (prop) {\n Object.defineProperty(obj, prop, props[prop]);\n });\n return obj;\n };\n Object.create = function (obj, proto) {\n if (typeof proto === 'object' && !Object.isFrozen(proto)) {\n Object.keys(proto).forEach(function (prop) {\n proto[prop] = rewriteDescriptor(obj, prop, proto[prop]);\n });\n }\n return _create(obj, proto);\n };\n Object.getOwnPropertyDescriptor = function (obj, prop) {\n var desc = _getOwnPropertyDescriptor(obj, prop);\n if (desc && isUnconfigurable(obj, prop)) {\n desc.configurable = false;\n }\n return desc;\n };\n}\nfunction _redefineProperty(obj, prop, desc) {\n var originalConfigurableFlag = desc.configurable;\n desc = rewriteDescriptor(obj, prop, desc);\n return _tryDefineProperty(obj, prop, desc, originalConfigurableFlag);\n}\nfunction isUnconfigurable(obj, prop) {\n return obj && obj[unconfigurablesKey] && obj[unconfigurablesKey][prop];\n}\nfunction rewriteDescriptor(obj, prop, desc) {\n // issue-927, if the desc is frozen, don't try to change the desc\n if (!Object.isFrozen(desc)) {\n desc.configurable = true;\n }\n if (!desc.configurable) {\n // issue-927, if the obj is frozen, don't try to set the desc to obj\n if (!obj[unconfigurablesKey] && !Object.isFrozen(obj)) {\n _defineProperty(obj, unconfigurablesKey, { writable: true, value: {} });\n }\n if (obj[unconfigurablesKey]) {\n obj[unconfigurablesKey][prop] = true;\n }\n }\n return desc;\n}\nfunction _tryDefineProperty(obj, prop, desc, originalConfigurableFlag) {\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n if (desc.configurable) {\n // In case of errors, when the configurable flag was likely set by rewriteDescriptor(), let's\n // retry with the original flag value\n if (typeof originalConfigurableFlag == 'undefined') {\n delete desc.configurable;\n }\n else {\n desc.configurable = originalConfigurableFlag;\n }\n try {\n return _defineProperty(obj, prop, desc);\n }\n catch (error) {\n var descJson = null;\n try {\n descJson = JSON.stringify(desc);\n }\n catch (error) {\n descJson = desc.toString();\n }\n console.log(\"Attempting to configure '\" + prop + \"' with descriptor '\" + descJson + \"' on object '\" + obj + \"' and got error, giving up: \" + error);\n }\n }\n else {\n throw error;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// we have to patch the instance since the proto is non-configurable\nfunction apply(api, _global) {\n var WS = _global.WebSocket;\n // On Safari window.EventTarget doesn't exist so need to patch WS add/removeEventListener\n // On older Chrome, no need since EventTarget was already patched\n if (!_global.EventTarget) {\n patchEventTarget(_global, [WS.prototype]);\n }\n _global.WebSocket = function (x, y) {\n var socket = arguments.length > 1 ? new WS(x, y) : new WS(x);\n var proxySocket;\n var proxySocketProto;\n // Safari 7.0 has non-configurable own 'onmessage' and friends properties on the socket instance\n var onmessageDesc = ObjectGetOwnPropertyDescriptor(socket, 'onmessage');\n if (onmessageDesc && onmessageDesc.configurable === false) {\n proxySocket = ObjectCreate(socket);\n // socket have own property descriptor 'onopen', 'onmessage', 'onclose', 'onerror'\n // but proxySocket not, so we will keep socket as prototype and pass it to\n // patchOnProperties method\n proxySocketProto = socket;\n [ADD_EVENT_LISTENER_STR, REMOVE_EVENT_LISTENER_STR, 'send', 'close'].forEach(function (propName) {\n proxySocket[propName] = function () {\n var args = ArraySlice.call(arguments);\n if (propName === ADD_EVENT_LISTENER_STR || propName === REMOVE_EVENT_LISTENER_STR) {\n var eventName = args.length > 0 ? args[0] : undefined;\n if (eventName) {\n var propertySymbol = Zone.__symbol__('ON_PROPERTY' + eventName);\n socket[propertySymbol] = proxySocket[propertySymbol];\n }\n }\n return socket[propName].apply(socket, args);\n };\n });\n }\n else {\n // we can patch the real socket\n proxySocket = socket;\n }\n patchOnProperties(proxySocket, ['close', 'error', 'message', 'open'], proxySocketProto);\n return proxySocket;\n };\n var globalWebSocket = _global['WebSocket'];\n for (var prop in WS) {\n globalWebSocket[prop] = WS[prop];\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {globalThis}\n */\nvar globalEventHandlersEventNames = [\n 'abort',\n 'animationcancel',\n 'animationend',\n 'animationiteration',\n 'auxclick',\n 'beforeinput',\n 'blur',\n 'cancel',\n 'canplay',\n 'canplaythrough',\n 'change',\n 'compositionstart',\n 'compositionupdate',\n 'compositionend',\n 'cuechange',\n 'click',\n 'close',\n 'contextmenu',\n 'curechange',\n 'dblclick',\n 'drag',\n 'dragend',\n 'dragenter',\n 'dragexit',\n 'dragleave',\n 'dragover',\n 'drop',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'focus',\n 'focusin',\n 'focusout',\n 'gotpointercapture',\n 'input',\n 'invalid',\n 'keydown',\n 'keypress',\n 'keyup',\n 'load',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'lostpointercapture',\n 'mousedown',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'mousewheel',\n 'orientationchange',\n 'pause',\n 'play',\n 'playing',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerlockchange',\n 'mozpointerlockchange',\n 'webkitpointerlockerchange',\n 'pointerlockerror',\n 'mozpointerlockerror',\n 'webkitpointerlockerror',\n 'pointermove',\n 'pointout',\n 'pointerover',\n 'pointerup',\n 'progress',\n 'ratechange',\n 'reset',\n 'resize',\n 'scroll',\n 'seeked',\n 'seeking',\n 'select',\n 'selectionchange',\n 'selectstart',\n 'show',\n 'sort',\n 'stalled',\n 'submit',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'touchcancel',\n 'touchmove',\n 'touchstart',\n 'touchend',\n 'transitioncancel',\n 'transitionend',\n 'waiting',\n 'wheel'\n];\nvar documentEventNames = [\n 'afterscriptexecute', 'beforescriptexecute', 'DOMContentLoaded', 'freeze', 'fullscreenchange',\n 'mozfullscreenchange', 'webkitfullscreenchange', 'msfullscreenchange', 'fullscreenerror',\n 'mozfullscreenerror', 'webkitfullscreenerror', 'msfullscreenerror', 'readystatechange',\n 'visibilitychange', 'resume'\n];\nvar windowEventNames = [\n 'absolutedeviceorientation',\n 'afterinput',\n 'afterprint',\n 'appinstalled',\n 'beforeinstallprompt',\n 'beforeprint',\n 'beforeunload',\n 'devicelight',\n 'devicemotion',\n 'deviceorientation',\n 'deviceorientationabsolute',\n 'deviceproximity',\n 'hashchange',\n 'languagechange',\n 'message',\n 'mozbeforepaint',\n 'offline',\n 'online',\n 'paint',\n 'pageshow',\n 'pagehide',\n 'popstate',\n 'rejectionhandled',\n 'storage',\n 'unhandledrejection',\n 'unload',\n 'userproximity',\n 'vrdisplyconnected',\n 'vrdisplaydisconnected',\n 'vrdisplaypresentchange'\n];\nvar htmlElementEventNames = [\n 'beforecopy', 'beforecut', 'beforepaste', 'copy', 'cut', 'paste', 'dragstart', 'loadend',\n 'animationstart', 'search', 'transitionrun', 'transitionstart', 'webkitanimationend',\n 'webkitanimationiteration', 'webkitanimationstart', 'webkittransitionend'\n];\nvar mediaElementEventNames = ['encrypted', 'waitingforkey', 'msneedkey', 'mozinterruptbegin', 'mozinterruptend'];\nvar ieElementEventNames = [\n 'activate',\n 'afterupdate',\n 'ariarequest',\n 'beforeactivate',\n 'beforedeactivate',\n 'beforeeditfocus',\n 'beforeupdate',\n 'cellchange',\n 'controlselect',\n 'dataavailable',\n 'datasetchanged',\n 'datasetcomplete',\n 'errorupdate',\n 'filterchange',\n 'layoutcomplete',\n 'losecapture',\n 'move',\n 'moveend',\n 'movestart',\n 'propertychange',\n 'resizeend',\n 'resizestart',\n 'rowenter',\n 'rowexit',\n 'rowsdelete',\n 'rowsinserted',\n 'command',\n 'compassneedscalibration',\n 'deactivate',\n 'help',\n 'mscontentzoom',\n 'msmanipulationstatechanged',\n 'msgesturechange',\n 'msgesturedoubletap',\n 'msgestureend',\n 'msgesturehold',\n 'msgesturestart',\n 'msgesturetap',\n 'msgotpointercapture',\n 'msinertiastart',\n 'mslostpointercapture',\n 'mspointercancel',\n 'mspointerdown',\n 'mspointerenter',\n 'mspointerhover',\n 'mspointerleave',\n 'mspointermove',\n 'mspointerout',\n 'mspointerover',\n 'mspointerup',\n 'pointerout',\n 'mssitemodejumplistitemremoved',\n 'msthumbnailclick',\n 'stop',\n 'storagecommit'\n];\nvar webglEventNames = ['webglcontextrestored', 'webglcontextlost', 'webglcontextcreationerror'];\nvar formEventNames = ['autocomplete', 'autocompleteerror'];\nvar detailEventNames = ['toggle'];\nvar frameEventNames = ['load'];\nvar frameSetEventNames = ['blur', 'error', 'focus', 'load', 'resize', 'scroll', 'messageerror'];\nvar marqueeEventNames = ['bounce', 'finish', 'start'];\nvar XMLHttpRequestEventNames = [\n 'loadstart', 'progress', 'abort', 'error', 'load', 'progress', 'timeout', 'loadend',\n 'readystatechange'\n];\nvar IDBIndexEventNames = ['upgradeneeded', 'complete', 'abort', 'success', 'error', 'blocked', 'versionchange', 'close'];\nvar websocketEventNames = ['close', 'error', 'open', 'message'];\nvar workerEventNames = ['error', 'message'];\nvar eventNames = globalEventHandlersEventNames.concat(webglEventNames, formEventNames, detailEventNames, documentEventNames, windowEventNames, htmlElementEventNames, ieElementEventNames);\nfunction filterProperties(target, onProperties, ignoreProperties) {\n if (!ignoreProperties || ignoreProperties.length === 0) {\n return onProperties;\n }\n var tip = ignoreProperties.filter(function (ip) { return ip.target === target; });\n if (!tip || tip.length === 0) {\n return onProperties;\n }\n var targetIgnoreProperties = tip[0].ignoreProperties;\n return onProperties.filter(function (op) { return targetIgnoreProperties.indexOf(op) === -1; });\n}\nfunction patchFilteredProperties(target, onProperties, ignoreProperties, prototype) {\n // check whether target is available, sometimes target will be undefined\n // because different browser or some 3rd party plugin.\n if (!target) {\n return;\n }\n var filteredProperties = filterProperties(target, onProperties, ignoreProperties);\n patchOnProperties(target, filteredProperties, prototype);\n}\nfunction propertyDescriptorPatch(api, _global) {\n if (isNode && !isMix) {\n return;\n }\n var supportsWebSocket = typeof WebSocket !== 'undefined';\n if (canPatchViaPropertyDescriptor()) {\n var ignoreProperties = _global['__Zone_ignore_on_properties'];\n // for browsers that we can patch the descriptor: Chrome & Firefox\n if (isBrowser) {\n var internalWindow = window;\n var ignoreErrorProperties = isIE ? [{ target: internalWindow, ignoreProperties: ['error'] }] : [];\n // in IE/Edge, onProp not exist in window object, but in WindowPrototype\n // so we need to pass WindowPrototype to check onProp exist or not\n patchFilteredProperties(internalWindow, eventNames.concat(['messageerror']), ignoreProperties ? ignoreProperties.concat(ignoreErrorProperties) : ignoreProperties, ObjectGetPrototypeOf(internalWindow));\n patchFilteredProperties(Document.prototype, eventNames, ignoreProperties);\n if (typeof internalWindow['SVGElement'] !== 'undefined') {\n patchFilteredProperties(internalWindow['SVGElement'].prototype, eventNames, ignoreProperties);\n }\n patchFilteredProperties(Element.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLElement.prototype, eventNames, ignoreProperties);\n patchFilteredProperties(HTMLMediaElement.prototype, mediaElementEventNames, ignoreProperties);\n patchFilteredProperties(HTMLFrameSetElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLBodyElement.prototype, windowEventNames.concat(frameSetEventNames), ignoreProperties);\n patchFilteredProperties(HTMLFrameElement.prototype, frameEventNames, ignoreProperties);\n patchFilteredProperties(HTMLIFrameElement.prototype, frameEventNames, ignoreProperties);\n var HTMLMarqueeElement_1 = internalWindow['HTMLMarqueeElement'];\n if (HTMLMarqueeElement_1) {\n patchFilteredProperties(HTMLMarqueeElement_1.prototype, marqueeEventNames, ignoreProperties);\n }\n var Worker_1 = internalWindow['Worker'];\n if (Worker_1) {\n patchFilteredProperties(Worker_1.prototype, workerEventNames, ignoreProperties);\n }\n }\n patchFilteredProperties(XMLHttpRequest.prototype, XMLHttpRequestEventNames, ignoreProperties);\n var XMLHttpRequestEventTarget_1 = _global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget_1) {\n patchFilteredProperties(XMLHttpRequestEventTarget_1 && XMLHttpRequestEventTarget_1.prototype, XMLHttpRequestEventNames, ignoreProperties);\n }\n if (typeof IDBIndex !== 'undefined') {\n patchFilteredProperties(IDBIndex.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBOpenDBRequest.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBDatabase.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBTransaction.prototype, IDBIndexEventNames, ignoreProperties);\n patchFilteredProperties(IDBCursor.prototype, IDBIndexEventNames, ignoreProperties);\n }\n if (supportsWebSocket) {\n patchFilteredProperties(WebSocket.prototype, websocketEventNames, ignoreProperties);\n }\n }\n else {\n // Safari, Android browsers (Jelly Bean)\n patchViaCapturingAllTheEvents();\n patchClass('XMLHttpRequest');\n if (supportsWebSocket) {\n apply(api, _global);\n }\n }\n}\nfunction canPatchViaPropertyDescriptor() {\n if ((isBrowser || isMix) && !ObjectGetOwnPropertyDescriptor(HTMLElement.prototype, 'onclick') &&\n typeof Element !== 'undefined') {\n // WebKit https://bugs.webkit.org/show_bug.cgi?id=134364\n // IDL interface attributes are not configurable\n var desc = ObjectGetOwnPropertyDescriptor(Element.prototype, 'onclick');\n if (desc && !desc.configurable)\n return false;\n }\n var ON_READY_STATE_CHANGE = 'onreadystatechange';\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n var xhrDesc = ObjectGetOwnPropertyDescriptor(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE);\n // add enumerable and configurable here because in opera\n // by default XMLHttpRequest.prototype.onreadystatechange is undefined\n // without adding enumerable and configurable will cause onreadystatechange\n // non-configurable\n // and if XMLHttpRequest.prototype.onreadystatechange is undefined,\n // we should set a real desc instead a fake one\n if (xhrDesc) {\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {\n enumerable: true,\n configurable: true,\n get: function () {\n return true;\n }\n });\n var req = new XMLHttpRequest();\n var result = !!req.onreadystatechange;\n // restore original desc\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, xhrDesc || {});\n return result;\n }\n else {\n var SYMBOL_FAKE_ONREADYSTATECHANGE_1 = zoneSymbol('fake');\n ObjectDefineProperty(XMLHttpRequestPrototype, ON_READY_STATE_CHANGE, {\n enumerable: true,\n configurable: true,\n get: function () {\n return this[SYMBOL_FAKE_ONREADYSTATECHANGE_1];\n },\n set: function (value) {\n this[SYMBOL_FAKE_ONREADYSTATECHANGE_1] = value;\n }\n });\n var req = new XMLHttpRequest();\n var detectFunc = function () { };\n req.onreadystatechange = detectFunc;\n var result = req[SYMBOL_FAKE_ONREADYSTATECHANGE_1] === detectFunc;\n req.onreadystatechange = null;\n return result;\n }\n}\nvar unboundKey = zoneSymbol('unbound');\n// Whenever any eventListener fires, we check the eventListener target and all parents\n// for `onwhatever` properties and replace them with zone-bound functions\n// - Chrome (for now)\nfunction patchViaCapturingAllTheEvents() {\n var _loop_1 = function (i) {\n var property = eventNames[i];\n var onproperty = 'on' + property;\n self.addEventListener(property, function (event) {\n var elt = event.target, bound, source;\n if (elt) {\n source = elt.constructor['name'] + '.' + onproperty;\n }\n else {\n source = 'unknown.' + onproperty;\n }\n while (elt) {\n if (elt[onproperty] && !elt[onproperty][unboundKey]) {\n bound = wrapWithCurrentZone(elt[onproperty], source);\n bound[unboundKey] = elt[onproperty];\n elt[onproperty] = bound;\n }\n elt = elt.parentElement;\n }\n }, true);\n };\n for (var i = 0; i < eventNames.length; i++) {\n _loop_1(i);\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction eventTargetPatch(_global, api) {\n var WTF_ISSUE_555 = 'Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video';\n var NO_EVENT_TARGET = 'ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket'\n .split(',');\n var EVENT_TARGET = 'EventTarget';\n var apis = [];\n var isWtf = _global['wtf'];\n var WTF_ISSUE_555_ARRAY = WTF_ISSUE_555.split(',');\n if (isWtf) {\n // Workaround for: https://github.com/google/tracing-framework/issues/555\n apis = WTF_ISSUE_555_ARRAY.map(function (v) { return 'HTML' + v + 'Element'; }).concat(NO_EVENT_TARGET);\n }\n else if (_global[EVENT_TARGET]) {\n apis.push(EVENT_TARGET);\n }\n else {\n // Note: EventTarget is not available in all browsers,\n // if it's not available, we instead patch the APIs in the IDL that inherit from EventTarget\n apis = NO_EVENT_TARGET;\n }\n var isDisableIECheck = _global['__Zone_disable_IE_check'] || false;\n var isEnableCrossContextCheck = _global['__Zone_enable_cross_context_check'] || false;\n var ieOrEdge = isIEOrEdge();\n var ADD_EVENT_LISTENER_SOURCE = '.addEventListener:';\n var FUNCTION_WRAPPER = '[object FunctionWrapper]';\n var BROWSER_TOOLS = 'function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }';\n // predefine all __zone_symbol__ + eventName + true/false string\n for (var i = 0; i < eventNames.length; i++) {\n var eventName = eventNames[i];\n var falseEventName = eventName + FALSE_STR;\n var trueEventName = eventName + TRUE_STR;\n var symbol = ZONE_SYMBOL_PREFIX + falseEventName;\n var symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;\n zoneSymbolEventNames$1[eventName] = {};\n zoneSymbolEventNames$1[eventName][FALSE_STR] = symbol;\n zoneSymbolEventNames$1[eventName][TRUE_STR] = symbolCapture;\n }\n // predefine all task.source string\n for (var i = 0; i < WTF_ISSUE_555.length; i++) {\n var target = WTF_ISSUE_555_ARRAY[i];\n var targets = globalSources[target] = {};\n for (var j = 0; j < eventNames.length; j++) {\n var eventName = eventNames[j];\n targets[eventName] = target + ADD_EVENT_LISTENER_SOURCE + eventName;\n }\n }\n var checkIEAndCrossContext = function (nativeDelegate, delegate, target, args) {\n if (!isDisableIECheck && ieOrEdge) {\n if (isEnableCrossContextCheck) {\n try {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n else {\n var testString = delegate.toString();\n if ((testString === FUNCTION_WRAPPER || testString == BROWSER_TOOLS)) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n }\n else if (isEnableCrossContextCheck) {\n try {\n delegate.toString();\n }\n catch (error) {\n nativeDelegate.apply(target, args);\n return false;\n }\n }\n return true;\n };\n var apiTypes = [];\n for (var i = 0; i < apis.length; i++) {\n var type = _global[apis[i]];\n apiTypes.push(type && type.prototype);\n }\n // vh is validateHandler to check event handler\n // is valid or not(for security check)\n patchEventTarget(_global, apiTypes, { vh: checkIEAndCrossContext });\n api.patchEventTarget = patchEventTarget;\n return true;\n}\nfunction patchEvent(global, api) {\n patchEventPrototype(global, api);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction patchCallbacks(target, targetName, method, callbacks) {\n var symbol = Zone.__symbol__(method);\n if (target[symbol]) {\n return;\n }\n var nativeDelegate = target[symbol] = target[method];\n target[method] = function (name, opts, options) {\n if (opts && opts.prototype) {\n callbacks.forEach(function (callback) {\n var source = targetName + \".\" + method + \"::\" + callback;\n var prototype = opts.prototype;\n if (prototype.hasOwnProperty(callback)) {\n var descriptor = ObjectGetOwnPropertyDescriptor(prototype, callback);\n if (descriptor && descriptor.value) {\n descriptor.value = wrapWithCurrentZone(descriptor.value, source);\n _redefineProperty(opts.prototype, callback, descriptor);\n }\n else {\n prototype[callback] = wrapWithCurrentZone(prototype[callback], source);\n }\n }\n else if (prototype[callback]) {\n prototype[callback] = wrapWithCurrentZone(prototype[callback], source);\n }\n });\n }\n return nativeDelegate.call(target, name, opts, options);\n };\n attachOriginToPatched(target[method], nativeDelegate);\n}\nfunction registerElementPatch(_global) {\n if ((!isBrowser && !isMix) || !('registerElement' in _global.document)) {\n return;\n }\n var callbacks = ['createdCallback', 'attachedCallback', 'detachedCallback', 'attributeChangedCallback'];\n patchCallbacks(document, 'Document', 'registerElement', callbacks);\n}\nfunction patchCustomElements(_global) {\n if ((!isBrowser && !isMix) || !('customElements' in _global)) {\n return;\n }\n var callbacks = ['connectedCallback', 'disconnectedCallback', 'adoptedCallback', 'attributeChangedCallback'];\n patchCallbacks(_global.customElements, 'customElements', 'define', callbacks);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @fileoverview\n * @suppress {missingRequire}\n */\nZone.__load_patch('util', function (global, Zone, api) {\n api.patchOnProperties = patchOnProperties;\n api.patchMethod = patchMethod;\n api.bindArguments = bindArguments;\n});\nZone.__load_patch('timers', function (global) {\n var set = 'set';\n var clear = 'clear';\n patchTimer(global, set, clear, 'Timeout');\n patchTimer(global, set, clear, 'Interval');\n patchTimer(global, set, clear, 'Immediate');\n});\nZone.__load_patch('requestAnimationFrame', function (global) {\n patchTimer(global, 'request', 'cancel', 'AnimationFrame');\n patchTimer(global, 'mozRequest', 'mozCancel', 'AnimationFrame');\n patchTimer(global, 'webkitRequest', 'webkitCancel', 'AnimationFrame');\n});\nZone.__load_patch('blocking', function (global, Zone) {\n var blockingMethods = ['alert', 'prompt', 'confirm'];\n for (var i = 0; i < blockingMethods.length; i++) {\n var name_1 = blockingMethods[i];\n patchMethod(global, name_1, function (delegate, symbol, name) {\n return function (s, args) {\n return Zone.current.run(delegate, global, args, name);\n };\n });\n }\n});\nZone.__load_patch('EventTarget', function (global, Zone, api) {\n // load blackListEvents from global\n var SYMBOL_BLACK_LISTED_EVENTS = Zone.__symbol__('BLACK_LISTED_EVENTS');\n if (global[SYMBOL_BLACK_LISTED_EVENTS]) {\n Zone[SYMBOL_BLACK_LISTED_EVENTS] = global[SYMBOL_BLACK_LISTED_EVENTS];\n }\n patchEvent(global, api);\n eventTargetPatch(global, api);\n // patch XMLHttpRequestEventTarget's addEventListener/removeEventListener\n var XMLHttpRequestEventTarget = global['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget && XMLHttpRequestEventTarget.prototype) {\n api.patchEventTarget(global, [XMLHttpRequestEventTarget.prototype]);\n }\n patchClass('MutationObserver');\n patchClass('WebKitMutationObserver');\n patchClass('IntersectionObserver');\n patchClass('FileReader');\n});\nZone.__load_patch('on_property', function (global, Zone, api) {\n propertyDescriptorPatch(api, global);\n propertyPatch();\n});\nZone.__load_patch('customElements', function (global, Zone, api) {\n registerElementPatch(global);\n patchCustomElements(global);\n});\nZone.__load_patch('canvas', function (global) {\n var HTMLCanvasElement = global['HTMLCanvasElement'];\n if (typeof HTMLCanvasElement !== 'undefined' && HTMLCanvasElement.prototype &&\n HTMLCanvasElement.prototype.toBlob) {\n patchMacroTask(HTMLCanvasElement.prototype, 'toBlob', function (self, args) {\n return { name: 'HTMLCanvasElement.toBlob', target: self, cbIdx: 0, args: args };\n });\n }\n});\nZone.__load_patch('XHR', function (global, Zone) {\n // Treat XMLHttpRequest as a macrotask.\n patchXHR(global);\n var XHR_TASK = zoneSymbol('xhrTask');\n var XHR_SYNC = zoneSymbol('xhrSync');\n var XHR_LISTENER = zoneSymbol('xhrListener');\n var XHR_SCHEDULED = zoneSymbol('xhrScheduled');\n var XHR_URL = zoneSymbol('xhrURL');\n var XHR_ERROR_BEFORE_SCHEDULED = zoneSymbol('xhrErrorBeforeScheduled');\n function patchXHR(window) {\n var XMLHttpRequestPrototype = XMLHttpRequest.prototype;\n function findPendingTask(target) {\n return target[XHR_TASK];\n }\n var oriAddListener = XMLHttpRequestPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n var oriRemoveListener = XMLHttpRequestPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n if (!oriAddListener) {\n var XMLHttpRequestEventTarget_1 = window['XMLHttpRequestEventTarget'];\n if (XMLHttpRequestEventTarget_1) {\n var XMLHttpRequestEventTargetPrototype = XMLHttpRequestEventTarget_1.prototype;\n oriAddListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = XMLHttpRequestEventTargetPrototype[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n }\n var READY_STATE_CHANGE = 'readystatechange';\n var SCHEDULED = 'scheduled';\n function scheduleTask(task) {\n var data = task.data;\n var target = data.target;\n target[XHR_SCHEDULED] = false;\n target[XHR_ERROR_BEFORE_SCHEDULED] = false;\n // remove existing event listener\n var listener = target[XHR_LISTENER];\n if (!oriAddListener) {\n oriAddListener = target[ZONE_SYMBOL_ADD_EVENT_LISTENER];\n oriRemoveListener = target[ZONE_SYMBOL_REMOVE_EVENT_LISTENER];\n }\n if (listener) {\n oriRemoveListener.call(target, READY_STATE_CHANGE, listener);\n }\n var newListener = target[XHR_LISTENER] = function () {\n if (target.readyState === target.DONE) {\n // sometimes on some browsers XMLHttpRequest will fire onreadystatechange with\n // readyState=4 multiple times, so we need to check task state here\n if (!data.aborted && target[XHR_SCHEDULED] && task.state === SCHEDULED) {\n // check whether the xhr has registered onload listener\n // if that is the case, the task should invoke after all\n // onload listeners finish.\n var loadTasks = target['__zone_symbol__loadfalse'];\n if (loadTasks && loadTasks.length > 0) {\n var oriInvoke_1 = task.invoke;\n task.invoke = function () {\n // need to load the tasks again, because in other\n // load listener, they may remove themselves\n var loadTasks = target['__zone_symbol__loadfalse'];\n for (var i = 0; i < loadTasks.length; i++) {\n if (loadTasks[i] === task) {\n loadTasks.splice(i, 1);\n }\n }\n if (!data.aborted && task.state === SCHEDULED) {\n oriInvoke_1.call(task);\n }\n };\n loadTasks.push(task);\n }\n else {\n task.invoke();\n }\n }\n else if (!data.aborted && target[XHR_SCHEDULED] === false) {\n // error occurs when xhr.send()\n target[XHR_ERROR_BEFORE_SCHEDULED] = true;\n }\n }\n };\n oriAddListener.call(target, READY_STATE_CHANGE, newListener);\n var storedTask = target[XHR_TASK];\n if (!storedTask) {\n target[XHR_TASK] = task;\n }\n sendNative.apply(target, data.args);\n target[XHR_SCHEDULED] = true;\n return task;\n }\n function placeholderCallback() { }\n function clearTask(task) {\n var data = task.data;\n // Note - ideally, we would call data.target.removeEventListener here, but it's too late\n // to prevent it from firing. So instead, we store info for the event listener.\n data.aborted = true;\n return abortNative.apply(data.target, data.args);\n }\n var openNative = patchMethod(XMLHttpRequestPrototype, 'open', function () { return function (self, args) {\n self[XHR_SYNC] = args[2] == false;\n self[XHR_URL] = args[1];\n return openNative.apply(self, args);\n }; });\n var XMLHTTPREQUEST_SOURCE = 'XMLHttpRequest.send';\n var fetchTaskAborting = zoneSymbol('fetchTaskAborting');\n var fetchTaskScheduling = zoneSymbol('fetchTaskScheduling');\n var sendNative = patchMethod(XMLHttpRequestPrototype, 'send', function () { return function (self, args) {\n if (Zone.current[fetchTaskScheduling] === true) {\n // a fetch is scheduling, so we are using xhr to polyfill fetch\n // and because we already schedule macroTask for fetch, we should\n // not schedule a macroTask for xhr again\n return sendNative.apply(self, args);\n }\n if (self[XHR_SYNC]) {\n // if the XHR is sync there is no task to schedule, just execute the code.\n return sendNative.apply(self, args);\n }\n else {\n var options = { target: self, url: self[XHR_URL], isPeriodic: false, args: args, aborted: false };\n var task = scheduleMacroTaskWithCurrentZone(XMLHTTPREQUEST_SOURCE, placeholderCallback, options, scheduleTask, clearTask);\n if (self && self[XHR_ERROR_BEFORE_SCHEDULED] === true && !options.aborted &&\n task.state === SCHEDULED) {\n // xhr request throw error when send\n // we should invoke task instead of leaving a scheduled\n // pending macroTask\n task.invoke();\n }\n }\n }; });\n var abortNative = patchMethod(XMLHttpRequestPrototype, 'abort', function () { return function (self, args) {\n var task = findPendingTask(self);\n if (task && typeof task.type == 'string') {\n // If the XHR has already completed, do nothing.\n // If the XHR has already been aborted, do nothing.\n // Fix #569, call abort multiple times before done will cause\n // macroTask task count be negative number\n if (task.cancelFn == null || (task.data && task.data.aborted)) {\n return;\n }\n task.zone.cancelTask(task);\n }\n else if (Zone.current[fetchTaskAborting] === true) {\n // the abort is called from fetch polyfill, we need to call native abort of XHR.\n return abortNative.apply(self, args);\n }\n // Otherwise, we are trying to abort an XHR which has not yet been sent, so there is no\n // task\n // to cancel. Do nothing.\n }; });\n }\n});\nZone.__load_patch('geolocation', function (global) {\n /// GEO_LOCATION\n if (global['navigator'] && global['navigator'].geolocation) {\n patchPrototype(global['navigator'].geolocation, ['getCurrentPosition', 'watchPosition']);\n }\n});\nZone.__load_patch('PromiseRejectionEvent', function (global, Zone) {\n // handle unhandled promise rejection\n function findPromiseRejectionHandler(evtName) {\n return function (e) {\n var eventTasks = findEventTasks(global, evtName);\n eventTasks.forEach(function (eventTask) {\n // windows has added unhandledrejection event listener\n // trigger the event listener\n var PromiseRejectionEvent = global['PromiseRejectionEvent'];\n if (PromiseRejectionEvent) {\n var evt = new PromiseRejectionEvent(evtName, { promise: e.promise, reason: e.rejection });\n eventTask.invoke(evt);\n }\n });\n };\n }\n if (global['PromiseRejectionEvent']) {\n Zone[zoneSymbol('unhandledPromiseRejectionHandler')] =\n findPromiseRejectionHandler('unhandledrejection');\n Zone[zoneSymbol('rejectionHandledHandler')] =\n findPromiseRejectionHandler('rejectionhandled');\n }\n});\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n})));\n","/**\r\n * This file includes polyfills needed by Angular and is loaded before the app.\r\n * You can add your own extra polyfills to this file.\r\n *\r\n * This file is divided into 2 sections:\r\n * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\r\n * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\r\n * file.\r\n *\r\n * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\r\n * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\r\n * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\r\n *\r\n * Learn more in https://angular.io/guide/browser-support\r\n */\r\n\r\n/***************************************************************************************************\r\n * BROWSER POLYFILLS\r\n */\r\n\r\n/** IE9, IE10 and IE11 requires all of the following polyfills. **/\r\n// import 'core-js/es6/symbol';\r\n// import 'core-js/es6/object';\r\n// import 'core-js/es6/function';\r\n// import 'core-js/es6/parse-int';\r\n// import 'core-js/es6/parse-float';\r\n// import 'core-js/es6/number';\r\n// import 'core-js/es6/math';\r\n// import 'core-js/es6/string';\r\n// import 'core-js/es6/date';\r\n// import 'core-js/es6/array';\r\n// import 'core-js/es6/regexp';\r\n// import 'core-js/es6/map';\r\n// import 'core-js/es6/weak-map';\r\n// import 'core-js/es6/set';\r\n\r\n/**\r\n * If the application will be indexed by Google Search, the following is required.\r\n * Googlebot uses a renderer based on Chrome 41.\r\n * https://developers.google.com/search/docs/guides/rendering\r\n **/\r\n// import 'core-js/es6/array';\r\n\r\n/** IE10 and IE11 requires the following for NgClass support on SVG elements */\r\n// import 'classlist.js'; // Run `npm install --save classlist.js`.\r\n\r\n/** IE10 and IE11 requires the following for the Reflect API. */\r\n// import 'core-js/es6/reflect';\r\n\r\n/**\r\n * Web Animations `@angular/platform-browser/animations`\r\n * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.\r\n * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).\r\n **/\r\n// import 'web-animations-js'; // Run `npm install --save web-animations-js`.\r\n\r\n/**\r\n * By default, zone.js will patch all possible macroTask and DomEvents\r\n * user can disable parts of macroTask/DomEvents patch by setting following flags\r\n */\r\n\r\n // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame\r\n // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick\r\n // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames\r\n\r\n /*\r\n * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js\r\n * with the following flag, it will bypass `zone.js` patch for IE/Edge\r\n */\r\n// (window as any).__Zone_enable_cross_context_check = true;\r\n\r\n/***************************************************************************************************\r\n * Zone JS is required by default for Angular itself.\r\n */\r\nimport 'zone.js/dist/zone'; // Included with Angular CLI.\r\n\r\n\r\n/***************************************************************************************************\r\n * APPLICATION IMPORTS\r\n */\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/src/gui/qt-daemon/html/styles.js b/src/gui/qt-daemon/html/styles.js index dd30fa82..ea827fbc 100644 --- a/src/gui/qt-daemon/html/styles.js +++ b/src/gui/qt-daemon/html/styles.js @@ -7,7 +7,7 @@ /*! no static exports found */ /***/ (function(module, exports) { -module.exports = [[module.i, "/*\r\n* Implementation of themes\r\n*/\nhtml {\n box-sizing: border-box;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box; }\n*, *:before, *:after {\n box-sizing: inherit;\n -webkit-box-sizing: inherit;\n -moz-box-sizing: inherit;\n margin: 0;\n padding: 0;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline; }\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n display: block; }\nbody {\n line-height: 1;\n font-style: normal; }\nol, ul {\n list-style: none; }\nblockquote, q {\n quotes: none; }\nblockquote:before, blockquote:after,\nq:before, q:after {\n content: none; }\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\ntd,\nth {\n padding: 0; }\ninput {\n outline: none; }\ninput:-webkit-autofill {\n -webkit-box-shadow: 0 0 0 1000px white inset; }\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n outline: none; }\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\ninput {\n line-height: normal; }\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box; }\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\na {\n text-decoration: none; }\na:active, a:hover, a:focus {\n outline: 0; }\ni {\n font-style: italic; }\nb, strong {\n font-weight: 700; }\nimg {\n width: auto;\n max-width: 100%;\n height: auto;\n vertical-align: top;\n border: 0; }\n.hidden {\n display: none !important; }\nbutton {\n border: none;\n font-family: OpenSans, sans-serif;\n font-size: 1.5rem;\n font-weight: 600;\n outline: none;\n padding: 0 1rem;\n height: 4.2rem; }\n.theme-dark button:disabled:not(.transparent-button) {\n background-color: #90a4ae;\n color: #111921; }\n.theme-gray button:disabled:not(.transparent-button) {\n background-color: #79848f;\n color: #1a1a1a; }\n.theme-white button:disabled:not(.transparent-button) {\n background-color: #90a4ae;\n color: #fefefe; }\n.theme-dark button:disabled:not(.transparent-button):hover {\n background-color: #9bb0ba; }\n.theme-gray button:disabled:not(.transparent-button):hover {\n background-color: #85909b; }\n.theme-white button:disabled:not(.transparent-button):hover {\n background-color: #9baeb7; }\n.theme-dark button.blue-button:not(:disabled) {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray button.blue-button:not(:disabled) {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white button.blue-button:not(:disabled) {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark button.blue-button:not(:disabled):hover {\n background-color: #60b9ff; }\n.theme-gray button.blue-button:not(:disabled):hover {\n background-color: #4dafff; }\n.theme-white button.blue-button:not(:disabled):hover {\n background-color: #379ffa; }\n.theme-dark button.green-button:not(:disabled) {\n background-color: #5cda9d;\n color: #111921; }\n.theme-gray button.green-button:not(:disabled) {\n background-color: #47cf8d;\n color: #1a1a1a; }\n.theme-white button.green-button:not(:disabled) {\n background-color: #46c172;\n color: #fefefe; }\n.theme-dark button.green-button:not(:disabled):hover {\n background-color: #5ce2a1; }\n.theme-gray button.green-button:not(:disabled):hover {\n background-color: #49d993; }\n.theme-white button.green-button:not(:disabled):hover {\n background-color: #46ca75; }\n.theme-dark button.turquoise-button:not(:disabled) {\n background-color: #4dd0e1;\n color: #111921; }\n.theme-gray button.turquoise-button:not(:disabled) {\n background-color: #3ec5d7;\n color: #1a1a1a; }\n.theme-white button.turquoise-button:not(:disabled) {\n background-color: #26b6c7;\n color: #fefefe; }\n.theme-dark button.turquoise-button:not(:disabled):hover {\n background-color: #52d9ea; }\n.theme-gray button.turquoise-button:not(:disabled):hover {\n background-color: #43cee0; }\n.theme-white button.turquoise-button:not(:disabled):hover {\n background-color: #2bbdcf; }\nbutton.transparent-button {\n display: flex;\n align-items: center;\n justify-content: center; }\n.theme-dark button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #2b3644;\n color: #e0e0e0; }\n.theme-gray button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #2f3438;\n color: #e0e0e0; }\n.theme-white button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #ebebeb;\n color: #43454b; }\nbutton.transparent-button .icon {\n margin-right: 1rem;\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\n mask: url('complete-testwallet.svg') no-repeat center;\n width: 1.7rem;\n height: 1.7rem; }\n.theme-dark button.transparent-button .icon {\n background-color: #e0e0e0; }\n.theme-gray button.transparent-button .icon {\n background-color: #e0e0e0; }\n.theme-white button.transparent-button .icon {\n background-color: #43454b; }\n.input-block {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin-bottom: 0.4rem; }\n.input-block .wrap-label {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n min-height: 2.4rem; }\n.input-block label {\n font-size: 1.3rem;\n line-height: 2.4rem; }\n.theme-dark .input-block label {\n color: #556576; }\n.theme-gray .input-block label {\n color: #565c62; }\n.theme-white .input-block label {\n color: #a0a5ab; }\n.input-block input[type='text'], .input-block input[type='password'], .input-block select {\n border: none;\n font-size: 1.4rem;\n outline: none;\n padding: 0 1rem;\n width: 100%;\n height: 4.2rem; }\n.theme-dark .input-block input[type='text'], .theme-dark .input-block input[type='password'], .theme-dark .input-block select {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .input-block input[type='text'], .theme-gray .input-block input[type='password'], .theme-gray .input-block select {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .input-block input[type='text'], .theme-white .input-block input[type='password'], .theme-white .input-block select {\n background-color: #e6e6e6;\n color: #43454b; }\n.input-block.textarea {\n height: auto; }\n.input-block.textarea textarea {\n font-family: OpenSans, sans-serif;\n border: none;\n font-size: 1.4rem;\n outline: none;\n padding: 1rem;\n width: 100%;\n min-width: 100%;\n height: 100%;\n min-height: 7.5rem;\n max-height: 7.5rem;\n overflow: hidden;\n resize: none; }\n.theme-dark .input-block.textarea textarea {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .input-block.textarea textarea {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .input-block.textarea textarea {\n background-color: #e6e6e6;\n color: #43454b; }\n.input-block .error-block {\n font-size: 1rem;\n line-height: 1.4rem;\n align-self: flex-end;\n text-align: right; }\n.theme-dark .input-block .error-block {\n color: #fe5252; }\n.theme-gray .input-block .error-block {\n color: #fe5252; }\n.theme-white .input-block .error-block {\n color: #ff5252; }\ninput[type='radio'].style-radio + label {\n display: flex;\n align-items: center;\n cursor: pointer;\n font-weight: 400;\n padding-left: 2.4rem;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n.theme-dark input[type='radio'].style-radio + label {\n color: #556576; }\n.theme-gray input[type='radio'].style-radio + label {\n color: #565c62; }\n.theme-white input[type='radio'].style-radio + label {\n color: #a0a5ab; }\ninput[type='radio'].style-radio:not(checked) {\n position: absolute;\n opacity: 0; }\ninput[type='radio'].style-radio:not(checked) + label {\n position: relative; }\ninput[type='radio'].style-radio:not(checked) + label:before {\n content: '';\n position: absolute;\n top: 0.7rem;\n left: 0;\n background: transparent;\n border-radius: 50%;\n width: 1.4rem;\n height: 1.4rem; }\n.theme-dark input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #4db1ff; }\n.theme-gray input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #42a5f5; }\n.theme-white input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #2c95f1; }\ninput[type='radio'].style-radio:not(checked) + label:after {\n content: '';\n position: absolute;\n top: 1rem;\n left: 0.3rem;\n border-radius: 50%;\n opacity: 0;\n width: 0.8rem;\n height: 0.8rem; }\n.theme-dark input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #4db1ff; }\n.theme-gray input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #42a5f5; }\n.theme-white input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #2c95f1; }\ninput[type='radio'].style-radio:checked + label:after {\n opacity: 1; }\ninput[type='checkbox'].style-checkbox + label {\n display: flex;\n align-items: center;\n cursor: pointer;\n font-weight: 400;\n padding-left: 3.6rem;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n.theme-dark input[type='checkbox'].style-checkbox + label {\n color: #556576; }\n.theme-gray input[type='checkbox'].style-checkbox + label {\n color: #565c62; }\n.theme-white input[type='checkbox'].style-checkbox + label {\n color: #a0a5ab; }\ninput[type='checkbox'].style-checkbox:not(checked) {\n position: absolute;\n top: 50%;\n left: 1.6rem;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n visibility: hidden; }\ninput[type='checkbox'].style-checkbox:not(checked) + label {\n position: relative; }\ninput[type='checkbox'].style-checkbox:not(checked) + label:before {\n content: '';\n position: absolute;\n top: 50%;\n left: 1.6rem;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n background: transparent;\n width: 1.4rem;\n height: 1.4rem; }\n.theme-dark input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #4db1ff; }\n.theme-gray input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #42a5f5; }\n.theme-white input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #2c95f1; }\ninput[type='checkbox'].style-checkbox:checked + label:before {\n background: url('complete-testwallet.svg'); }\n.theme-dark input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #4db1ff; }\n.theme-gray input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #42a5f5; }\n.theme-white input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #2c95f1; }\n.theme-dark .switch {\n background-color: #000000; }\n.theme-gray .switch {\n background-color: #000000; }\n.theme-white .switch {\n background-color: #e0e0e0; }\n.theme-dark .switch .circle.on {\n background-color: #4db1ff; }\n.theme-gray .switch .circle.on {\n background-color: #42a5f5; }\n.theme-white .switch .circle.on {\n background-color: #2c95f1; }\n.theme-dark .switch .circle.off {\n background-color: #556576; }\n.theme-gray .switch .circle.off {\n background-color: #565c62; }\n.theme-white .switch .circle.off {\n background-color: #a0a5ab; }\n.table-tooltip {\n font-size: 1.3rem;\n padding: 1rem 2rem;\n white-space: pre-wrap; }\n.theme-dark .table-tooltip {\n background: #42505f;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-gray .table-tooltip {\n background: #3e464c;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-white .table-tooltip {\n background: #ffffff;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\n color: #43454b; }\n.table-tooltip.ng-tooltip-top {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top:before {\n content: \"\";\n position: absolute;\n bottom: -2rem;\n left: calc(50% - 1rem);\n border-width: 1rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top:before {\n border-color: #42505f transparent transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-top:before {\n border-color: #3e464c transparent transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-top:before {\n border-color: #ffffff transparent transparent transparent; }\n.table-tooltip.ng-tooltip-top-left {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top-left:before {\n content: \"\";\n position: absolute;\n bottom: -1rem;\n left: 0.7rem;\n border-width: 1rem 1rem 0 0;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top-left:before {\n border-color: #42505f transparent transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-top-left:before {\n border-color: #3e464c transparent transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-top-left:before {\n border-color: #ffffff transparent transparent transparent; }\n.table-tooltip.ng-tooltip-top-right {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top-right:before {\n content: \"\";\n position: absolute;\n bottom: -1rem;\n right: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top-right:before {\n border-color: #42505f #42505f transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-top-right:before {\n border-color: #3e464c #3e464c transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-top-right:before {\n border-color: #ffffff #ffffff transparent transparent; }\n.table-tooltip.ng-tooltip-bottom {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom:before {\n content: \"\";\n position: absolute;\n top: -2rem;\n left: calc(50% - 1rem);\n border-width: 1rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #42505f transparent; }\n.theme-gray .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #3e464c transparent; }\n.theme-white .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #ffffff transparent; }\n.table-tooltip.ng-tooltip-bottom-left {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom-left:before {\n content: \"\";\n position: absolute;\n top: -1rem;\n left: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #42505f #42505f; }\n.theme-gray .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #3e464c #3e464c; }\n.theme-white .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #ffffff #ffffff; }\n.table-tooltip.ng-tooltip-bottom-right {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom-right:before {\n content: \"\";\n position: absolute;\n top: -1rem;\n right: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #42505f #42505f transparent; }\n.theme-gray .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #3e464c #3e464c transparent; }\n.theme-white .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #ffffff #ffffff transparent; }\n.table-tooltip.ng-tooltip-left {\n margin-left: -1rem; }\n.table-tooltip.ng-tooltip-left:before {\n content: \"\";\n position: absolute;\n top: 0;\n right: -1rem;\n border-width: 1rem 1rem 0 0;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-left:before {\n border-color: #42505f transparent transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-left:before {\n border-color: #3e464c transparent transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-left:before {\n border-color: #ffffff transparent transparent transparent; }\n.table-tooltip.ng-tooltip-right {\n margin-left: 1rem; }\n.table-tooltip.ng-tooltip-right:before {\n content: \"\";\n position: absolute;\n top: 0;\n left: -1rem;\n border-width: 1rem 0 0 1rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-right:before {\n border-color: #42505f transparent transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-right:before {\n border-color: #3e464c transparent transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-right:before {\n border-color: #ffffff transparent transparent transparent; }\n.balance-tooltip {\n display: flex;\n flex-direction: column;\n font-size: 1.3rem;\n padding: 1.3rem; }\n.theme-dark .balance-tooltip {\n background: #42505f;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-gray .balance-tooltip {\n background: #3e464c;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-white .balance-tooltip {\n background: #ffffff;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\n color: #43454b; }\n.balance-tooltip.ng-tooltip-top {\n margin-top: -1rem; }\n.balance-tooltip.ng-tooltip-bottom {\n margin-top: 1rem; }\n.balance-tooltip.ng-tooltip-left {\n margin-left: -1rem; }\n.balance-tooltip.ng-tooltip-right {\n margin-left: 1rem; }\n.balance-tooltip .available {\n margin-bottom: 1.7rem; }\n.balance-tooltip .available b {\n font-weight: 600; }\n.balance-tooltip .locked {\n margin-bottom: 0.7rem; }\n.balance-tooltip .locked b {\n font-weight: 600; }\n.balance-tooltip .link {\n cursor: pointer; }\n.theme-dark .balance-tooltip .link {\n color: #4db1ff; }\n.theme-gray .balance-tooltip .link {\n color: #42a5f5; }\n.theme-white .balance-tooltip .link {\n color: #2c95f1; }\n.ngx-contextmenu .dropdown-menu {\n border: none;\n padding: 0; }\n.theme-dark .ngx-contextmenu .dropdown-menu {\n background-color: #2b3644;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\n.theme-gray .ngx-contextmenu .dropdown-menu {\n background-color: #292d31;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\n.theme-white .ngx-contextmenu .dropdown-menu {\n background-color: #e0e0e0;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5); }\n.ngx-contextmenu li {\n display: block;\n font-family: OpenSans, sans-serif;\n font-size: 1.3rem;\n text-transform: uppercase;\n text-align: center; }\n.ngx-contextmenu a {\n display: block;\n padding: 0.5em 1em; }\n.theme-dark .ngx-contextmenu a {\n color: #e0e0e0; }\n.theme-gray .ngx-contextmenu a {\n color: #e0e0e0; }\n.theme-white .ngx-contextmenu a {\n color: #43454b; }\n.theme-dark .ngx-contextmenu a:hover {\n background-color: #556576;\n color: #e0e0e0; }\n.theme-gray .ngx-contextmenu a:hover {\n background-color: #515960;\n color: #e0e0e0; }\n.theme-white .ngx-contextmenu a:hover {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-modal-container .modal {\n background: url('background-dark.png');\n color: #e0e0e0; }\n.theme-gray app-modal-container .modal {\n background: url('background-gray.png');\n color: #e0e0e0; }\n.theme-white app-modal-container .modal {\n background: url('background-white.png');\n color: #43454b; }\n.theme-dark app-modal-container .modal .content .icon.error {\n background-color: #fe5252; }\n.theme-gray app-modal-container .modal .content .icon.error {\n background-color: #fe5252; }\n.theme-white app-modal-container .modal .content .icon.error {\n background-color: #ff5252; }\n.theme-dark app-modal-container .modal .content .icon.success {\n background-color: #5cda9d; }\n.theme-gray app-modal-container .modal .content .icon.success {\n background-color: #47cf8d; }\n.theme-white app-modal-container .modal .content .icon.success {\n background-color: #46c172; }\n.theme-dark app-modal-container .modal .content .icon.info {\n background-color: #4db1ff; }\n.theme-gray app-modal-container .modal .content .icon.info {\n background-color: #42a5f5; }\n.theme-white app-modal-container .modal .content .icon.info {\n background-color: #2c95f1; }\n.theme-dark app-modal-container .modal .action-button {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-modal-container .modal .action-button {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-modal-container .modal .action-button {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark app-modal-container .modal .close-button .icon {\n background-color: #556576; }\n.theme-gray app-modal-container .modal .close-button .icon {\n background-color: #515960; }\n.theme-white app-modal-container .modal .close-button .icon {\n background-color: #43454b; }\n.theme-dark app-transaction-details .table {\n border-top: 0.2rem solid #2b3644; }\n.theme-gray app-transaction-details .table {\n border-top: 0.2rem solid #2f3438; }\n.theme-white app-transaction-details .table {\n border-top: 0.2rem solid #ebebeb; }\n.theme-dark app-transaction-details .table .row .cell.label {\n color: #556576; }\n.theme-gray app-transaction-details .table .row .cell.label {\n color: #565c62; }\n.theme-white app-transaction-details .table .row .cell.label {\n color: #a0a5ab; }\n.theme-dark app-transaction-details .table .row .cell.value {\n color: #e0e0e0; }\n.theme-gray app-transaction-details .table .row .cell.value {\n color: #e0e0e0; }\n.theme-white app-transaction-details .table .row .cell.value {\n color: #43454b; }\n.theme-dark app-transaction-details .table .row .cell.key-value {\n color: #4db1ff; }\n.theme-gray app-transaction-details .table .row .cell.key-value {\n color: #42a5f5; }\n.theme-white app-transaction-details .table .row .cell.key-value {\n color: #2c95f1; }\napp-main, app-create-wallet, app-open-wallet, app-restore-wallet, app-seed-phrase, app-wallet-details, app-assign-alias, app-edit-alias, app-transfer-alias, app-settings, app-login {\n flex: 1 1 auto;\n padding: 3rem;\n min-width: 85rem; }\napp-main .content, app-create-wallet .content, app-open-wallet .content, app-restore-wallet .content, app-seed-phrase .content, app-wallet-details .content, app-assign-alias .content, app-edit-alias .content, app-transfer-alias .content, app-settings .content, app-login .content {\n position: relative;\n padding: 3rem;\n min-height: 100%; }\n.theme-dark app-main .content, .theme-dark app-create-wallet .content, .theme-dark app-open-wallet .content, .theme-dark app-restore-wallet .content, .theme-dark app-seed-phrase .content, .theme-dark app-wallet-details .content, .theme-dark app-assign-alias .content, .theme-dark app-edit-alias .content, .theme-dark app-transfer-alias .content, .theme-dark app-settings .content, .theme-dark app-login .content {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray app-main .content, .theme-gray app-create-wallet .content, .theme-gray app-open-wallet .content, .theme-gray app-restore-wallet .content, .theme-gray app-seed-phrase .content, .theme-gray app-wallet-details .content, .theme-gray app-assign-alias .content, .theme-gray app-edit-alias .content, .theme-gray app-transfer-alias .content, .theme-gray app-settings .content, .theme-gray app-login .content {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white app-main .content, .theme-white app-create-wallet .content, .theme-white app-open-wallet .content, .theme-white app-restore-wallet .content, .theme-white app-seed-phrase .content, .theme-white app-wallet-details .content, .theme-white app-assign-alias .content, .theme-white app-edit-alias .content, .theme-white app-transfer-alias .content, .theme-white app-settings .content, .theme-white app-login .content {\n background-color: rgba(255, 255, 255, 0.5);\n color: #43454b; }\napp-main .content .head, app-create-wallet .content .head, app-open-wallet .content .head, app-restore-wallet .content .head, app-seed-phrase .content .head, app-wallet-details .content .head, app-assign-alias .content .head, app-edit-alias .content .head, app-transfer-alias .content .head, app-settings .content .head, app-login .content .head {\n position: absolute;\n top: 0;\n left: 0; }\n.theme-dark app-main .content .add-wallet .add-wallet-help {\n color: #4db1ff; }\n.theme-gray app-main .content .add-wallet .add-wallet-help {\n color: #42a5f5; }\n.theme-white app-main .content .add-wallet .add-wallet-help {\n color: #2c95f1; }\n.theme-dark app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #4db1ff; }\n.theme-gray app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #42a5f5; }\n.theme-white app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #2c95f1; }\n.theme-dark app-seed-phrase .seed-phrase-content {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray app-seed-phrase .seed-phrase-content {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white app-seed-phrase .seed-phrase-content {\n background-color: #e6e6e6;\n color: #43454b; }\n.theme-dark app-wallet-details .seed-phrase {\n background-color: #171e27; }\n.theme-gray app-wallet-details .seed-phrase {\n background-color: #292d31; }\n.theme-white app-wallet-details .seed-phrase {\n background-color: #e6e6e6; }\n.theme-dark app-settings .content .theme-selection {\n color: #556576; }\n.theme-gray app-settings .content .theme-selection {\n color: #565c62; }\n.theme-white app-settings .content .theme-selection {\n color: #a0a5ab; }\napp-login {\n min-width: inherit; }\n.theme-dark app-sidebar {\n background-color: rgba(23, 31, 39, 0.5); }\n.theme-gray app-sidebar {\n background-color: rgba(23, 25, 27, 0.5); }\n.theme-white app-sidebar {\n background-color: rgba(255, 255, 255, 0.5); }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #42a5f5; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: #1e88e5;\n color: #ffffff; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #91baf1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #000000;\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #000000;\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #91baf1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(58, 72, 90, 0.5); }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(70, 76, 81, 0.5); }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(240, 240, 240, 0.5); }\n.theme-dark app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #1f2833; }\n.theme-gray app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #2e3337; }\n.theme-white app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #ebebeb; }\n.theme-dark app-sidebar .sidebar-settings button {\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-settings button {\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-settings button {\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-settings button .icon {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-settings button .icon {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-settings button .icon {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-synchronization-status {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-synchronization-status {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-synchronization-status {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #fe5252; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #ff5252; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #ff5252; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .testnet {\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .testnet {\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .testnet {\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\n background-color: #363a3e; }\n.theme-white app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-synchronization-status .progress-bar-container .loading {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .progress-bar-container .loading {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .progress-bar-container .loading {\n background-color: #46c172; }\n.theme-dark app-wallet {\n color: #e0e0e0; }\n.theme-gray app-wallet {\n color: #e0e0e0; }\n.theme-white app-wallet {\n color: #43454b; }\n.theme-dark app-wallet .header button {\n color: #e0e0e0; }\n.theme-gray app-wallet .header button {\n color: #e0e0e0; }\n.theme-white app-wallet .header button {\n color: #43454b; }\n.theme-dark app-wallet .header button .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .header button .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .header button .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .header .alias .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .header .alias .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .header .alias .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .address {\n color: #4db1ff; }\n.theme-gray app-wallet .address {\n color: #42a5f5; }\n.theme-white app-wallet .address {\n color: #2c95f1; }\n.theme-dark app-wallet .address .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .address .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .address .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .tabs .tabs-header .tab {\n background-color: rgba(23, 31, 39, 0.5); }\n.theme-gray app-wallet .tabs .tabs-header .tab {\n background-color: rgba(23, 25, 27, 0.5); }\n.theme-white app-wallet .tabs .tabs-header .tab {\n background-color: rgba(224, 224, 224, 0.5); }\n.theme-dark app-wallet .tabs .tabs-header .tab .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .tabs .tabs-header .tab .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .tabs .tabs-header .tab .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(43, 54, 68, 0.5); }\n.theme-gray app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(37, 40, 43, 0.5); }\n.theme-white app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(255, 255, 255, 0.5); }\n.theme-dark app-wallet .tabs .tabs-content {\n background-color: rgba(43, 54, 68, 0.5); }\n.theme-gray app-wallet .tabs .tabs-content {\n background-color: rgba(37, 40, 43, 0.5); }\n.theme-white app-wallet .tabs .tabs-content {\n background-color: rgba(255, 255, 255, 0.5); }\n.theme-dark app-send .form-send .send-select {\n color: #e0e0e0; }\n.theme-gray app-send .form-send .send-select {\n color: #e0e0e0; }\n.theme-white app-send .form-send .send-select {\n color: #43454b; }\n.theme-dark app-send .form-send .send-select .icon {\n background-color: #4db1ff; }\n.theme-gray app-send .form-send .send-select .icon {\n background-color: #42a5f5; }\n.theme-white app-send .form-send .send-select .icon {\n background-color: #2c95f1; }\n.theme-dark app-send .form-send .additional-details {\n border: 0.2rem solid #2b3644; }\n.theme-gray app-send .form-send .additional-details {\n border: 0.2rem solid #2f3438; }\n.theme-white app-send .form-send .additional-details {\n border: 0.2rem solid #ebebeb; }\n.theme-dark app-receive .btn-copy-address {\n background-color: #4db1ff; }\n.theme-gray app-receive .btn-copy-address {\n background-color: #42a5f5; }\n.theme-white app-receive .btn-copy-address {\n background-color: #2c95f1; }\n.theme-dark app-history table tbody tr:nth-child(4n+1) {\n background-color: #18202a; }\n.theme-gray app-history table tbody tr:nth-child(4n+1) {\n background-color: #25292d; }\n.theme-white app-history table tbody tr:nth-child(4n+1) {\n background-color: #ffffff; }\n.theme-dark app-history table tbody tr:nth-child(4n+2) {\n background-color: #18202a; }\n.theme-gray app-history table tbody tr:nth-child(4n+2) {\n background-color: #25292d; }\n.theme-white app-history table tbody tr:nth-child(4n+2) {\n background-color: #ffffff; }\n.theme-dark app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-gray app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-white app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-dark app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-gray app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-white app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-dark app-history table tbody tr .status .confirmation {\n background-color: #343f4a; }\n.theme-gray app-history table tbody tr .status .confirmation {\n background-color: #363a3e; }\n.theme-white app-history table tbody tr .status .confirmation {\n background-color: #dcdcdc; }\n.theme-dark app-history table tbody tr .status .confirmation .fill {\n background-color: #5cda9d; }\n.theme-gray app-history table tbody tr .status .confirmation .fill {\n background-color: #47cf8d; }\n.theme-white app-history table tbody tr .status .confirmation .fill {\n background-color: #46c172; }\napp-history table tbody tr .status.send .icon {\n background-color: #ff5252; }\napp-history table tbody tr .status.received .icon {\n background-color: #00c853; }\n.theme-dark app-contracts .wrap-table .contract .icon.new, .theme-dark app-contracts .wrap-table .contract .icon.alert {\n background-color: #fe5252; }\n.theme-gray app-contracts .wrap-table .contract .icon.new, .theme-gray app-contracts .wrap-table .contract .icon.alert {\n background-color: #fe5252; }\n.theme-white app-contracts .wrap-table .contract .icon.new, .theme-white app-contracts .wrap-table .contract .icon.alert {\n background-color: #ff5252; }\n.theme-dark app-contracts .wrap-table .contract .icon.purchase, .theme-dark app-contracts .wrap-table .contract .icon.sell {\n background-color: #4db1ff; }\n.theme-gray app-contracts .wrap-table .contract .icon.purchase, .theme-gray app-contracts .wrap-table .contract .icon.sell {\n background-color: #42a5f5; }\n.theme-white app-contracts .wrap-table .contract .icon.purchase, .theme-white app-contracts .wrap-table .contract .icon.sell {\n background-color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .purchase-select {\n color: #e0e0e0; }\n.theme-gray app-purchase .form-purchase .purchase-select {\n color: #e0e0e0; }\n.theme-white app-purchase .form-purchase .purchase-select {\n color: #43454b; }\n.theme-dark app-purchase .form-purchase .purchase-select .icon {\n background-color: #4db1ff; }\n.theme-gray app-purchase .form-purchase .purchase-select .icon {\n background-color: #42a5f5; }\n.theme-white app-purchase .form-purchase .purchase-select .icon {\n background-color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .purchase-states {\n color: #4db1ff; }\n.theme-gray app-purchase .form-purchase .purchase-states {\n color: #42a5f5; }\n.theme-white app-purchase .form-purchase .purchase-states {\n color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #2b3644; }\n.theme-gray app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #2f3438; }\n.theme-white app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #ebebeb; }\n.theme-dark app-purchase .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-purchase .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-purchase .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #5cda9d; }\n.theme-gray app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #47cf8d; }\n.theme-white app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #46c172; }\napp-messages table tbody tr td:first-child span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; }\n.theme-dark app-messages table tbody tr td:first-child .icon {\n background-color: #fe5252; }\n.theme-gray app-messages table tbody tr td:first-child .icon {\n background-color: #fe5252; }\n.theme-white app-messages table tbody tr td:first-child .icon {\n background-color: #ff5252; }\n.theme-dark app-typing-message .head .interlocutor {\n color: #4db1ff; }\n.theme-gray app-typing-message .head .interlocutor {\n color: #42a5f5; }\n.theme-white app-typing-message .head .interlocutor {\n color: #2c95f1; }\n.theme-dark app-typing-message .messages-content .messages-list div.date {\n color: #556576; }\n.theme-gray app-typing-message .messages-content .messages-list div.date {\n color: #565c62; }\n.theme-white app-typing-message .messages-content .messages-list div.date {\n color: #a0a5ab; }\n.theme-dark app-typing-message .messages-content .messages-list div.my {\n background-color: #2a3544; }\n.theme-gray app-typing-message .messages-content .messages-list div.my {\n background-color: #30363c; }\n.theme-white app-typing-message .messages-content .messages-list div.my {\n background-color: #fff; }\napp-typing-message .messages-content .messages-list div.my:before {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: -1.1rem;\n border: 1.2rem solid transparent; }\n.theme-dark app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #2a3544; }\n.theme-gray app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #30363c; }\n.theme-white app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #fff; }\n.theme-dark app-typing-message .messages-content .messages-list div.buddy {\n background-color: #18202a; }\n.theme-gray app-typing-message .messages-content .messages-list div.buddy {\n background-color: #25292d; }\n.theme-white app-typing-message .messages-content .messages-list div.buddy {\n background-color: #ededed; }\napp-typing-message .messages-content .messages-list div.buddy:after {\n content: \"\";\n display: block;\n position: absolute;\n right: -1.1rem;\n top: 0;\n border: 1.2rem solid transparent; }\n.theme-dark app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #18202a; }\n.theme-gray app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #25292d; }\n.theme-white app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #ededed; }\n.theme-dark app-staking .chart-header .general .label {\n color: #556576; }\n.theme-gray app-staking .chart-header .general .label {\n color: #565c62; }\n.theme-white app-staking .chart-header .general .label {\n color: #a0a5ab; }\n.theme-dark app-staking .chart-header .general .options {\n color: #e0e0e0; }\n.theme-gray app-staking .chart-header .general .options {\n color: #e0e0e0; }\n.theme-white app-staking .chart-header .general .options {\n color: #43454b; }\napp-staking .chart-header .selected {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-grow: 1;\n font-size: 1.6rem; }\n.theme-dark app-staking .chart-options .title {\n color: #556576; }\n.theme-gray app-staking .chart-options .title {\n color: #565c62; }\n.theme-white app-staking .chart-options .title {\n color: #a0a5ab; }\n.theme-dark app-staking .chart-options .options button {\n color: #e0e0e0;\n background-color: #2b3644; }\n.theme-gray app-staking .chart-options .options button {\n color: #e0e0e0;\n background-color: #292d31; }\n.theme-white app-staking .chart-options .options button {\n color: #43454b;\n background-color: #e0e0e0; }\n.theme-dark app-staking .chart-options .options button.active {\n background-color: #556576; }\n.theme-gray app-staking .chart-options .options button.active {\n background-color: #515960; }\n.theme-white app-staking .chart-options .options button.active {\n background-color: #ffffff; }\n.head {\n display: flex;\n align-items: flex-end;\n justify-content: space-between;\n font-size: 1.3rem;\n padding: 0 3rem;\n width: 100%;\n height: 3rem; }\n.theme-dark .head {\n color: #4db1ff; }\n.theme-gray .head {\n color: #42a5f5; }\n.theme-white .head {\n color: #2c95f1; }\n.head .breadcrumbs > span:not(:last-child), .head .breadcrumbs a:not(:last-child) {\n position: relative;\n cursor: pointer;\n margin-right: 20px; }\n.head .breadcrumbs > span:not(:last-child):after, .head .breadcrumbs a:not(:last-child):after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0.5rem;\n right: -1.5rem;\n width: 0.9rem;\n height: 0.9rem;\n -webkit-mask: url('arrow-right.svg') no-repeat center;\n mask: url('arrow-right.svg') no-repeat center;\n -webkit-mask-size: cover;\n mask-size: cover; }\n.theme-dark .head .breadcrumbs > span:not(:last-child):after, .theme-dark .head .breadcrumbs a:not(:last-child):after {\n background-color: #4db1ff; }\n.theme-gray .head .breadcrumbs > span:not(:last-child):after, .theme-gray .head .breadcrumbs a:not(:last-child):after {\n background-color: #42a5f5; }\n.theme-white .head .breadcrumbs > span:not(:last-child):after, .theme-white .head .breadcrumbs a:not(:last-child):after {\n background-color: #2c95f1; }\n.head .back-btn {\n display: flex;\n align-items: center;\n background-color: transparent;\n color: #4db1ff;\n font-size: inherit;\n font-weight: 400;\n line-height: 1.3rem;\n padding: 0;\n height: auto; }\n.head .back-btn .icon {\n margin-right: 0.7rem;\n -webkit-mask: url('back.svg') no-repeat center;\n mask: url('back.svg') no-repeat center;\n width: 0.9rem;\n height: 0.9rem; }\n.theme-dark .head .back-btn .icon {\n background-color: #4db1ff; }\n.theme-gray .head .back-btn .icon {\n background-color: #42a5f5; }\n.theme-white .head .back-btn .icon {\n background-color: #2c95f1; }\n.scrolled-content::-webkit-scrollbar {\n background-color: transparent;\n cursor: default;\n width: 1rem;\n height: 1rem; }\n.scrolled-content::-webkit-scrollbar-track {\n background: transparent; }\n.scrolled-content::-webkit-scrollbar-thumb {\n background-color: #556576;\n background-clip: padding-box;\n border: 0.25rem solid transparent;\n border-radius: 0.5rem; }\n.scrolled-content::-webkit-scrollbar-thumb:hover {\n background-color: #556576; }\ntable {\n font-size: 1.3rem;\n width: 100%; }\ntable thead {\n text-align: left; }\n.theme-dark table thead {\n color: #556576; }\n.theme-gray table thead {\n color: #565c62; }\n.theme-white table thead {\n color: #a0a5ab; }\ntable thead tr {\n height: 4rem; }\ntable thead tr th {\n padding: 1rem;\n vertical-align: bottom; }\ntable thead tr th:first-child {\n padding-left: 3rem; }\ntable thead tr th:last-child {\n padding-right: 3rem; }\ntable tbody {\n text-align: left; }\n.theme-dark table tbody {\n color: #e0e0e0; }\n.theme-gray table tbody {\n color: #e0e0e0; }\n.theme-white table tbody {\n color: #43454b; }\ntable tbody tr {\n height: 3.5rem; }\n.theme-dark table tbody tr:nth-child(odd) {\n background-color: #18202a; }\n.theme-gray table tbody tr:nth-child(odd) {\n background-color: #25292d; }\n.theme-white table tbody tr:nth-child(odd) {\n background-color: #ffffff; }\ntable tbody tr td {\n line-height: 1.7rem;\n padding: 0 1rem;\n vertical-align: middle;\n white-space: nowrap;\n max-width: 20rem; }\ntable tbody tr td:first-child {\n padding-left: 3rem; }\ntable tbody tr td:last-child {\n padding-right: 3rem; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Light.ttf');\n font-weight: 300; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Regular.ttf');\n font-weight: 400; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-SemiBold.ttf');\n font-weight: 600; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Bold.ttf');\n font-weight: 700; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-ExtraBold.ttf');\n font-weight: 800; }\nhtml {\n font-family: OpenSans, sans-serif;\n font-size: 10px; }\nbody {\n font-family: OpenSans, sans-serif;\n font-size: 1.6rem;\n width: 100vw;\n height: 100vh; }\nbody.theme-dark {\n background: #131921 url('background-dark.png') no-repeat center;\n background-size: cover; }\nbody.theme-gray {\n background: #101417 url('background-gray.png') no-repeat center;\n background-size: cover; }\nbody.theme-white {\n background: #eeeeee url('background-white.png') no-repeat center;\n background-size: cover; }\nbody app-root {\n display: flex;\n width: 100%;\n height: 100%; }\n\r\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxiYXNlXFxfbWl4aW5zLnNjc3MiLCJzcmMvc3R5bGVzLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX251bGwuc2NzcyIsInNyYy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxiYXNlXFxfYmFzZS5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGJhc2VcXF90aGVtZS5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGxheW91dFxcX21haW4uc2NzcyIsInNyYy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxsYXlvdXRcXF9zaWRlYmFyLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbGF5b3V0XFxfd2FsbGV0LnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbW9kdWxlc1xcX2hlYWQuc2NzcyIsInNyYy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxtb2R1bGVzXFxfc2Nyb2xsLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbW9kdWxlc1xcX3RhYmxlLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXHN0eWxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThFQTs7Q0M1RUM7QUNDRDtFQUNFLHNCQUFzQjtFQUN0Qiw4QkFBOEI7RUFDOUIsMkJBQTJCLEVBQUE7QUFFN0I7RUFDRSxtQkFBbUI7RUFDbkIsMkJBQTJCO0VBQzNCLHdCQUF3QjtFQUN4QixTQUFTO0VBQ1QsVUFBVTtFRjhCWCwyQkFBMkI7RUFDMUIseUJBQXlCO0VBRXpCLHNCQUFzQjtFQUN0QixxQkFBcUI7RUFDckIsaUJBQWlCLEVBQUE7QUUvQm5COzs7Ozs7Ozs7Ozs7O0VBYUksU0FBUztFQUNULGVBQWU7RUFDZixhQUFhO0VBQ2Isd0JBQXdCLEVBQUE7QUFFNUI7O0VBRUksY0FBYyxFQUFBO0FBR2xCO0VBQ0csY0FBYztFQUNkLGtCQUFrQixFQUFBO0FBRXJCO0VBQ0ksZ0JBQWdCLEVBQUE7QUFFcEI7RUFDSSxZQUFZLEVBQUE7QUFFaEI7O0VBRUksYUFBYSxFQUFBO0FBSWpCO0VBQ0kseUJBQXlCO0VBQ3pCLGlCQUFpQixFQUFBO0FBRXJCOztFQUVFLFVBQVUsRUFBQTtBQUlaO0VBQ0ksYUFBYSxFQUFBO0FBRGpCO0lBR00sNENBQTRDLEVBQUE7QUFJbEQ7Ozs7RUFJRSwwQkFBMEI7RUFDMUIsZUFBZTtFQUNmLGFBQWEsRUFBQTtBQUVmOztFQUVFLGVBQWUsRUFBQTtBQUVqQjs7RUFFRSxTQUFTO0VBQ1QsVUFBVSxFQUFBO0FBRVo7RUFDRSxtQkFBbUIsRUFBQTtBQUVyQjtFQUNFLDZCQUE2QjtFQUM3Qix1QkFBdUIsRUFBQTtBQUV6Qjs7RUFFRSx3QkFBd0IsRUFBQTtBQUsxQjtFQUNDLHFCQUFxQixFQUFBO0FBRHRCO0lBS0UsVUFBVSxFQUFBO0FBSVo7RUFBSSxrQkFBa0IsRUFBQTtBQUN0QjtFQUFZLGdCQUFnQixFQUFBO0FBRzVCO0VBQ0MsV0FBVztFQUNYLGVBQWU7RUFDZixZQUFZO0VBQ1gsbUJBQW1CO0VBQ3BCLFNBQVMsRUFBQTtBQUdWO0VBQ0Usd0JBQXdCLEVBQUE7QUM5SDFCO0VBQ0UsWUFBWTtFQUNaLGlDQUFpQztFQUNqQyxpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLGFBQWE7RUFDYixlQUFlO0VBQ2YsY0FBYyxFQUFBO0FINEVaO0lHdkVFLHlCQ0lvQztJREhwQyxjQ0oyQixFQUFBO0FKMEU3QjtJR3ZFRSx5QkNnRG9DO0lEL0NwQyxjQ3dDMkIsRUFBQTtBSjhCN0I7SUd2RUUseUJDNEZvQztJRDNGcEMsY0NvRjJCLEVBQUE7QUpkN0I7SUdoRUkseUJDRjZCLEVBQUE7QUprRWpDO0lHaEVJLHlCQzBDNkIsRUFBQTtBSnNCakM7SUdoRUkseUJDc0Y2QixFQUFBO0FKdEJqQztJR3hERSx5QkNiZ0M7SURjaEMsY0NuQjJCLEVBQUE7QUowRTdCO0lHeERFLHlCQytCZ0M7SUQ5QmhDLGNDeUIyQixFQUFBO0FKOEI3QjtJR3hERSx5QkMyRWdDO0lEMUVoQyxjQ3FFMkIsRUFBQTtBSmQ3QjtJR2pESSx5QkNuQnlCLEVBQUE7QUpvRTdCO0lHakRJLHlCQ3lCeUIsRUFBQTtBSndCN0I7SUdqREkseUJDcUV5QixFQUFBO0FKcEI3QjtJR3pDRSx5QkN4QmlDO0lEeUJqQyxjQ2xDMkIsRUFBQTtBSjBFN0I7SUd6Q0UseUJDb0JpQztJRG5CakMsY0NVMkIsRUFBQTtBSjhCN0I7SUd6Q0UseUJDZ0VpQztJRC9EakMsY0NzRDJCLEVBQUE7QUpkN0I7SUdsQ0kseUJDOUIwQixFQUFBO0FKZ0U5QjtJR2xDSSx5QkNjMEIsRUFBQTtBSm9COUI7SUdsQ0kseUJDMEQwQixFQUFBO0FKeEI5QjtJRzFCRSx5QkNyQ3FDO0lEc0NyQyxjQ2pEMkIsRUFBQTtBSjBFN0I7SUcxQkUseUJDT3FDO0lETnJDLGND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QixjQzFla0IsRUFBQTtBSitCdEI7SUcwY0kseUJDOVoyQjtJRCtaM0IsY0M5YmtCLEVBQUE7QUpidEI7RUdzZEUsc0NDL2YwRDtFRGdnQjFELGNDbGlCb0IsRUFBQTtBSjJFdEI7RUdzZEUsc0NDbmQwRDtFRG9kMUQsY0N0Zm9CLEVBQUE7QUorQnRCO0VHc2RFLHVDQ3ZhMkQ7RUR3YTNELGNDMWNvQixFQUFBO0FKYnRCO0VHK2RNLHlCQ3JpQmUsRUFBQTtBSnNFckI7RUcrZE0seUJDemZlLEVBQUE7QUowQnJCO0VHK2RNLHlCQzdjZSxFQUFBO0FKbEJyQjtFR3NlTSx5QkM3aUJpQixFQUFBO0FKdUV2QjtFR3NlTSx5QkNqZ0JpQixFQUFBO0FKMkJ2QjtFR3NlTSx5QkNyZGlCLEVBQUE7QUpqQnZCO0VHNmVNLHlCQ3JqQmdCLEVBQUE7QUp3RXRCO0VHNmVNLHlCQ3pnQmdCLEVBQUE7QUo0QnRCO0VHNmVNLHlCQzdkZ0IsRUFBQTtBSmhCdEI7RUdxZkkseUJDN2pCa0I7RUQ4akJsQixjQ2hrQnlCLEVBQUE7QUowRTdCO0VHcWZJLHlCQ2poQmtCO0VEa2hCbEIsY0NwaEJ5QixFQUFBO0FKOEI3QjtFR3FmSSx5QkNyZWtCO0VEc2VsQixjQ3hleUIsRUFBQTtBSmQ3QjtFRytmTSx5QkN2aUJtQixFQUFBO0FKd0N6QjtFRytmTSx5QkMzZm1CLEVBQUE7QUpKekI7RUcrZk0seUJDL2NtQixFQUFBO0FKaER6QjtFRzJnQkUsZ0NDeGtCbUMsRUFBQTtBSjZEckM7RUcyZ0JFLGdDQzVoQm1DLEVBQUE7QUppQnJDO0VHMmdCRSxnQ0NoZm1DLEVBQUE7QUozQnJDO0VHcWhCUSxjQzlsQmtCLEVBQUE7QUp5RTFCO0VHcWhCUSxjQ2xqQmtCLEVBQUE7QUo2QjFCO0VHcWhCUSxjQ3RnQmtCLEVBQUE7QUpmMUI7RUc0aEJRLGNDdm1CYyxFQUFBO0FKMkV0QjtFRzRoQlEsY0MzakJjLEVBQUE7QUorQnRCO0VHNGhCUSxjQy9nQmMsRUFBQTtBSmJ0QjtFR21pQlEsY0MzbUJjLEVBQUE7QUp3RXRCO0VHbWlCUSxjQy9qQmMsRUFBQTtBSjRCdEI7RUdtaUJRLGNDbmhCYyxFQUFBO0FDbkcxQjtFQUNFLGNBQWM7RUFDZCxhQUFhO0VBQ2IsZ0JBQWdCLEVBQUE7QUFIbEI7SUFNSSxrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLGdCQUFnQixFQUFBO0FMMkVoQjtNS3hFRSx1Q0RKMkM7TUNLM0MsY0RKb0IsRUFBQTtBSjJFdEI7TUt4RUUsdUNEd0MyQztNQ3ZDM0MsY0R3Q29CLEVBQUE7QUorQnRCO01LeEVFLDBDRG9GOEM7TUNuRjlDLGNEb0ZvQixFQUFBO0FDaEcxQjtNQWdCTSxrQkFBa0I7TUFDbEIsTUFBTTtNQUNOLE9BQU8sRUFBQTtBTGlFVDtFS25ETSxjRHJCZ0IsRUFBQTtBSndFdEI7RUtuRE0sY0R1QmdCLEVBQUE7QUo0QnRCO0VLbkRNLGNEbUVnQixFQUFBO0FKaEJ0QjtFSzdDUSx5QkQzQmMsRUFBQTtBSndFdEI7RUs3Q1EseUJEaUJjLEVBQUE7QUo0QnRCO0VLN0NRLHlCRDZEYyxFQUFBO0FKaEJ0QjtFS2hDRSx5QkQ1QjJCO0VDNkIzQixjRDVDb0IsRUFBQTtBSjJFdEI7RUtoQ0UseUJEZ0IyQjtFQ2YzQixjREFvQixFQUFBO0FKK0J0QjtFS2hDRSx5QkQ0RDJCO0VDM0QzQixjRDRDb0IsRUFBQTtBSmJ0QjtFS3JCRSx5QkR2QzJCLEVBQUE7QUo0RDdCO0VLckJFLHlCREsyQixFQUFBO0FKZ0I3QjtFS3JCRSx5QkRpRDJCLEVBQUE7QUo1QjdCO0VLVEksY0RoRXNCLEVBQUE7QUp5RTFCO0VLVEksY0RwQnNCLEVBQUE7QUo2QjFCO0VLVEksY0R3QnNCLEVBQUE7QUNsQjlCO0VBQ0Usa0JBQWtCLEVBQUE7QUxFaEI7RU1oRkEsdUNGQTZDLEVBQUE7QUpnRjdDO0VNaEZBLHVDRjRDNkMsRUFBQTtBSm9DN0M7RU1oRkEsMENGd0ZnRCxFQUFBO0FKUmhEO0VNdEVNLGNGTGdCLEVBQUE7QUoyRXRCO0VNdEVNLGNGdUNnQixFQUFBO0FKK0J0QjtFTXRFTSxjRm1GZ0IsRUFBQTtBSmJ0QjtFTS9ETSxjRlRnQixFQUFBO0FKd0V0QjtFTS9ETSxjRm1DZ0IsRUFBQTtBSjRCdEI7RU0vRE0sY0YrRWdCLEVBQUE7QUpoQnRCO0VNckRNLDZCQUE2QjtFQUM3QixjRnZCZ0IsRUFBQTtBSjJFdEI7RU1yRE0sNkJBQTZCO0VBQzdCLGNGcUJnQixFQUFBO0FKK0J0QjtFTXJETSw2QkFBNkI7RUFDN0IsY0ZpRWdCLEVBQUE7QUpidEI7RU01Q1UsY0Y3QmdCLEVBQUE7QUp5RTFCO0VNNUNVLGNGZWdCLEVBQUE7QUo2QjFCO0VNNUNVLGNGMkRnQixFQUFBO0FKZjFCO0VNckNVLHlCRm5DWSxFQUFBO0FKd0V0QjtFTXJDVSx5QkZTWSxFQUFBO0FKNEJ0QjtFTXJDVSx5QkZxRFksRUFBQTtBSmhCdEI7RU05QlUseUJGdkN3QjtFRXdDeEIsY0Y3Q21CLEVBQUE7QUowRTdCO0VNOUJVLHlCRkt3QjtFRUp4QixjRkRtQixFQUFBO0FKOEI3QjtFTTlCVSx5QkZpRHdCO0VFaER4QixjRjJDbUIsRUFBQTtBSmQ3QjtFTXBCWSx5QkYzQnVCLEVBQUE7QUorQ25DO0VNcEJZLHlCRmlCdUIsRUFBQTtBSkduQztFTXBCWSx5QkY2RHVCLEVBQUE7QUp6Q25DO0VNZGMseUJGaEN5QixFQUFBO0FKOEN2QztFTWRjLHlCRll5QixFQUFBO0FKRXZDO0VNZGMseUJGd0R5QixFQUFBO0FKMUN2QztFTUxVLGNGcEVnQixFQUFBO0FKeUUxQjtFTUxVLGNGeEJnQixFQUFBO0FKNkIxQjtFTUxVLGNGb0JnQixFQUFBO0FKZjFCO0VNR1EsdUNGN0RxQztFRThEckMsY0Y1RHFCLEVBQUE7QUp3RDdCO0VNR1EsdUNGakJxQztFRWtCckMsY0ZoQnFCLEVBQUE7QUpZN0I7RU1HUSx5QkYyQnFDO0VFMUJyQyxjRjRCcUIsRUFBQTtBSmhDN0I7RU1ZWSxjRm5FcUIsRUFBQTtBSnVEakM7RU1ZWSxjRnZCcUIsRUFBQTtBSldqQztFTVlZLGNGcUJxQixFQUFBO0FKakNqQztFTW1CWSx5QkZ2RTRCO0VFd0U1QixjRjFFc0IsRUFBQTtBSnNEbEM7RU1tQlkseUJGM0I0QjtFRTRCNUIsY0Y5QnNCLEVBQUE7QUpVbEM7RU1tQlkseUJGaUI0QjtFRWhCNUIsY0Zjc0IsRUFBQTtBSmxDbEM7RU0yQlkseUJGaEZ5QjtFRWlGekIsY0Z2R1UsRUFBQTtBSjJFdEI7RU0yQlkseUJGcEN5QjtFRXFDekIsY0YzRFUsRUFBQTtBSitCdEI7RU0yQlkseUJGUXlCO0VFUHpCLGNGZlUsRUFBQTtBSmJ0QjtFTW1DWSxjRjFGcUIsRUFBQTtBSnVEakM7RU1tQ1ksY0Y5Q3FCLEVBQUE7QUpXakM7RU1tQ1ksY0ZGcUIsRUFBQTtBSmpDakM7RU00Q1EsdUNGckcwQyxFQUFBO0FKeURsRDtFTTRDUSx1Q0Z6RDBDLEVBQUE7QUphbEQ7RU00Q1EsMENGYjZDLEVBQUE7QUovQnJEO0VNc0RFLG1DRnJJeUIsRUFBQTtBSitFM0I7RU1zREUsbUNGekZ5QixFQUFBO0FKbUMzQjtFTXNERSxtQ0Y3Q3lCLEVBQUE7QUpUM0I7RU00REksY0Z2SWtCLEVBQUE7QUoyRXRCO0VNNERJLGNGM0ZrQixFQUFBO0FKK0J0QjtFTTRESSxjRi9Da0IsRUFBQTtBSmJ0QjtFTWtFTSx5QkYxSWdCLEVBQUE7QUp3RXRCO0VNa0VNLHlCRjlGZ0IsRUFBQTtBSjRCdEI7RU1rRU0seUJGbERnQixFQUFBO0FKaEJ0QjtFTTJFRSxjRnBKd0IsRUFBQTtBSnlFMUI7RU0yRUUsY0Z4R3dCLEVBQUE7QUo2QjFCO0VNMkVFLGNGNUR3QixFQUFBO0FKZjFCO0VNbUZNLHlCRmhLZSxFQUFBO0FKNkVyQjtFTW1GTSx5QkZwSGUsRUFBQTtBSmlDckI7RU1tRk0seUJGeEVlLEVBQUE7QUpYckI7RU0wRk0seUJGeEtjLEVBQUE7QUo4RXBCO0VNMEZNLHlCRjVIYyxFQUFBO0FKa0NwQjtFTTBGTSx5QkZoRmMsRUFBQTtBSlZwQjtFTWlHTSxjRjVLZ0IsRUFBQTtBSjJFdEI7RU1pR00sY0ZoSWdCLEVBQUE7QUorQnRCO0VNaUdNLGNGcEZnQixFQUFBO0FKYnRCO0VNNkdRLHlCRjVKMkIsRUFBQTtBSitDbkM7RU02R1EseUJGaEgyQixFQUFBO0FKR25DO0VNNkdRLHlCRnBFMkIsRUFBQTtBSnpDbkM7RU1tSFUseUJGaks2QixFQUFBO0FKOEN2QztFTW1IVSx5QkZySDZCLEVBQUE7QUpFdkM7RU1tSFUseUJGekU2QixFQUFBO0FKMUN2QztFTTRITSx5QkYxS2lDLEVBQUE7QUo4Q3ZDO0VNNEhNLHlCRjlIaUMsRUFBQTtBSkV2QztFTTRITSx5QkZsRmlDLEVBQUE7QUoxQ3ZDO0VPaEZBLGNIS3NCLEVBQUE7QUoyRXRCO0VPaEZBLGNIaURzQixFQUFBO0FKK0J0QjtFT2hGQSxjSDZGc0IsRUFBQTtBSmJ0QjtFT3hFSSxjSEhrQixFQUFBO0FKMkV0QjtFT3hFSSxjSHlDa0IsRUFBQTtBSitCdEI7RU94RUksY0hxRmtCLEVBQUE7QUpidEI7RU9sRU0seUJITmdCLEVBQUE7QUp3RXRCO0VPbEVNLHlCSHNDZ0IsRUFBQTtBSjRCdEI7RU9sRU0seUJIa0ZnQixFQUFBO0FKaEJ0QjtFT3hETSx5QkhoQmdCLEVBQUE7QUp3RXRCO0VPeERNLHlCSDRCZ0IsRUFBQTtBSjRCdEI7RU94RE0seUJId0VnQixFQUFBO0FKaEJ0QjtFTy9DRSxjSHpCb0IsRUFBQTtBSndFdEI7RU8vQ0UsY0htQm9CLEVBQUE7QUo0QnRCO0VPL0NFLGNIK0RvQixFQUFBO0FKaEJ0QjtFT3pDSSx5QkgvQmtCLEVBQUE7QUp3RXRCO0VPekNJLHlCSGFrQixFQUFBO0FKNEJ0QjtFT3pDSSx5Qkh5RGtCLEVBQUE7QUpoQnRCO0VPN0JNLHVDSHRCMkMsRUFBQTtBSm1EakQ7RU83Qk0sdUNIc0IyQyxFQUFBO0FKT2pEO0VPN0JNLDBDSGtFOEMsRUFBQTtBSnJDcEQ7RU92QlEseUJIakRjLEVBQUE7QUp3RXRCO0VPdkJRLHlCSExjLEVBQUE7QUo0QnRCO0VPdkJRLHlCSHVDYyxFQUFBO0FKaEJ0QjtFT2hCUSx5QkhwQ2dDO0VHcUNoQyxjSHZDMEIsRUFBQTtBSnNEbEM7RU9oQlEseUJIUWdDO0VHUGhDLGNISzBCLEVBQUE7QUpVbEM7RU9oQlEseUJIb0RnQztFR25EaEMsY0hpRDBCLEVBQUE7QUpsQ2xDO0VPUlEsdUNIcEVxQyxFQUFBO0FKNEU3QztFT1JRLHVDSHhCcUMsRUFBQTtBSmdDN0M7RU9SUSwwQ0hvQndDLEVBQUE7QUpaaEQ7RU9DSSx1Q0g3RXlDLEVBQUE7QUo0RTdDO0VPQ0ksdUNIakN5QyxFQUFBO0FKZ0M3QztFT0NJLDBDSFc0QyxFQUFBO0FKWmhEO0VPY0ksY0h6RmtCLEVBQUE7QUoyRXRCO0VPY0ksY0g3Q2tCLEVBQUE7QUorQnRCO0VPY0ksY0hEa0IsRUFBQTtBSmJ0QjtFT29CTSx5Qkg1RmdCLEVBQUE7QUp3RXRCO0VPb0JNLHlCSGhEZ0IsRUFBQTtBSjRCdEI7RU9vQk0seUJISmdCLEVBQUE7QUpoQnRCO0VPNEJJLDRCSHpGaUMsRUFBQTtBSjZEckM7RU80QkksNEJIN0NpQyxFQUFBO0FKaUJyQztFTzRCSSw0QkhEaUMsRUFBQTtBSjNCckM7RU91Q0UseUJIL0dvQixFQUFBO0FKd0V0QjtFT3VDRSx5QkhuRW9CLEVBQUE7QUo0QnRCO0VPdUNFLHlCSHZCb0IsRUFBQTtBSmhCdEI7RU91RFEseUJIekdxQixFQUFBO0FKa0Q3QjtFT3VEUSx5Qkg3RHFCLEVBQUE7QUpNN0I7RU91RFEseUJIakJxQixFQUFBO0FKdEM3QjtFTzhEUSx5QkhoSHFCLEVBQUE7QUprRDdCO0VPOERRLHlCSHBFcUIsRUFBQTtBSk03QjtFTzhEUSx5Qkh4QnFCLEVBQUE7QUp0QzdCO0VPcUVRLDZCQUE2QixFQUFBO0FQckVyQztFT3FFUSw2QkFBNkIsRUFBQTtBUHJFckM7RU9xRVEsNkJBQTZCLEVBQUE7QVByRXJDO0VPNEVRLDZCQUE2QixFQUFBO0FQNUVyQztFTzRFUSw2QkFBNkIsRUFBQTtBUDVFckM7RU80RVEsNkJBQTZCLEVBQUE7QVA1RXJDO0VPcUZVLHlCSHBJeUIsRUFBQTtBSitDbkM7RU9xRlUseUJIeEZ5QixFQUFBO0FKR25DO0VPcUZVLHlCSDVDeUIsRUFBQTtBSnpDbkM7RU8yRlkseUJIekkyQixFQUFBO0FKOEN2QztFTzJGWSx5Qkg3RjJCLEVBQUE7QUpFdkM7RU8yRlkseUJIakQyQixFQUFBO0FHRTNDO0VBd0RZLHlCQUF5QixFQUFBO0FBeERyQztFQStEWSx5QkFBeUIsRUFBQTtBUDNHakM7RU84SFEseUJIcE1hLEVBQUE7QUpzRXJCO0VPOEhRLHlCSHhKYSxFQUFBO0FKMEJyQjtFTzhIUSx5Qkg1R2EsRUFBQTtBSmxCckI7RU9xSVEseUJIN01jLEVBQUE7QUp3RXRCO0VPcUlRLHlCSGpLYyxFQUFBO0FKNEJ0QjtFT3FJUSx5QkhySGMsRUFBQTtBSmhCdEI7RU9vSkksY0gvTmtCLEVBQUE7QUoyRXRCO0VPb0pJLGNIbkxrQixFQUFBO0FKK0J0QjtFT29KSSxjSHZJa0IsRUFBQTtBSmJ0QjtFTzBKTSx5QkhsT2dCLEVBQUE7QUp3RXRCO0VPMEpNLHlCSHRMZ0IsRUFBQTtBSjRCdEI7RU8wSk0seUJIMUlnQixFQUFBO0FKaEJ0QjtFT2tLSSxjSDFPa0IsRUFBQTtBSndFdEI7RU9rS0ksY0g5TGtCLEVBQUE7QUo0QnRCO0VPa0tJLGNIbEprQixFQUFBO0FKaEJ0QjtFT3lLSSw0Qkh0T2lDLEVBQUE7QUo2RHJDO0VPeUtJLDRCSDFMaUMsRUFBQTtBSmlCckM7RU95S0ksNEJIOUlpQyxFQUFBO0FKM0JyQztFT21MSSx5QkhsTytCLEVBQUE7QUorQ25DO0VPbUxJLHlCSHRMK0IsRUFBQTtBSkduQztFT21MSSx5QkgxSStCLEVBQUE7QUp6Q25DO0VPeUxNLHlCSHZPaUMsRUFBQTtBSjhDdkM7RU95TE0seUJIM0xpQyxFQUFBO0FKRXZDO0VPeUxNLHlCSC9JaUMsRUFBQTtBR3NKM0M7RVBsUkUsZ0JBQWdCO0VBQ2hCLHVCQUF1QjtFQUN2QixtQkFBbUIsRUFBQTtBQWdGakI7RU9pTlUseUJIdlJXLEVBQUE7QUpzRXJCO0VPaU5VLHlCSDNPVyxFQUFBO0FKMEJyQjtFT2lOVSx5QkgvTFcsRUFBQTtBSmxCckI7RU9pT0ksY0h6U2tCLEVBQUE7QUp3RXRCO0VPaU9JLGNIN1BrQixFQUFBO0FKNEJ0QjtFT2lPSSxjSGpOa0IsRUFBQTtBSmhCdEI7RU8rT1EsY0h4VGtCLEVBQUE7QUp5RTFCO0VPK09RLGNINVFrQixFQUFBO0FKNkIxQjtFTytPUSxjSGhPa0IsRUFBQTtBSmYxQjtFT3NQUSx5Qkh2U3lCLEVBQUE7QUppRGpDO0VPc1BRLHlCSDNQeUIsRUFBQTtBSktqQztFT3NQUSxzQkgvTXNCLEVBQUE7QUdtTGxDO0VQcE9FLFdBRDBEO0VBRTFELGNBRjRCO0VBRzVCLGtCQUg0QztFT3VRbEMsTUFBTTtFQUNOLGFBQWE7RUFDYixnQ0FBZ0MsRUFBQTtBUDlQeEM7SU9pUVUseUJIbFR1QixFQUFBO0FKaURqQztJT2lRVSx5Qkh0UXVCLEVBQUE7QUpLakM7SU9pUVUsc0JIMU5vQixFQUFBO0FKdkM5QjtFT3lRUSx5Qkh6VDRCLEVBQUE7QUpnRHBDO0VPeVFRLHlCSDdRNEIsRUFBQTtBSklwQztFT3lRUSx5QkhqTzRCLEVBQUE7QUdrTHhDO0VQcE9FLFdBRDBEO0VBRTFELGNBRjRCO0VBRzVCLGtCQUg0QztFTzBSbEMsY0FBYztFQUNkLE1BQU07RUFDTixnQ0FBZ0MsRUFBQTtBUGpSeEM7SU9vUlUseUJIcFUwQixFQUFBO0FKZ0RwQztJT29SVSx5Qkh4UjBCLEVBQUE7QUpJcEM7SU9vUlUseUJINU8wQixFQUFBO0FKeENwQztFT3NTTSxjSC9Xb0IsRUFBQTtBSnlFMUI7RU9zU00sY0huVW9CLEVBQUE7QUo2QjFCO0VPc1NNLGNIdlJvQixFQUFBO0FKZjFCO0VPNlNNLGNIeFhnQixFQUFBO0FKMkV0QjtFTzZTTSxjSDVVZ0IsRUFBQTtBSitCdEI7RU82U00sY0hoU2dCLEVBQUE7QUdnUjFCO0VBc0JNLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixpQkFBaUIsRUFBQTtBUHZUbkI7RU9nVUksY0h6WXNCLEVBQUE7QUp5RTFCO0VPZ1VJLGNIN1ZzQixFQUFBO0FKNkIxQjtFT2dVSSxjSGpUc0IsRUFBQTtBSmYxQjtFT3lVTSxjSHBaZ0I7RUdxWmhCLHlCSHZYOEIsRUFBQTtBSjZDcEM7RU95VU0sY0h4V2dCO0VHeVdoQix5QkgzVThCLEVBQUE7QUpDcEM7RU95VU0sY0g1VGdCO0VHNlRoQix5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aUNBQWlDO0VBQ2pDLGlCQUFpQjtFQUNqQixZQUFZO0VBQ1osYUFBYSxFQUFBO0FBSmY7SUFPSSwrREFBNkU7SUFDN0Usc0JBQXNCLEVBQUE7QUFSMUI7SUFZSSwrREFBNkU7SUFDN0Usc0JBQXNCLEVBQUE7QUFiMUI7SUFpQkksZ0VBQThFO0lBQzlFLHNCQUFzQixFQUFBO0FBbEIxQjtJQXNCSSxhQUFhO0lBQ2IsV0FBVztJQUNYLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvc3R5bGVzLnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAbWl4aW4gdGV4dC10cnVuY2F0ZSB7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcbkBtaXhpbiB0ZXh0V3JhcCB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgbGluZS1icmVhazogc3RyaWN0O1xyXG4gIC13ZWJraXQtaHlwaGVuczogYXV0bztcclxuICAtbXMtaHlwaGVuczogYXV0bztcclxuICBoeXBoZW5zOiBhdXRvO1xyXG59XHJcbkBtaXhpbiBjb3ZlckJveCB7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdHRvcDogMDtcclxuXHRsZWZ0OiAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdGhlaWdodDogMTAwJTtcclxufVxyXG5AbWl4aW4gYWJzICgkdG9wOiBhdXRvLCAkcmlnaHQ6IGF1dG8sICRib3R0b206IGF1dG8sICRsZWZ0OiBhdXRvKSB7XHJcbiAgdG9wOiAkdG9wO1xyXG4gIHJpZ2h0OiAkcmlnaHQ7XHJcbiAgYm90dG9tOiAkYm90dG9tO1xyXG4gIGxlZnQ6ICRsZWZ0O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxufVxyXG5AbWl4aW4gY292ZXJJbWcge1xyXG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcblx0LXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdC1vLWJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0YmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlO1xyXG59XHJcbkBtaXhpbiB2YWxpbmdCb3gge1xyXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR0b3A6ICA1MCU7XHJcblx0bGVmdDogNTAlO1xyXG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG59XHJcbkBtaXhpbiB1blNlbGVjdCB7XHJcblx0LXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xyXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xyXG4gIHVzZXItc2VsZWN0OiBub25lO1xyXG59XHJcbkBtaXhpbiBtYXgxMTk5IHsgLy8gbWFrZXQgMTE3MVxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4MTE3MCB7IC8vIG1ha2V0cyA5OTJcclxuICBAbWVkaWEgKG1heC13aWR0aDogMTE3MHB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDk5MSB7IC8vIG1ha2V0cyA3NjJcclxuICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4NzYxIHsgLy8gbWFrZXRzIDU3NlxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjFweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg1NzUgeyAvLyBtYWtldHMgNDAwXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1vYmlsZSB7XHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDM5OXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIGljb0NlbnRlciB7XHJcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcclxufVxyXG5AbWl4aW4gcHNldWRvICgkZGlzcGxheTogYmxvY2ssICRwb3M6IGFic29sdXRlLCAkY29udGVudDogJycpe1xyXG4gIGNvbnRlbnQ6ICRjb250ZW50O1xyXG4gIGRpc3BsYXk6ICRkaXNwbGF5O1xyXG4gIHBvc2l0aW9uOiAkcG9zO1xyXG59XHJcblxyXG4vKlxyXG4qIEltcGxlbWVudGF0aW9uIG9mIHRoZW1lc1xyXG4qL1xyXG5AbWl4aW4gdGhlbWlmeSgkdGhlbWVzOiAkdGhlbWVzKSB7XHJcbiAgQGVhY2ggJHRoZW1lLCAkbWFwIGluICR0aGVtZXMge1xyXG4gICAgLnRoZW1lLSN7JHRoZW1lfSAmIHtcclxuICAgICAgJHRoZW1lLW1hcDogKCkgIWdsb2JhbDtcclxuICAgICAgQGVhY2ggJGtleSwgJHN1Ym1hcCBpbiAkbWFwIHtcclxuICAgICAgICAkdmFsdWU6IG1hcC1nZXQobWFwLWdldCgkdGhlbWVzLCAkdGhlbWUpLCAnI3ska2V5fScpO1xyXG4gICAgICAgICR0aGVtZS1tYXA6IG1hcC1tZXJnZSgkdGhlbWUtbWFwLCAoJGtleTogJHZhbHVlKSkgIWdsb2JhbDtcclxuICAgICAgfVxyXG4gICAgICBAY29udGVudDtcclxuICAgICAgJHRoZW1lLW1hcDogbnVsbCAhZ2xvYmFsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGZ1bmN0aW9uIHRoZW1lZCgka2V5KSB7XHJcbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZS1tYXAsICRrZXkpO1xyXG59XHJcbiIsIi8qXHJcbiogSW1wbGVtZW50YXRpb24gb2YgdGhlbWVzXHJcbiovXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7XG4gIC1tb3otYm94LXNpemluZzogaW5oZXJpdDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICAtd2Via2l0LXRvdWNoLWNvbGxvdXQ6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuXG5odG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG5hLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG5kZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG5zbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuYiwgdSwgaSwgY2VudGVyLFxuZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbmZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxudGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG5hcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbmZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbm1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxudGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgYm9yZGVyOiAwO1xuICBmb250LXNpemU6IDEwMCU7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG5hcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLFxuZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxub2wsIHVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG5ibG9ja3F1b3RlLCBxIHtcbiAgcXVvdGVzOiBub25lOyB9XG5cbmJsb2NrcXVvdGU6YmVmb3JlLCBibG9ja3F1b3RlOmFmdGVyLFxucTpiZWZvcmUsIHE6YWZ0ZXIge1xuICBjb250ZW50OiBub25lOyB9XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7IH1cblxuaW5wdXQge1xuICBvdXRsaW5lOiBub25lOyB9XG4gIGlucHV0Oi13ZWJraXQtYXV0b2ZpbGwge1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMTAwMHB4IHdoaXRlIGluc2V0OyB9XG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lOyB9XG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7IH1cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfVxuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIGE6YWN0aXZlLCBhOmhvdmVyLCBhOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwOyB9XG5cbmkge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuYiwgc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG5pbWcge1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGJvcmRlcjogMDsgfVxuXG4uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbmJ1dHRvbiB7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogMCAxcmVtO1xuICBoZWlnaHQ6IDQuMnJlbTsgfVxuICAudGhlbWUtZGFyayBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBhNGFlO1xuICAgIGNvbG9yOiAjMTExOTIxOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbikge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM3OTg0OGY7XG4gICAgY29sb3I6ICMxYTFhMWE7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbikge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM5MGE0YWU7XG4gICAgY29sb3I6ICNmZWZlZmU7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzliYjBiYTsgfVxuICAudGhlbWUtZ3JheSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODU5MDliOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWJhZWI3OyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7XG4gICAgY29sb3I6ICMxYTFhMWE7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTtcbiAgICBjb2xvcjogI2ZlZmVmZTsgfVxuICAudGhlbWUtZGFyayBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM2MGI5ZmY7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRhZmZmOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNzlmZmE7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDtcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkO1xuICAgIGNvbG9yOiAjMWExYTFhOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyO1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1Y2UyYTE7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQ5ZDk5MzsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQ2Y2E3NTsgfVxuICAudGhlbWUtZGFyayBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzRkZDBlMTtcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNlYzVkNztcbiAgICBjb2xvcjogIzFhMWExYTsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyNmI2Yzc7XG4gICAgY29sb3I6ICNmZWZlZmU7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1MmQ5ZWE7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0M2NlZTA7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmJiZGNmOyB9XG4gIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuICAgIC50aGVtZS1kYXJrIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmIzNjQ0O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtZ3JheSBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJmMzQzODtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjZWJlYmViO1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIC5pY29uIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICAgIHdpZHRoOiAxLjdyZW07XG4gICAgICBoZWlnaHQ6IDEuN3JlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS1ncmF5IGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24gLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwOyB9XG4gICAgICAudGhlbWUtd2hpdGUgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MzQ1NGI7IH1cblxuLmlucHV0LWJsb2NrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIG1hcmdpbi1ib3R0b206IDAuNHJlbTsgfVxuICAuaW5wdXQtYmxvY2sgLndyYXAtbGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgbWluLWhlaWdodDogMi40cmVtOyB9XG4gIC5pbnB1dC1ibG9jayBsYWJlbCB7XG4gICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgbGluZS1oZWlnaHQ6IDIuNHJlbTsgfVxuICAgIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayBsYWJlbCB7XG4gICAgICBjb2xvcjogIzU1NjU3NjsgfVxuICAgIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jayBsYWJlbCB7XG4gICAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sgbGFiZWwge1xuICAgICAgY29sb3I6ICNhMGE1YWI7IH1cbiAgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3RleHQnXSwgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDQuMnJlbTsgfVxuICAgIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSd0ZXh0J10sIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSdwYXNzd29yZCddLCAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2sgc2VsZWN0IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSd0ZXh0J10sIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSdwYXNzd29yZCddLCAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sgc2VsZWN0IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyOTJkMzE7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ndGV4dCddLCAudGhlbWUtd2hpdGUgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sgc2VsZWN0IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XG4gICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAuaW5wdXQtYmxvY2sudGV4dGFyZWEge1xuICAgIGhlaWdodDogYXV0bzsgfVxuICAgIC5pbnB1dC1ibG9jay50ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgICBmb250LWZhbWlseTogT3BlblNhbnMsIHNhbnMtc2VyaWY7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBtaW4taGVpZ2h0OiA3LjVyZW07XG4gICAgICBtYXgtaGVpZ2h0OiA3LjVyZW07XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgcmVzaXplOiBub25lOyB9XG4gICAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrLnRleHRhcmVhIHRleHRhcmVhIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAuaW5wdXQtYmxvY2sgLmVycm9yLWJsb2NrIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNHJlbTtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAgIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZTUyNTI7IH1cbiAgICAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sgLmVycm9yLWJsb2NrIHtcbiAgICAgIGNvbG9yOiAjZmU1MjUyOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZjUyNTI7IH1cblxuaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXdlaWdodDogNDAwO1xuICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcbiAgLXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7IH1cbiAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgICBjb2xvcjogIzU1NjU3NjsgfVxuICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvICsgbGFiZWwge1xuICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvICsgbGFiZWwge1xuICAgIGNvbG9yOiAjYTBhNWFiOyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvcGFjaXR5OiAwOyB9XG4gIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMC43cmVtO1xuICAgIGxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHdpZHRoOiAxLjRyZW07XG4gICAgaGVpZ2h0OiAxLjRyZW07IH1cbiAgICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzQyYTVmNTsgfVxuICAgIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjMmM5NWYxOyB9XG4gIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWw6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDFyZW07XG4gICAgbGVmdDogMC4zcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHdpZHRoOiAwLjhyZW07XG4gICAgaGVpZ2h0OiAwLjhyZW07IH1cbiAgICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cbiAgICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcbiAgb3BhY2l0eTogMTsgfVxuXG5pbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHBhZGRpbmctbGVmdDogMy42cmVtO1xuICAtd2Via2l0LXRvdWNoLWNvbGxvdXQ6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gIC50aGVtZS1ncmF5IGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3ggKyBsYWJlbCB7XG4gICAgY29sb3I6ICM1NjVjNjI7IH1cbiAgLnRoZW1lLXdoaXRlIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3ggKyBsYWJlbCB7XG4gICAgY29sb3I6ICNhMGE1YWI7IH1cblxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpub3QoY2hlY2tlZCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAxLjZyZW07XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG4gIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpICsgbGFiZWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDEuNnJlbTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgd2lkdGg6IDEuNHJlbTtcbiAgICBoZWlnaHQ6IDEuNHJlbTsgfVxuICAgIC50aGVtZS1kYXJrIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpICsgbGFiZWw6YmVmb3JlIHtcbiAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkICM0ZGIxZmY7IH1cbiAgICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjNDJhNWY1OyB9XG4gICAgLnRoZW1lLXdoaXRlIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpICsgbGFiZWw6YmVmb3JlIHtcbiAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkICMyYzk1ZjE7IH1cblxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKTsgfVxuICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94OmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG4gIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94OmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IH1cblxuLnRoZW1lLWdyYXkgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IH1cblxuLnRoZW1lLXdoaXRlIC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1kYXJrIC5zd2l0Y2ggLmNpcmNsZS5vbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgLnN3aXRjaCAuY2lyY2xlLm9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgLnN3aXRjaCAuY2lyY2xlLm9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayAuc3dpdGNoIC5jaXJjbGUub2ZmIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSAuc3dpdGNoIC5jaXJjbGUub2ZmIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgLnN3aXRjaCAuY2lyY2xlLm9mZiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhMGE1YWI7IH1cblxuLnRhYmxlLXRvb2x0aXAge1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgcGFkZGluZzogMXJlbSAycmVtO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IH1cbiAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICM0MjUwNWY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjM2U0NjRjO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpO1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wIHtcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAtMnJlbTtcbiAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMXJlbSk7XG4gICAgICBib3JkZXItd2lkdGg6IDFyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1sZWZ0IHtcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLWxlZnQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IC0xcmVtO1xuICAgICAgbGVmdDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtIDFyZW0gMCAwO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLWxlZnQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IC0xcmVtO1xuICAgICAgcmlnaHQ6IDAuN3JlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjNDI1MDVmICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20ge1xuICAgIG1hcmdpbi10b3A6IDFyZW07IH1cbiAgICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogLTJyZW07XG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDFyZW0pO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGMgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLWxlZnQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IC0xcmVtO1xuICAgICAgbGVmdDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzNlNDY0YyAjM2U0NjRjOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgI2ZmZmZmZjsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMXJlbTtcbiAgICAgIHJpZ2h0OiAwLjdyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICMzZTQ2NGMgIzNlNDY0YyB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmIHRyYW5zcGFyZW50OyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IC0xcmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtIDFyZW0gMCAwO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cbiAgICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLTFyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDFyZW0gMCAwIDFyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICMzZTQ2NGMgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuXG4uYmFsYW5jZS10b29sdGlwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIHBhZGRpbmc6IDEuM3JlbTsgfVxuICAudGhlbWUtZGFyayAuYmFsYW5jZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjNDI1MDVmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAuYmFsYW5jZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjM2U0NjRjO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtd2hpdGUgLmJhbGFuY2UtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDEyMCwgMTIwLCAxMjAsIDAuNSk7XG4gICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLXRvcCB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW07IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAuYmFsYW5jZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gIC5iYWxhbmNlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cbiAgLmJhbGFuY2UtdG9vbHRpcCAuYXZhaWxhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjdyZW07IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC5hdmFpbGFibGUgYiB7XG4gICAgICBmb250LXdlaWdodDogNjAwOyB9XG4gIC5iYWxhbmNlLXRvb2x0aXAgLmxvY2tlZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC43cmVtOyB9XG4gICAgLmJhbGFuY2UtdG9vbHRpcCAubG9ja2VkIGIge1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDsgfVxuICAuYmFsYW5jZS10b29sdGlwIC5saW5rIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgICAudGhlbWUtZGFyayAuYmFsYW5jZS10b29sdGlwIC5saW5rIHtcbiAgICAgIGNvbG9yOiAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgLmJhbGFuY2UtdG9vbHRpcCAubGluayB7XG4gICAgICBjb2xvcjogIzQyYTVmNTsgfVxuICAgIC50aGVtZS13aGl0ZSAuYmFsYW5jZS10b29sdGlwIC5saW5rIHtcbiAgICAgIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJiMzY0NDtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLWdyYXkgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgbGkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbSAxZW07IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSBhIHtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50aGVtZS1kYXJrIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGE6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCB7XG4gIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1kYXJrLnBuZyk7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nKTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLXdoaXRlLnBuZyk7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlNTI1MjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZTUyNTI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5hY3Rpb24tYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmFjdGlvbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmFjdGlvbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICBjb2xvcjogI2ZlZmVmZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY2xvc2UtYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY2xvc2UtYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxNTk2MDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNsb3NlLWJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIHtcbiAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIHtcbiAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkICMyZjM0Mzg7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSB7XG4gIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCAjZWJlYmViOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmxhYmVsIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwubGFiZWwge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwubGFiZWwge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHJhbnNhY3Rpb24tZGV0YWlscyAudGFibGUgLnJvdyAuY2VsbC52YWx1ZSB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLnZhbHVlIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLnZhbHVlIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwua2V5LXZhbHVlIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwua2V5LXZhbHVlIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmtleS12YWx1ZSB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbmFwcC1tYWluLCBhcHAtY3JlYXRlLXdhbGxldCwgYXBwLW9wZW4td2FsbGV0LCBhcHAtcmVzdG9yZS13YWxsZXQsIGFwcC1zZWVkLXBocmFzZSwgYXBwLXdhbGxldC1kZXRhaWxzLCBhcHAtYXNzaWduLWFsaWFzLCBhcHAtZWRpdC1hbGlhcywgYXBwLXRyYW5zZmVyLWFsaWFzLCBhcHAtc2V0dGluZ3MsIGFwcC1sb2dpbiB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICBwYWRkaW5nOiAzcmVtO1xuICBtaW4td2lkdGg6IDg1cmVtOyB9XG4gIGFwcC1tYWluIC5jb250ZW50LCBhcHAtY3JlYXRlLXdhbGxldCAuY29udGVudCwgYXBwLW9wZW4td2FsbGV0IC5jb250ZW50LCBhcHAtcmVzdG9yZS13YWxsZXQgLmNvbnRlbnQsIGFwcC1zZWVkLXBocmFzZSAuY29udGVudCwgYXBwLXdhbGxldC1kZXRhaWxzIC5jb250ZW50LCBhcHAtYXNzaWduLWFsaWFzIC5jb250ZW50LCBhcHAtZWRpdC1hbGlhcyAuY29udGVudCwgYXBwLXRyYW5zZmVyLWFsaWFzIC5jb250ZW50LCBhcHAtc2V0dGluZ3MgLmNvbnRlbnQsIGFwcC1sb2dpbiAuY29udGVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDNyZW07XG4gICAgbWluLWhlaWdodDogMTAwJTsgfVxuICAgIC50aGVtZS1kYXJrIGFwcC1tYWluIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtY3JlYXRlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLW9wZW4td2FsbGV0IC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtcmVzdG9yZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1zZWVkLXBocmFzZSAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLXdhbGxldC1kZXRhaWxzIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtYXNzaWduLWFsaWFzIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtZWRpdC1hbGlhcyAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLXRyYW5zZmVyLWFsaWFzIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtc2V0dGluZ3MgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1sb2dpbiAuY29udGVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSk7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IGFwcC1tYWluIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtY3JlYXRlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLW9wZW4td2FsbGV0IC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtcmVzdG9yZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1zZWVkLXBocmFzZSAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLXdhbGxldC1kZXRhaWxzIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtYXNzaWduLWFsaWFzIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtZWRpdC1hbGlhcyAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLXRyYW5zZmVyLWFsaWFzIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1sb2dpbiAuY29udGVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS13aGl0ZSBhcHAtbWFpbiAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLW9wZW4td2FsbGV0IC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLXJlc3RvcmUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLXdhbGxldC1kZXRhaWxzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLWFzc2lnbi1hbGlhcyAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLXRyYW5zZmVyLWFsaWFzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgYXBwLW1haW4gLmNvbnRlbnQgLmhlYWQsIGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50IC5oZWFkLCBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQgLmhlYWQsIGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCAuaGVhZCwgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50IC5oZWFkLCBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQgLmhlYWQsIGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQgLmhlYWQsIGFwcC1lZGl0LWFsaWFzIC5jb250ZW50IC5oZWFkLCBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQgLmhlYWQsIGFwcC1zZXR0aW5ncyAuY29udGVudCAuaGVhZCwgYXBwLWxvZ2luIC5jb250ZW50IC5oZWFkIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAge1xuICBjb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2VlZC1waHJhc2UgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2VlZC1waHJhc2UgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlZWQtcGhyYXNlIC5zZWVkLXBocmFzZS1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldC1kZXRhaWxzIC5zZWVkLXBocmFzZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldC1kZXRhaWxzIC5zZWVkLXBocmFzZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTJkMzE7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQtZGV0YWlscyAuc2VlZC1waHJhc2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCAudGhlbWUtc2VsZWN0aW9uIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG5hcHAtbG9naW4ge1xuICBtaW4td2lkdGg6IGluaGVyaXQ7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzLCAzMSwgMzksIDAuNSk7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzLCAyNSwgMjcsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciBoMyB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciBoMyB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgaDMge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAudGV4dCB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAudGV4dCB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmO1xuICBjb2xvcjogIzExMTkyMTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7XG4gIGNvbG9yOiAjMWExYTFhOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7XG4gIGNvbG9yOiAjZmVmZWZlOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2Y0YTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZGNkYzsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93LmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93LmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjYTBhNWFiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSk7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFlODhlNTtcbiAgY29sb3I6ICNmZmZmZmY7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAudGV4dCB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAudGV4dCB7XG4gIGNvbG9yOiAjOTFiYWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7XG4gIGNvbG9yOiAjMTExOTIxOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7XG4gIGNvbG9yOiAjMWExYTFhOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjOTFiYWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudDpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU4LCA3MiwgOTAsIDAuNSk7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50OmhvdmVyOm5vdCguYWN0aXZlKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzAsIDc2LCA4MSwgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50OmhvdmVyOm5vdCguYWN0aXZlKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyB7XG4gIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCAjMWYyODMzOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICMyZTMzMzc7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICNlYmViZWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmU1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9mZmxpbmU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5vbmxpbmU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC50ZXN0bmV0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAudGVzdG5ldCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC50ZXN0bmV0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAuc3luY2luZyAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2Y0YTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzYzYTNlOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnN5bmNpbmcgLnByb2dyZXNzLWJhciAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAuc3luY2luZyAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAuc3luY2luZyAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5sb2FkaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5sb2FkaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAubG9hZGluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLmhlYWRlciBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmhlYWRlciBidXR0b24ge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAuaGVhZGVyIC5hbGlhcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuaGVhZGVyIC5hbGlhcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmhlYWRlciAuYWxpYXMgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLmFkZHJlc3Mge1xuICBjb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC5hZGRyZXNzIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmFkZHJlc3Mge1xuICBjb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5hZGRyZXNzIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC5hZGRyZXNzIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAuYWRkcmVzcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMywgMjUsIDI3LCAwLjUpOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjQsIDIyNCwgMjI0LCAwLjUpOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmO1xuICBjb2xvcjogIzExMTkyMTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSk7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2VuZCAuZm9ybS1zZW5kIC5zZW5kLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZW5kIC5mb3JtLXNlbmQgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJmMzQzODsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgI2ViZWJlYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXJlY2VpdmUgLmJ0bi1jb3B5LWFkZHJlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4MjAyYTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjUyOTJkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxODIwMmE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI1MjkyZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bis0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNmNGE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cyAuY29uZmlybWF0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM2M2EzZTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cyAuY29uZmlybWF0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZGNkYzsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24gLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0N2NmOGQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cy5zZW5kIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG5hcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnJlY2VpdmVkIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYzg1MzsgfVxuXG4udGhlbWUtZGFyayBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5uZXcsIC50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLmFsZXJ0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlNTI1MjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5uZXcsIC50aGVtZS1ncmF5IGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLmFsZXJ0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24ubmV3LCAudGhlbWUtd2hpdGUgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uYWxlcnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnB1cmNoYXNlLCAudGhlbWUtZGFyayBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5zZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5wdXJjaGFzZSwgLnRoZW1lLWdyYXkgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uc2VsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnB1cmNoYXNlLCAudGhlbWUtd2hpdGUgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uc2VsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zZWxlY3Qge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXNlbGVjdCB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXNlbGVjdCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXN0YXRlcyB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc3RhdGVzIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc3RhdGVzIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5hZGRpdGlvbmFsLWRldGFpbHMge1xuICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmIzNjQ0OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJmMzQzODsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5hZGRpdGlvbmFsLWRldGFpbHMge1xuICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjZWJlYmViOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2Y0YTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcHVyY2hhc2UgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZGNkYzsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0N2NmOGQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuYXBwLW1lc3NhZ2VzIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIHNwYW4ge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG4udGhlbWUtZGFyayBhcHAtbWVzc2FnZXMgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmU1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tZXNzYWdlcyB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZTUyNTI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tZXNzYWdlcyB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5oZWFkIC5pbnRlcmxvY3V0b3Ige1xuICBjb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtdHlwaW5nLW1lc3NhZ2UgLmhlYWQgLmludGVybG9jdXRvciB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLmhlYWQgLmludGVybG9jdXRvciB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuZGF0ZSB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuZGF0ZSB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmRhdGUge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJhMzU0NDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzYzYzsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cblxuYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teTpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IC0xLjFyZW07XG4gIGJvcmRlcjogMS4ycmVtIHNvbGlkIHRyYW5zcGFyZW50OyB9XG4gIC50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXk6YmVmb3JlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjMmEzNTQ0OyB9XG4gIC50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXk6YmVmb3JlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjMzAzNjNjOyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15OmJlZm9yZSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4MjAyYTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI1MjkyZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZGVkZWQ7IH1cblxuYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAtMS4xcmVtO1xuICB0b3A6IDA7XG4gIGJvcmRlcjogMS4ycmVtIHNvbGlkIHRyYW5zcGFyZW50OyB9XG4gIC50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuYnVkZHk6YWZ0ZXIge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICMxODIwMmE7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeTphZnRlciB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogIzI1MjkyZDsgfVxuICAudGhlbWUtd2hpdGUgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeTphZnRlciB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2VkZWRlZDsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtaGVhZGVyIC5nZW5lcmFsIC5sYWJlbCB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLmdlbmVyYWwgLmxhYmVsIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLmdlbmVyYWwgLmxhYmVsIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAub3B0aW9ucyB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLmdlbmVyYWwgLm9wdGlvbnMge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAub3B0aW9ucyB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbmFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLnNlbGVjdGVkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgZmxleC1ncm93OiAxO1xuICBmb250LXNpemU6IDEuNnJlbTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAudGl0bGUge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAudGl0bGUge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLnRpdGxlIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTJkMzE7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC5vcHRpb25zIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNDM0NTRiO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC5vcHRpb25zIGJ1dHRvbi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC5vcHRpb25zIGJ1dHRvbi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTE1OTYwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAub3B0aW9ucyBidXR0b24uYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuXG4uaGVhZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgcGFkZGluZzogMCAzcmVtO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzcmVtOyB9XG4gIC50aGVtZS1kYXJrIC5oZWFkIHtcbiAgICBjb2xvcjogIzRkYjFmZjsgfVxuICAudGhlbWUtZ3JheSAuaGVhZCB7XG4gICAgY29sb3I6ICM0MmE1ZjU7IH1cbiAgLnRoZW1lLXdoaXRlIC5oZWFkIHtcbiAgICBjb2xvcjogIzJjOTVmMTsgfVxuICAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCksIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luLXJpZ2h0OiAyMHB4OyB9XG4gICAgLmhlYWQgLmJyZWFkY3J1bWJzID4gc3Bhbjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyLCAuaGVhZCAuYnJlYWRjcnVtYnMgYTpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMC41cmVtO1xuICAgICAgcmlnaHQ6IC0xLjVyZW07XG4gICAgICB3aWR0aDogMC45cmVtO1xuICAgICAgaGVpZ2h0OiAwLjlyZW07XG4gICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xuICAgICAgbWFzay1zaXplOiBjb3ZlcjsgfVxuICAgICAgLnRoZW1lLWRhcmsgLmhlYWQgLmJyZWFkY3J1bWJzID4gc3Bhbjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyLCAudGhlbWUtZGFyayAuaGVhZCAuYnJlYWRjcnVtYnMgYTpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmhlYWQgLmJyZWFkY3J1bWJzID4gc3Bhbjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyLCAudGhlbWUtZ3JheSAuaGVhZCAuYnJlYWRjcnVtYnMgYTpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5oZWFkIC5icmVhZGNydW1icyA+IHNwYW46bm90KDpsYXN0LWNoaWxkKTphZnRlciwgLnRoZW1lLXdoaXRlIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG4gIC5oZWFkIC5iYWNrLWJ0biB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjNGRiMWZmO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjNyZW07XG4gICAgcGFkZGluZzogMDtcbiAgICBoZWlnaHQ6IGF1dG87IH1cbiAgICAuaGVhZCAuYmFjay1idG4gLmljb24ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjdyZW07XG4gICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYmFjay5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgICB3aWR0aDogMC45cmVtO1xuICAgICAgaGVpZ2h0OiAwLjlyZW07IH1cbiAgICAgIC50aGVtZS1kYXJrIC5oZWFkIC5iYWNrLWJ0biAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgICAgIC50aGVtZS1ncmF5IC5oZWFkIC5iYWNrLWJ0biAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaGVhZCAuYmFjay1idG4gLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi5zY3JvbGxlZC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07IH1cblxuLnNjcm9sbGVkLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cblxuLnNjcm9sbGVkLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAwLjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07IH1cblxuLnNjcm9sbGVkLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG50YWJsZSB7XG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xuICB3aWR0aDogMTAwJTsgfVxuICB0YWJsZSB0aGVhZCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgfVxuICAgIC50aGVtZS1kYXJrIHRhYmxlIHRoZWFkIHtcbiAgICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gICAgLnRoZW1lLWdyYXkgdGFibGUgdGhlYWQge1xuICAgICAgY29sb3I6ICM1NjVjNjI7IH1cbiAgICAudGhlbWUtd2hpdGUgdGFibGUgdGhlYWQge1xuICAgICAgY29sb3I6ICNhMGE1YWI7IH1cbiAgICB0YWJsZSB0aGVhZCB0ciB7XG4gICAgICBoZWlnaHQ6IDRyZW07IH1cbiAgICAgIHRhYmxlIHRoZWFkIHRyIHRoIHtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsgfVxuICAgICAgICB0YWJsZSB0aGVhZCB0ciB0aDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtOyB9XG4gICAgICAgIHRhYmxlIHRoZWFkIHRyIHRoOmxhc3QtY2hpbGQge1xuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07IH1cbiAgdGFibGUgdGJvZHkge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgICAudGhlbWUtZGFyayB0YWJsZSB0Ym9keSB7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IHRhYmxlIHRib2R5IHtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIHRhYmxlIHRib2R5IHtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgdGFibGUgdGJvZHkgdHIge1xuICAgICAgaGVpZ2h0OiAzLjVyZW07IH1cbiAgICAgIC50aGVtZS1kYXJrIHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE4MjAyYTsgfVxuICAgICAgLnRoZW1lLWdyYXkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjUyOTJkOyB9XG4gICAgICAudGhlbWUtd2hpdGUgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG4gICAgICB0YWJsZSB0Ym9keSB0ciB0ZCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjdyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgbWF4LXdpZHRoOiAyMHJlbTsgfVxuICAgICAgICB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtOyB9XG4gICAgICAgIHRhYmxlIHRib2R5IHRyIHRkOmxhc3QtY2hpbGQge1xuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtTGlnaHQudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDMwMDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1SZWd1bGFyLnR0Zik7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtU2VtaUJvbGQudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1Cb2xkLnR0Zik7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtRXh0cmFCb2xkLnR0Zik7XG4gIGZvbnQtd2VpZ2h0OiA4MDA7IH1cblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMHB4OyB9XG5cbmJvZHkge1xuICBmb250LWZhbWlseTogT3BlblNhbnMsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogMTAwdmg7IH1cbiAgYm9keS50aGVtZS1kYXJrIHtcbiAgICBiYWNrZ3JvdW5kOiAjMTMxOTIxIHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1kYXJrLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7IH1cbiAgYm9keS50aGVtZS1ncmF5IHtcbiAgICBiYWNrZ3JvdW5kOiAjMTAxNDE3IHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1ncmF5LnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7IH1cbiAgYm9keS50aGVtZS13aGl0ZSB7XG4gICAgYmFja2dyb3VuZDogI2VlZWVlZSB1cmwoXCJhc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtd2hpdGUucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsgfVxuICBib2R5IGFwcC1yb290IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTsgfVxuIiwiLy8qICoqKioqKiogcmVzZXQgJiBub3JtYWxpemUgKioqKioqKiAgKi8vXHJcblxyXG4vLyBib3gtc2l6aW5nIHRoZSBzYW1lIGZvciBhbGwgZWxlbWVudHNcclxuaHRtbCB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcbiosICo6YmVmb3JlLCAqOmFmdGVyIHtcclxuICBib3gtc2l6aW5nOiBpbmhlcml0O1xyXG4gIC13ZWJraXQtYm94LXNpemluZzogaW5oZXJpdDtcclxuICAtbW96LWJveC1zaXppbmc6IGluaGVyaXQ7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgQGluY2x1ZGUgdW5TZWxlY3Q7XHJcbn1cclxuXHJcbmh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcclxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxyXG5hLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXHJcbmRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcclxuc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcclxuYiwgdSwgaSwgY2VudGVyLFxyXG5kbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxyXG5maWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcclxudGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXHJcbmFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxyXG5maWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXHJcbm1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxyXG50aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgZm9udC1zaXplOiAxMDAlO1xyXG4gICAgZm9udDogaW5oZXJpdDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcclxufVxyXG5hcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLFxyXG5mb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtZW51LCBuYXYsIHNlY3Rpb24ge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbmJvZHkge1xyXG4gICBsaW5lLWhlaWdodDogMTtcclxuICAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG59XHJcbm9sLCB1bCB7XHJcbiAgICBsaXN0LXN0eWxlOiBub25lO1xyXG59XHJcbmJsb2NrcXVvdGUsIHEge1xyXG4gICAgcXVvdGVzOiBub25lO1xyXG59XHJcbmJsb2NrcXVvdGU6YmVmb3JlLCBibG9ja3F1b3RlOmFmdGVyLFxyXG5xOmJlZm9yZSwgcTphZnRlciB7XHJcbiAgICBjb250ZW50OiBub25lO1xyXG59XHJcblxyXG4vL3RhYmxlXHJcbnRhYmxlIHtcclxuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XHJcbiAgICBib3JkZXItc3BhY2luZzogMDtcclxufVxyXG50ZCxcclxudGgge1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbi8vZm9ybXMgZWxlbWVudFxyXG5pbnB1dCB7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgJjotd2Via2l0LWF1dG9maWxsIHtcclxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAxMDAwcHggd2hpdGUgaW5zZXQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmJ1dHRvbixcclxuaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxyXG5pbnB1dFt0eXBlPVwicmVzZXRcIl0sXHJcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBvdXRsaW5lOiBub25lO1xyXG59XHJcbmJ1dHRvbltkaXNhYmxlZF0sXHJcbmh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcclxuICBjdXJzb3I6IGRlZmF1bHQ7XHJcbn1cclxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxyXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XHJcbiAgYm9yZGVyOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuaW5wdXQge1xyXG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XHJcbn1cclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbn1cclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG59XHJcblxyXG5cclxuLy9saW5rXHJcbmEge1xyXG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHQmOmFjdGl2ZSxcclxuXHQmOmhvdmVyLFxyXG5cdCY6Zm9jdXMge1xyXG5cdFx0b3V0bGluZTogMDtcclxuXHR9XHJcbn1cclxuXHJcbmkgeyBmb250LXN0eWxlOiBpdGFsaWM7IH1cclxuYiwgc3Ryb25nIHsgZm9udC13ZWlnaHQ6IDcwMDsgICB9XHJcblxyXG4vLyBpbWFnZXNcclxuaW1nIHtcclxuXHR3aWR0aDogYXV0bztcclxuXHRtYXgtd2lkdGg6IDEwMCU7XHJcblx0aGVpZ2h0OiBhdXRvO1xyXG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcblx0Ym9yZGVyOiAwO1xyXG59XHJcblxyXG4uaGlkZGVuIHtcclxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuIiwiYnV0dG9uIHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICY6ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGRpc2FibGVkQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZGlzYWJsZWRCdXR0b25Ib3ZlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZUJ1dHRvbkhvdmVyQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGdyZWVuQnV0dG9uSG92ZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYudHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0dXJxdW9pc2VCdXR0b25CYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0dXJxdW9pc2VCdXR0b25Ib3ZlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi50cmFuc3BhcmVudC1idXR0b24ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuaWNvbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuN3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4uaW5wdXQtYmxvY2sge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtYXJnaW4tYm90dG9tOiAwLjRyZW07XHJcblxyXG4gIC53cmFwLWxhYmVsIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgbWluLWhlaWdodDogMi40cmVtO1xyXG4gIH1cclxuXHJcbiAgbGFiZWwge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlucHV0W3R5cGU9J3RleHQnXSwgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgc2VsZWN0IHtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLnRleHRhcmVhIHtcclxuICAgIGhlaWdodDogYXV0bztcclxuXHJcbiAgICB0ZXh0YXJlYSB7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgcGFkZGluZzogMXJlbTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1pbi13aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICBtaW4taGVpZ2h0OiA3LjVyZW07XHJcbiAgICAgIG1heC1oZWlnaHQ6IDcuNXJlbTtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgcmVzaXplOiBub25lO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZXJyb3ItYmxvY2sge1xyXG4gICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNHJlbTtcclxuICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW8ge1xyXG5cclxuICAmICsgbGFiZWwge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAyLjRyZW07XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIHVuU2VsZWN0O1xyXG4gIH1cclxuXHJcbiAgJjpub3QoY2hlY2tlZCkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgb3BhY2l0eTogMDtcclxuXHJcbiAgICAmICsgbGFiZWwge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgJiArIGxhYmVsOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMC43cmVtO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICB3aWR0aDogMS40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuNHJlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkIHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYgKyBsYWJlbDphZnRlciB7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMXJlbTtcclxuICAgICAgbGVmdDogMC4zcmVtO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgIHdpZHRoOiAwLjhyZW07XHJcbiAgICAgIGhlaWdodDogMC44cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOmNoZWNrZWQge1xyXG5cclxuICAgICYgKyBsYWJlbDphZnRlciB7XHJcbiAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5pbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94IHtcclxuXHJcbiAgJiArIGxhYmVsIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIHBhZGRpbmctbGVmdDogMy42cmVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSB1blNlbGVjdDtcclxuICB9XHJcblxyXG4gICY6bm90KGNoZWNrZWQpIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgbGVmdDogMS42cmVtO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG5cclxuICAgICYgKyBsYWJlbCB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICAmICsgbGFiZWw6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIGxlZnQ6IDEuNnJlbTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgd2lkdGg6IDEuNHJlbTtcclxuICAgICAgaGVpZ2h0OiAxLjRyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6Y2hlY2tlZCB7XHJcblxyXG4gICAgJiArIGxhYmVsOmJlZm9yZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zyk7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5zd2l0Y2gge1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzd2l0Y2hCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmNpcmNsZSB7XHJcblxyXG4gICAgJi5vbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLm9mZiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4udGFibGUtdG9vbHRpcCB7XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgcGFkZGluZzogMXJlbSAycmVtO1xyXG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcik7XHJcbiAgICBib3gtc2hhZG93OiB0aGVtZWQodG9vbHRpcFNoYWRvdyk7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXRvcCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMnJlbTtcclxuICAgICAgbGVmdDogY2FsYyg1MCUgLSAxcmVtKTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC10b3AtbGVmdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgbGVmdDogMC43cmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDFyZW0gMXJlbSAwIDA7XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXRvcC1yaWdodCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgcmlnaHQ6IDAuN3JlbTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1ib3R0b20ge1xyXG4gICAgbWFyZ2luLXRvcDogMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAtMnJlbTtcclxuICAgICAgbGVmdDogY2FsYyg1MCUgLSAxcmVtKTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1ib3R0b20tbGVmdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IC0xcmVtO1xyXG4gICAgICBsZWZ0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0IHtcclxuICAgIG1hcmdpbi10b3A6IDFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogLTFyZW07XHJcbiAgICAgIHJpZ2h0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtbGVmdCB7XHJcbiAgICBtYXJnaW4tbGVmdDogLTFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgcmlnaHQ6IC0xcmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDFyZW0gMXJlbSAwIDA7XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXJpZ2h0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IC0xcmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDFyZW0gMCAwIDFyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmJhbGFuY2UtdG9vbHRpcCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gIHBhZGRpbmc6IDEuM3JlbTtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcik7XHJcbiAgICBib3gtc2hhZG93OiB0aGVtZWQodG9vbHRpcFNoYWRvdyk7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXRvcCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1ib3R0b20ge1xyXG4gICAgbWFyZ2luLXRvcDogMXJlbTtcclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1sZWZ0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMXJlbTtcclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1yaWdodCB7XHJcbiAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICB9XHJcblxyXG4gIC5hdmFpbGFibGUge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMS43cmVtO1xyXG5cclxuICAgIGIge1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmxvY2tlZCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjdyZW07XHJcblxyXG4gICAgYiB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubGluayB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubmd4LWNvbnRleHRtZW51IHtcclxuXHJcbiAgLmRyb3Bkb3duLW1lbnUge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgcGFkZGluZzogMDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGJveC1zaGFkb3c6IHRoZW1lZCh0b29sdGlwU2hhZG93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxpIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgYSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNIb3ZlckNvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbW9kYWwtY29udGFpbmVyIHtcclxuXHJcbiAgLm1vZGFsIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZDogdGhlbWVkKG1vZGFsQmFja2dyb3VuZCk7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmNvbnRlbnQge1xyXG5cclxuICAgICAgLmljb24uZXJyb3Ige1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24uc3VjY2VzcyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGdyZWVuVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uLmluZm8ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWN0aW9uLWJ1dHRvbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuY2xvc2UtYnV0dG9uIHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2xvc2VCdXR0b25Db2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtdHJhbnNhY3Rpb24tZGV0YWlscyB7XHJcblxyXG4gIC50YWJsZSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnJvdyB7XHJcblxyXG4gICAgICAuY2VsbCB7XHJcblxyXG4gICAgICAgICYubGFiZWwge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYudmFsdWUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5rZXktdmFsdWUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIkdGhlbWVzOiAoXHJcbiAgZGFyazogKFxyXG4gICAgYm9keUJhY2tncm91bmRDb2xvcjogIzEzMTkyMSxcclxuICAgIHNpZGViYXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMC41KSxcclxuICAgIHNpZGViYXJCb3JkZXJDb2xvcjogIzFmMjgzMyxcclxuICAgIG9ubGluZUNvbG9yOiAjNWNkYTlkLFxyXG4gICAgb2ZmbGluZUNvbG9yOiAjZmU1MjUyLFxyXG4gICAgY29udGVudEJhY2tncm91bmRDb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpLFxyXG4gICAgbWFpblRleHRDb2xvcjogI2UwZTBlMCxcclxuICAgIGFsdGVybmF0aXZlVGV4dENvbG9yOiAjMTExOTIxLFxyXG4gICAgb3B0aW9uYWxUZXh0Q29sb3I6ICM1NTY1NzYsXHJcbiAgICBibHVlVGV4dENvbG9yOiAjNGRiMWZmLFxyXG4gICAgZ3JlZW5UZXh0Q29sb3I6ICM1Y2RhOWQsXHJcbiAgICByZWRUZXh0Q29sb3I6ICNmZTUyNTIsXHJcbiAgICBibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNGRiMWZmLFxyXG4gICAgYmx1ZUJ1dHRvbkhvdmVyQ29sb3I6ICM2MGI5ZmYsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzkwYTRhZSxcclxuICAgIGRpc2FibGVkQnV0dG9uSG92ZXJDb2xvcjogIzliYjBiYSxcclxuICAgIGdyZWVuQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNWNkYTlkLFxyXG4gICAgZ3JlZW5CdXR0b25Ib3ZlckNvbG9yOiAjNWNlMmExLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNGRkMGUxLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uSG92ZXJDb2xvcjogIzUyZDllYSxcclxuICAgIHRyYW5zcGFyZW50QnV0dG9uQm9yZGVyQ29sb3I6ICMyYjM2NDQsXHJcbiAgICBpbnB1dEJhY2tncm91bmRDb2xvcjogIzE3MWUyNyxcclxuICAgIHN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KSxcclxuICAgIGFjY291bnRIb3ZlckJhY2tncm91bmRDb2xvcjogcmdiYSg1OCwgNzIsIDkwLCAwLjUpLFxyXG4gICAgYWNjb3VudE1haW5UZXh0Q29sb3I6ICNlMGUwZTAsXHJcbiAgICBhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3I6ICM1NTY1NzYsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yVGV4dENvbG9yOiAjMTExOTIxLFxyXG4gICAgYWNjb3VudFN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRJbmRpY2F0b3JCYWNrZ3JvdW5kQ29sb3I6ICM0ZGIxZmYsXHJcbiAgICB0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcjogcmdiYSgyMywgMzEsIDM5LCAwLjUpLFxyXG4gICAgdGFibGVCYWNrZ3JvdW5kQ29sb3I6ICMxODIwMmEsXHJcbiAgICBtZXNzYWdlTXlCYWNrZ3JvdW5kQ29sb3I6ICMyYTM1NDQsXHJcbiAgICBtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3I6ICMxODIwMmEsXHJcbiAgICBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcjogIzM0M2Y0YSxcclxuICAgIHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcjogIzVjZGE5ZCxcclxuICAgIGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcjogIzJiMzY0NCxcclxuICAgIGNoYXJ0T3B0aW9uc0hvdmVyQ29sb3I6ICM1NTY1NzYsXHJcbiAgICB0b29sdGlwQmFja2dyb3VuZENvbG9yOiAjNDI1MDVmLFxyXG4gICAgdG9vbHRpcFNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpLFxyXG4gICAgbW9kYWxCYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZGFyay5wbmcpLFxyXG4gICAgY2xvc2VCdXR0b25Db2xvcjogIzU1NjU3NlxyXG4gICksXHJcbiAgZ3JheTogKFxyXG4gICAgYm9keUJhY2tncm91bmRDb2xvcjogIzEwMTQxNyxcclxuICAgIHNpZGViYXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjMsIDI1LCAyNywgMC41KSxcclxuICAgIHNpZGViYXJCb3JkZXJDb2xvcjogIzJlMzMzNyxcclxuICAgIG9ubGluZUNvbG9yOiAjNDdjZjhkLFxyXG4gICAgb2ZmbGluZUNvbG9yOiAjZmY1MjUyLFxyXG4gICAgY29udGVudEJhY2tncm91bmRDb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpLFxyXG4gICAgbWFpblRleHRDb2xvcjogI2UwZTBlMCxcclxuICAgIGFsdGVybmF0aXZlVGV4dENvbG9yOiAjMWExYTFhLFxyXG4gICAgb3B0aW9uYWxUZXh0Q29sb3I6ICM1NjVjNjIsXHJcbiAgICBibHVlVGV4dENvbG9yOiAjNDJhNWY1LFxyXG4gICAgZ3JlZW5UZXh0Q29sb3I6ICM0N2NmOGQsXHJcbiAgICByZWRUZXh0Q29sb3I6ICNmZTUyNTIsXHJcbiAgICBibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNDJhNWY1LFxyXG4gICAgYmx1ZUJ1dHRvbkhvdmVyQ29sb3I6ICM0ZGFmZmYsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzc5ODQ4ZixcclxuICAgIGRpc2FibGVkQnV0dG9uSG92ZXJDb2xvcjogIzg1OTA5YixcclxuICAgIGdyZWVuQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNDdjZjhkLFxyXG4gICAgZ3JlZW5CdXR0b25Ib3ZlckNvbG9yOiAjNDlkOTkzLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjM2VjNWQ3LFxyXG4gICAgdHVycXVvaXNlQnV0dG9uSG92ZXJDb2xvcjogIzQzY2VlMCxcclxuICAgIHRyYW5zcGFyZW50QnV0dG9uQm9yZGVyQ29sb3I6ICMyZjM0MzgsXHJcbiAgICBpbnB1dEJhY2tncm91bmRDb2xvcjogIzI5MmQzMSxcclxuICAgIHN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KSxcclxuICAgIGFjY291bnRIb3ZlckJhY2tncm91bmRDb2xvcjogcmdiYSg3MCwgNzYsIDgxLCAwLjUpLFxyXG4gICAgYWNjb3VudE1haW5UZXh0Q29sb3I6ICNlMGUwZTAsXHJcbiAgICBhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3I6ICM1NjVjNjIsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yVGV4dENvbG9yOiAjMWExYTFhLFxyXG4gICAgYWNjb3VudFN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRJbmRpY2F0b3JCYWNrZ3JvdW5kQ29sb3I6ICM0MmE1ZjUsXHJcbiAgICB0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcjogcmdiYSgyMywgMjUsIDI3LCAwLjUpLFxyXG4gICAgdGFibGVCYWNrZ3JvdW5kQ29sb3I6ICMyNTI5MmQsXHJcbiAgICBtZXNzYWdlTXlCYWNrZ3JvdW5kQ29sb3I6ICMzMDM2M2MsXHJcbiAgICBtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3I6ICMyNTI5MmQsXHJcbiAgICBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcjogIzM2M2EzZSxcclxuICAgIHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcjogIzQ3Y2Y4ZCxcclxuICAgIGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcjogIzI5MmQzMSxcclxuICAgIGNoYXJ0T3B0aW9uc0hvdmVyQ29sb3I6ICM1MTU5NjAsXHJcbiAgICB0b29sdGlwQmFja2dyb3VuZENvbG9yOiAjM2U0NjRjLFxyXG4gICAgdG9vbHRpcFNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpLFxyXG4gICAgbW9kYWxCYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZ3JheS5wbmcpLFxyXG4gICAgY2xvc2VCdXR0b25Db2xvcjogIzUxNTk2MFxyXG4gICksXHJcbiAgd2hpdGU6IChcclxuICAgIGJvZHlCYWNrZ3JvdW5kQ29sb3I6ICNlZWVlZWUsXHJcbiAgICBzaWRlYmFyQmFja2dyb3VuZENvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSksXHJcbiAgICBzaWRlYmFyQm9yZGVyQ29sb3I6ICNlYmViZWIsXHJcbiAgICBvbmxpbmVDb2xvcjogIzQ2YzE3MixcclxuICAgIG9mZmxpbmVDb2xvcjogI2ZmNTI1MixcclxuICAgIGNvbnRlbnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSxcclxuICAgIG1haW5UZXh0Q29sb3I6ICM0MzQ1NGIsXHJcbiAgICBhbHRlcm5hdGl2ZVRleHRDb2xvcjogI2ZlZmVmZSxcclxuICAgIG9wdGlvbmFsVGV4dENvbG9yOiAjYTBhNWFiLFxyXG4gICAgYmx1ZVRleHRDb2xvcjogIzJjOTVmMSxcclxuICAgIGdyZWVuVGV4dENvbG9yOiAjNDZjMTcyLFxyXG4gICAgcmVkVGV4dENvbG9yOiAjZmY1MjUyLFxyXG4gICAgYmx1ZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzJjOTVmMSxcclxuICAgIGJsdWVCdXR0b25Ib3ZlckNvbG9yOiAjMzc5ZmZhLFxyXG4gICAgZGlzYWJsZWRCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM5MGE0YWUsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkhvdmVyQ29sb3I6ICM5YmFlYjcsXHJcbiAgICBncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzQ2YzE3MixcclxuICAgIGdyZWVuQnV0dG9uSG92ZXJDb2xvcjogIzQ2Y2E3NSxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzI2YjZjNyxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3I6ICMyYmJkY2YsXHJcbiAgICB0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yOiAjZWJlYmViLFxyXG4gICAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICNlNmU2ZTYsXHJcbiAgICBzd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICNlMGUwZTAsXHJcbiAgICBhY2NvdW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDMwLCAxMzYsIDIyOSwgMSksXHJcbiAgICBhY2NvdW50SG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KSxcclxuICAgIGFjY291bnRNYWluVGV4dENvbG9yOiAjZmZmZmZmLFxyXG4gICAgYWNjb3VudE9wdGlvbmFsVGV4dENvbG9yOiAjOTFiYWYxLFxyXG4gICAgYWNjb3VudEluZGljYXRvclRleHRDb2xvcjogIzQzNDU0YixcclxuICAgIGFjY291bnRTd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICNmZmZmZmYsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgdGFiSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjI0LCAyMjQsIDIyNCwgMC41KSxcclxuICAgIHRhYmxlQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgbWVzc2FnZU15QmFja2dyb3VuZENvbG9yOiAjZmZmLFxyXG4gICAgbWVzc2FnZUJ1ZGR5QmFja2dyb3VuZENvbG9yOiAjZWRlZGVkLFxyXG4gICAgcHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3I6ICNkY2RjZGMsXHJcbiAgICBwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3I6ICM0NmMxNzIsXHJcbiAgICBjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3I6ICNlMGUwZTAsXHJcbiAgICBjaGFydE9wdGlvbnNIb3ZlckNvbG9yOiAjZmZmZmZmLFxyXG4gICAgdG9vbHRpcEJhY2tncm91bmRDb2xvcjogI2ZmZmZmZixcclxuICAgIHRvb2x0aXBTaGFkb3c6IDAgMCAxcmVtIHJnYmEoMTIwLCAxMjAsIDEyMCwgMC41KSxcclxuICAgIG1vZGFsQmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLXdoaXRlLnBuZyksXHJcbiAgICBjbG9zZUJ1dHRvbkNvbG9yOiAjNDM0NTRiXHJcbiAgKVxyXG4pO1xyXG5cclxuXHJcblxyXG5cclxuXHJcbiIsImFwcC1tYWluLCBhcHAtY3JlYXRlLXdhbGxldCwgYXBwLW9wZW4td2FsbGV0LCBhcHAtcmVzdG9yZS13YWxsZXQsIGFwcC1zZWVkLXBocmFzZSwgYXBwLXdhbGxldC1kZXRhaWxzLCBhcHAtYXNzaWduLWFsaWFzLCBhcHAtZWRpdC1hbGlhcywgYXBwLXRyYW5zZmVyLWFsaWFzLCBhcHAtc2V0dGluZ3MsIGFwcC1sb2dpbiB7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgcGFkZGluZzogM3JlbTtcclxuICBtaW4td2lkdGg6IDg1cmVtO1xyXG5cclxuICAuY29udGVudCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBwYWRkaW5nOiAzcmVtO1xyXG4gICAgbWluLWhlaWdodDogMTAwJTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGNvbnRlbnRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC5oZWFkIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbWFpbiB7XHJcblxyXG4gIC5jb250ZW50IHtcclxuXHJcbiAgICAuYWRkLXdhbGxldCB7XHJcblxyXG4gICAgICAuYWRkLXdhbGxldC1oZWxwIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtc2VlZC1waHJhc2Uge1xyXG5cclxuICAuc2VlZC1waHJhc2UtY29udGVudCB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcilcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC13YWxsZXQtZGV0YWlscyB7XHJcblxyXG4gIC5zZWVkLXBocmFzZSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtc2V0dGluZ3Mge1xyXG5cclxuICAuY29udGVudCB7XHJcblxyXG4gICAgLnRoZW1lLXNlbGVjdGlvbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLWxvZ2luIHtcclxuICBtaW4td2lkdGg6IGluaGVyaXQ7XHJcbn1cclxuIiwiYXBwLXNpZGViYXIge1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzaWRlYmFyQmFja2dyb3VuZENvbG9yKTtcclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLWFjY291bnRzIHtcclxuXHJcbiAgICAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIge1xyXG5cclxuICAgICAgaDMge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBidXR0b24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNpZGViYXItYWNjb3VudHMtbGlzdCB7XHJcblxyXG4gICAgICAuc2lkZWJhci1hY2NvdW50IHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2lkZWJhci1hY2NvdW50LXJvdyB7XHJcblxyXG4gICAgICAgICAgLnRleHQge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaW5kaWNhdG9yIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICAgICAgICAgIC5wcm9ncmVzcy1iYXIge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAuZmlsbCB7XHJcblxyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWN0aXZlIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFjY291bnRNYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuc2lkZWJhci1hY2NvdW50LXJvdyB7XHJcblxyXG4gICAgICAgICAgICAudGV4dCB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmluZGljYXRvciB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRJbmRpY2F0b3JCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50SW5kaWNhdG9yVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5zd2l0Y2gge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50U3dpdGNoQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFjY291bnRPcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmhvdmVyOm5vdCguYWN0aXZlKSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50SG92ZXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNpZGViYXItc2V0dGluZ3Mge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBib3JkZXItYm90dG9tOiAwLjJyZW0gc29saWQgdGhlbWVkKHNpZGViYXJCb3JkZXJDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgYnV0dG9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnN0YXR1cy1jb250YWluZXIge1xyXG5cclxuICAgICAgLm9mZmxpbmU6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQob2ZmbGluZUNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5vbmxpbmU6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQob25saW5lQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLnRlc3RuZXQge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG5cclxuICAgICAgLnN5bmNpbmcge1xyXG5cclxuICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuZmlsbCB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmxvYWRpbmcge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJhcHAtd2FsbGV0IHtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmhlYWRlciB7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmFsaWFzIHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWRkcmVzcyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGFicyB7XHJcblxyXG4gICAgLnRhYnMtaGVhZGVyIHtcclxuXHJcbiAgICAgIC50YWIge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pbmRpY2F0b3Ige1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvclRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudGFicy1jb250ZW50IHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXNlbmQge1xyXG5cclxuICAuZm9ybS1zZW5kIHtcclxuXHJcbiAgICAuc2VuZC1zZWxlY3Qge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWRkaXRpb25hbC1kZXRhaWxzIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXJlY2VpdmUge1xyXG5cclxuICAuYnRuLWNvcHktYWRkcmVzcyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1oaXN0b3J5IHtcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMSkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMikge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMykge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDRuKzQpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc3RhdHVzIHtcclxuXHJcbiAgICAgICAgICAuY29uZmlybWF0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5maWxsIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMuc2VuZCAge1xyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMucmVjZWl2ZWQge1xyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwYzg1MztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1jb250cmFjdHMge1xyXG5cclxuICAud3JhcC10YWJsZSB7XHJcblxyXG4gICAgLmNvbnRyYWN0IHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgJi5uZXcsICYuYWxlcnQge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYucHVyY2hhc2UsICYuc2VsbCB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1wdXJjaGFzZSB7XHJcblxyXG4gIC5mb3JtLXB1cmNoYXNlIHtcclxuXHJcbiAgICAucHVyY2hhc2Utc2VsZWN0IHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbWVzc2FnZXMge1xyXG5cclxuICB0YWJsZSB7XHJcblxyXG4gICAgdGJvZHkge1xyXG5cclxuICAgICAgdHIge1xyXG5cclxuICAgICAgICB0ZDpmaXJzdC1jaGlsZCB7XHJcblxyXG4gICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC10eXBpbmctbWVzc2FnZSB7XHJcblxyXG4gIC5oZWFkIHtcclxuXHJcbiAgICAuaW50ZXJsb2N1dG9yIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5tZXNzYWdlcy1jb250ZW50IHtcclxuXHJcbiAgICAubWVzc2FnZXMtbGlzdCB7XHJcblxyXG4gICAgICBkaXYge1xyXG5cclxuICAgICAgICAmLmRhdGUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubXkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQobWVzc2FnZU15QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG87XHJcbiAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgbGVmdDogLTEuMXJlbTtcclxuICAgICAgICAgICAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtZWQobWVzc2FnZU15QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5idWRkeSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICY6YWZ0ZXIge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgcHNldWRvO1xyXG4gICAgICAgICAgICByaWdodDogLTEuMXJlbTtcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICBib3JkZXI6IDEuMnJlbSBzb2xpZCB0cmFuc3BhcmVudDtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHRoZW1lZChtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtc3Rha2luZyB7XHJcblxyXG4gIC5jaGFydC1oZWFkZXIge1xyXG5cclxuICAgIC5nZW5lcmFsIHtcclxuXHJcbiAgICAgIC5sYWJlbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAub3B0aW9ucyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2VsZWN0ZWQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmNoYXJ0LW9wdGlvbnMge1xyXG5cclxuICAgIC50aXRsZSB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vcHRpb25zIHtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY3RpdmUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2hhcnRPcHRpb25zSG92ZXJDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi5oZWFkIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgcGFkZGluZzogMCAzcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogM3JlbTtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmJyZWFkY3J1bWJzIHtcclxuXHJcbiAgICA+IHNwYW4sIGEge1xyXG5cclxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxuXHJcbiAgICAgICAgJjphZnRlciB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgcHNldWRvO1xyXG4gICAgICAgICAgdG9wOiAwLjVyZW07XHJcbiAgICAgICAgICByaWdodDogLTEuNXJlbTtcclxuICAgICAgICAgIHdpZHRoOiAwLjlyZW07XHJcbiAgICAgICAgICBoZWlnaHQ6IDAuOXJlbTtcclxuICAgICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1yaWdodC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYmFjay1idG4ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGNvbG9yOiAjNGRiMWZmO1xyXG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjNyZW07XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG5cclxuICAgIC5pY29uIHtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjdyZW07XHJcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9iYWNrLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDAuOXJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjlyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLnNjcm9sbGVkLWNvbnRlbnQge1xyXG5cclxuICAmOjotd2Via2l0LXNjcm9sbGJhciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGN1cnNvcjogZGVmYXVsdDtcclxuICAgIHdpZHRoOiAxcmVtO1xyXG4gICAgaGVpZ2h0OiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgfVxyXG5cclxuICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2O1xyXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuICAgIGJvcmRlcjogMC4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICB9XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7XHJcbiAgfVxyXG59XHJcbiIsInRhYmxlIHtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgdGhlYWQge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgdHIge1xyXG4gICAgICBoZWlnaHQ6IDRyZW07XHJcblxyXG4gICAgICB0aCB7XHJcbiAgICAgICAgcGFkZGluZzogMXJlbTtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xyXG5cclxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogM3JlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGJvZHkge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICB0ciB7XHJcbiAgICAgIGhlaWdodDogMy41cmVtO1xyXG5cclxuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRhYmxlQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRkIHtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS43cmVtO1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAyMHJlbTtcclxuXHJcbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgICAgcGFkZGluZy1yaWdodDogM3JlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gQkFTRVxyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9iYXNlL21peGlucyc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2Jhc2UvbnVsbCc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2Jhc2UvdGhlbWUnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9iYXNlL2Jhc2UnO1xyXG5cclxuLy8gTEFZT1VUXHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2xheW91dC9tYWluJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbGF5b3V0L3NldHRpbmdzJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbGF5b3V0L3NpZGViYXInO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9sYXlvdXQvd2FsbGV0JztcclxuXHJcbi8vIE1PRFVMRVNcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbW9kdWxlcy9oZWFkJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbW9kdWxlcy9zY3JvbGwnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9tb2R1bGVzL3RhYmxlJztcclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1MaWdodC50dGYpO1xyXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1SZWd1bGFyLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLVNlbWlCb2xkLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUJvbGQudHRmKTtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogT3BlblNhbnM7XHJcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtRXh0cmFCb2xkLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDgwMDtcclxufVxyXG5cclxuXHJcbmh0bWwge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbn1cclxuXHJcbmJvZHkge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEuNnJlbTtcclxuICB3aWR0aDogMTAwdnc7XHJcbiAgaGVpZ2h0OiAxMDB2aDtcclxuXHJcbiAgJi50aGVtZS1kYXJrIHtcclxuICAgIGJhY2tncm91bmQ6ICMxMzE5MjEgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWRhcmsucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIH1cclxuXHJcbiAgJi50aGVtZS1ncmF5IHtcclxuICAgIGJhY2tncm91bmQ6ICMxMDE0MTcgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIH1cclxuXHJcbiAgJi50aGVtZS13aGl0ZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlIHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgfVxyXG5cclxuICBhcHAtcm9vdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG59XHJcbiJdfQ== */", '', '']] +module.exports = [[module.i, "/*\r\n* Implementation of themes\r\n*/\n.ng-select.ng-select-opened>.ng-select-container{background:#fff;border-color:#b3b3b3 #ccc #d9d9d9}\n.ng-select.ng-select-opened>.ng-select-container:hover{box-shadow:none}\n.ng-select.ng-select-opened>.ng-select-container .ng-arrow{top:-2px;border-color:transparent transparent #999;border-width:0 5px 5px}\n.ng-select.ng-select-opened>.ng-select-container .ng-arrow:hover{border-color:transparent transparent #333}\n.ng-select.ng-select-opened.ng-select-bottom>.ng-select-container{border-bottom-right-radius:0;border-bottom-left-radius:0}\n.ng-select.ng-select-opened.ng-select-top>.ng-select-container{border-top-right-radius:0;border-top-left-radius:0}\n.ng-select.ng-select-focused:not(.ng-select-opened)>.ng-select-container{border-color:#007eff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 0 3px rgba(0,126,255,0.1)}\n.ng-select.ng-select-disabled>.ng-select-container{background-color:#f9f9f9}\n.ng-select .ng-has-value .ng-placeholder{display:none}\n.ng-select .ng-select-container{background-color:#fff;border-radius:4px;border:1px solid #ccc;min-height:36px;align-items:center}\n.ng-select .ng-select-container:hover{box-shadow:0 1px 0 rgba(0,0,0,0.06)}\n.ng-select .ng-select-container .ng-value-container{align-items:center;padding-left:10px}\n[dir=\"rtl\"] .ng-select .ng-select-container .ng-value-container{padding-right:10px;padding-left:0}\n.ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#999}\n.ng-select.ng-select-single .ng-select-container{height:36px}\n.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{top:5px;left:0;padding-left:10px;padding-right:50px}\n[dir=\"rtl\"] .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{padding-right:10px;padding-left:50px}\n.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value{background-color:#f9f9f9;border:1px solid #e6e6e6}\n.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-label{padding:0 5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-top:5px;padding-left:7px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container{padding-right:7px;padding-left:0}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{font-size:0.9em;margin-bottom:5px;background-color:#ebf5ff;border-radius:2px;margin-right:5px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{margin-right:0;margin-left:5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled{background-color:#f9f9f9}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:5px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-label{padding-left:0;padding-right:5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-label{display:inline-block;padding:1px 5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:inline-block;padding:1px 5px}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon:hover{background-color:#d1e8ff}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-right:1px solid #b8dbff}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.left{border-left:1px solid #b8dbff;border-right:none}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:1px solid #b8dbff}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon.right{border-left:0;border-right:1px solid #b8dbff}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 0 3px 3px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{padding:0 3px 3px 0}\n.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:5px;padding-bottom:5px;padding-left:3px}\n[dir=\"rtl\"] .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-right:3px;padding-left:0}\n.ng-select .ng-clear-wrapper{color:#999}\n.ng-select .ng-clear-wrapper:hover .ng-clear{color:#D0021B}\n.ng-select .ng-spinner-zone{padding:5px 5px 0 0}\n[dir=\"rtl\"] .ng-select .ng-spinner-zone{padding:5px 0 0 5px}\n.ng-select .ng-arrow-wrapper{width:25px;padding-right:5px}\n[dir=\"rtl\"] .ng-select .ng-arrow-wrapper{padding-left:5px;padding-right:0}\n.ng-select .ng-arrow-wrapper:hover .ng-arrow{border-top-color:#666}\n.ng-select .ng-arrow-wrapper .ng-arrow{border-color:#999 transparent transparent;border-style:solid;border-width:5px 5px 2.5px}\n.ng-dropdown-panel{background-color:#fff;border:1px solid #ccc;box-shadow:0 1px 0 rgba(0,0,0,0.06);left:0}\n.ng-dropdown-panel.ng-select-bottom{top:100%;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top-color:#e6e6e6;margin-top:-1px}\n.ng-dropdown-panel.ng-select-bottom .ng-dropdown-panel-items .ng-option:last-child{border-bottom-right-radius:4px;border-bottom-left-radius:4px}\n.ng-dropdown-panel.ng-select-top{bottom:100%;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-color:#e6e6e6;margin-bottom:-1px}\n.ng-dropdown-panel.ng-select-top .ng-dropdown-panel-items .ng-option:first-child{border-top-right-radius:4px;border-top-left-radius:4px}\n.ng-dropdown-panel .ng-dropdown-header{border-bottom:1px solid #ccc;padding:5px 7px}\n.ng-dropdown-panel .ng-dropdown-footer{border-top:1px solid #ccc;padding:5px 7px}\n.ng-dropdown-panel .ng-dropdown-panel-items{margin-bottom:1px}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:8px 10px;font-weight:500;color:rgba(0,0,0,0.54);cursor:pointer}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-disabled{cursor:default}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-marked{background-color:#f5faff}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup.ng-option-selected.ng-option-marked{background-color:#ebf5ff;font-weight:600}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{background-color:#fff;color:rgba(0,0,0,0.87);padding:8px 10px}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{color:#333;background-color:#ebf5ff}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected .ng-option-label,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked .ng-option-label{font-weight:600}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked{background-color:#f5faff;color:#333}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-disabled{color:#ccc}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-left:22px}\n[dir=\"rtl\"] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-child{padding-right:22px;padding-left:0}\n.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{font-size:80%;font-weight:400;padding-right:5px}\n[dir=\"rtl\"] .ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-tag-label{padding-left:5px;padding-right:0}\n[dir=\"rtl\"] .ng-dropdown-panel{direction:rtl;text-align:right}\nhtml {\n box-sizing: border-box;\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box; }\n*, *:before, *:after {\n box-sizing: inherit;\n -webkit-box-sizing: inherit;\n -moz-box-sizing: inherit;\n margin: 0;\n padding: 0;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline; }\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n display: block; }\nbody {\n line-height: 1;\n font-style: normal; }\nol, ul {\n list-style: none; }\nblockquote, q {\n quotes: none; }\nblockquote:before, blockquote:after,\nq:before, q:after {\n content: none; }\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\ntd,\nth {\n padding: 0; }\ninput {\n outline: none; }\ninput:-webkit-autofill {\n -webkit-box-shadow: 0 0 0 1000px white inset; }\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n outline: none; }\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\ninput {\n line-height: normal; }\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box; }\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\na {\n text-decoration: none; }\na:active, a:hover, a:focus {\n outline: 0; }\ni {\n font-style: italic; }\nb, strong {\n font-weight: 700; }\nimg {\n width: auto;\n max-width: 100%;\n height: auto;\n vertical-align: top;\n border: 0; }\n.hidden {\n display: none !important; }\n.theme-dark .app-content .preloader .loading-bar {\n background-color: #5cda9d; }\n.theme-gray .app-content .preloader .loading-bar {\n background-color: #47cf8d; }\n.theme-white .app-content .preloader .loading-bar {\n background-color: #46c172; }\nbutton {\n border: none;\n font-family: OpenSans, sans-serif;\n font-size: 1.5rem;\n font-weight: 600;\n outline: none;\n padding: 0 1rem;\n height: 4.2rem; }\n.theme-dark button:disabled:not(.transparent-button) {\n background-color: #90a4ae;\n color: #111921; }\n.theme-gray button:disabled:not(.transparent-button) {\n background-color: #79848f;\n color: #1a1a1a; }\n.theme-white button:disabled:not(.transparent-button) {\n background-color: #90a4ae;\n color: #fefefe; }\n.theme-dark button:disabled:not(.transparent-button):hover {\n background-color: #9bb0ba; }\n.theme-gray button:disabled:not(.transparent-button):hover {\n background-color: #85909b; }\n.theme-white button:disabled:not(.transparent-button):hover {\n background-color: #9baeb7; }\n.theme-dark button.blue-button:not(:disabled).error-text {\n color: #fe5252; }\n.theme-gray button.blue-button:not(:disabled).error-text {\n color: #fe5252; }\n.theme-white button.blue-button:not(:disabled).error-text {\n color: #ff5252; }\n.theme-dark button.blue-button:not(:disabled) {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray button.blue-button:not(:disabled) {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white button.blue-button:not(:disabled) {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark button.blue-button:not(:disabled):hover {\n background-color: #60b9ff; }\n.theme-gray button.blue-button:not(:disabled):hover {\n background-color: #4dafff; }\n.theme-white button.blue-button:not(:disabled):hover {\n background-color: #379ffa; }\n.theme-dark button.green-button:not(:disabled) {\n background-color: #5cda9d;\n color: #111921; }\n.theme-gray button.green-button:not(:disabled) {\n background-color: #47cf8d;\n color: #1a1a1a; }\n.theme-white button.green-button:not(:disabled) {\n background-color: #46c172;\n color: #fefefe; }\n.theme-dark button.green-button:not(:disabled):hover {\n background-color: #5ce2a1; }\n.theme-gray button.green-button:not(:disabled):hover {\n background-color: #49d993; }\n.theme-white button.green-button:not(:disabled):hover {\n background-color: #46ca75; }\n.theme-dark button.turquoise-button:not(:disabled) {\n background-color: #4dd0e1;\n color: #111921; }\n.theme-gray button.turquoise-button:not(:disabled) {\n background-color: #3ec5d7;\n color: #1a1a1a; }\n.theme-white button.turquoise-button:not(:disabled) {\n background-color: #26b6c7;\n color: #fefefe; }\n.theme-dark button.turquoise-button:not(:disabled):hover {\n background-color: #52d9ea; }\n.theme-gray button.turquoise-button:not(:disabled):hover {\n background-color: #43cee0; }\n.theme-white button.turquoise-button:not(:disabled):hover {\n background-color: #2bbdcf; }\nbutton.transparent-button {\n display: flex;\n align-items: center;\n justify-content: center; }\n.theme-dark button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #2b3644;\n color: #e0e0e0; }\n.theme-gray button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #2f3438;\n color: #e0e0e0; }\n.theme-white button.transparent-button {\n background-color: transparent;\n border: 0.2rem solid #ebebeb;\n color: #43454b; }\nbutton.transparent-button .icon {\n margin-right: 1rem;\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\n mask: url('complete-testwallet.svg') no-repeat center;\n width: 1.7rem;\n height: 1.7rem; }\n.theme-dark button.transparent-button .icon {\n background-color: #e0e0e0; }\n.theme-gray button.transparent-button .icon {\n background-color: #e0e0e0; }\n.theme-white button.transparent-button .icon {\n background-color: #43454b; }\n.input-block {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n margin-bottom: 0.4rem; }\n.input-block .wrap-label {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n min-height: 2.4rem; }\n.input-block label {\n font-size: 1.3rem;\n line-height: 2.4rem; }\n.theme-dark .input-block label {\n color: #556576; }\n.theme-gray .input-block label {\n color: #565c62; }\n.theme-white .input-block label {\n color: #a0a5ab; }\n.input-block input[type='text'], .input-block input[type='password'], .input-block select {\n border: none;\n font-size: 1.4rem;\n outline: none;\n padding: 0 1rem;\n width: 100%;\n height: 4.2rem; }\n.theme-dark .input-block input[type='text'], .theme-dark .input-block input[type='password'], .theme-dark .input-block select {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .input-block input[type='text'], .theme-gray .input-block input[type='password'], .theme-gray .input-block select {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .input-block input[type='text'], .theme-white .input-block input[type='password'], .theme-white .input-block select {\n background-color: #e6e6e6;\n color: #43454b; }\n.input-block.textarea {\n height: auto; }\n.input-block.textarea textarea {\n font-family: OpenSans, sans-serif;\n border: none;\n font-size: 1.4rem;\n outline: none;\n padding: 1rem;\n width: 100%;\n min-width: 100%;\n height: 100%;\n min-height: 7.5rem;\n max-height: 7.5rem;\n overflow: auto;\n resize: none; }\n.theme-dark .input-block.textarea textarea {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .input-block.textarea textarea {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .input-block.textarea textarea {\n background-color: #e6e6e6;\n color: #43454b; }\n.input-block .error-block {\n font-size: 1rem;\n line-height: 1.4rem;\n align-self: flex-end;\n text-align: right; }\n.theme-dark .input-block .error-block {\n color: #fe5252; }\n.theme-gray .input-block .error-block {\n color: #fe5252; }\n.theme-white .input-block .error-block {\n color: #ff5252; }\n.theme-dark .error-text {\n color: #fe5252; }\n.theme-gray .error-text {\n color: #fe5252; }\n.theme-white .error-text {\n color: #ff5252; }\ninput[type='radio'].style-radio + label {\n display: flex;\n align-items: center;\n cursor: pointer;\n font-weight: 400;\n padding-left: 2.4rem;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n.theme-dark input[type='radio'].style-radio + label {\n color: #556576; }\n.theme-gray input[type='radio'].style-radio + label {\n color: #565c62; }\n.theme-white input[type='radio'].style-radio + label {\n color: #a0a5ab; }\ninput[type='radio'].style-radio:not(checked) {\n position: absolute;\n opacity: 0; }\ninput[type='radio'].style-radio:not(checked) + label {\n position: relative; }\ninput[type='radio'].style-radio:not(checked) + label:before {\n content: '';\n position: absolute;\n top: 0.7rem;\n left: 0;\n background: transparent;\n border-radius: 50%;\n width: 1.4rem;\n height: 1.4rem; }\n.theme-dark input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #4db1ff; }\n.theme-gray input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #42a5f5; }\n.theme-white input[type='radio'].style-radio:not(checked) + label:before {\n border: 0.1rem solid #2c95f1; }\ninput[type='radio'].style-radio:not(checked) + label:after {\n content: '';\n position: absolute;\n top: 1rem;\n left: 0.3rem;\n border-radius: 50%;\n opacity: 0;\n width: 0.8rem;\n height: 0.8rem; }\n.theme-dark input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #4db1ff; }\n.theme-gray input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #42a5f5; }\n.theme-white input[type='radio'].style-radio:not(checked) + label:after {\n background-color: #2c95f1; }\ninput[type='radio'].style-radio:checked + label:after {\n opacity: 1; }\ninput[type='checkbox'].style-checkbox + label {\n display: flex;\n align-items: center;\n cursor: pointer;\n font-weight: 400;\n padding-left: 3.6rem;\n -webkit-touch-collout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n.theme-dark input[type='checkbox'].style-checkbox + label {\n color: #556576; }\n.theme-gray input[type='checkbox'].style-checkbox + label {\n color: #565c62; }\n.theme-white input[type='checkbox'].style-checkbox + label {\n color: #a0a5ab; }\ninput[type='checkbox'].style-checkbox:not(checked) {\n position: absolute;\n top: 50%;\n left: 1.6rem;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n visibility: hidden; }\ninput[type='checkbox'].style-checkbox:not(checked) + label {\n position: relative; }\ninput[type='checkbox'].style-checkbox:not(checked) + label:before {\n content: '';\n position: absolute;\n top: 50%;\n left: 1.6rem;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n background: transparent;\n width: 1.4rem;\n height: 1.4rem; }\n.theme-dark input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #4db1ff; }\n.theme-gray input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #42a5f5; }\n.theme-white input[type='checkbox'].style-checkbox:not(checked) + label:before {\n border: 0.1rem solid #2c95f1; }\ninput[type='checkbox'].style-checkbox:checked + label:before {\n background: url('complete-testwallet.svg'); }\n.theme-dark input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #4db1ff; }\n.theme-gray input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #42a5f5; }\n.theme-white input[type='checkbox'].style-checkbox:checked + label:before {\n background-color: #2c95f1; }\n.theme-dark .switch {\n background-color: #000000; }\n.theme-gray .switch {\n background-color: #000000; }\n.theme-white .switch {\n background-color: #e0e0e0; }\n.theme-dark .switch .circle.on {\n background-color: #4db1ff; }\n.theme-gray .switch .circle.on {\n background-color: #42a5f5; }\n.theme-white .switch .circle.on {\n background-color: #2c95f1; }\n.theme-dark .switch .circle.off {\n background-color: #556576; }\n.theme-gray .switch .circle.off {\n background-color: #565c62; }\n.theme-white .switch .circle.off {\n background-color: #a0a5ab; }\n.table-tooltip {\n font-size: 1.3rem;\n padding: 1rem 2rem;\n white-space: pre-wrap; }\n.theme-dark .table-tooltip {\n background: #42505f;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-gray .table-tooltip {\n background: #3e464c;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-white .table-tooltip {\n background: #ffffff;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\n color: #43454b; }\n.table-tooltip.ng-tooltip-top {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top:before {\n content: \"\";\n position: absolute;\n bottom: -2rem;\n left: calc(50% - 1rem);\n border-width: 1rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top:before {\n border-color: #42505f transparent transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-top:before {\n border-color: #3e464c transparent transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-top:before {\n border-color: #ffffff transparent transparent transparent; }\n.table-tooltip.ng-tooltip-top-left {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top-left:before {\n content: \"\";\n position: absolute;\n bottom: -1rem;\n left: 0.7rem;\n border-width: 1rem 1rem 0 0;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top-left:before {\n border-color: #42505f transparent transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-top-left:before {\n border-color: #3e464c transparent transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-top-left:before {\n border-color: #ffffff transparent transparent transparent; }\n.table-tooltip.ng-tooltip-top-right {\n margin-top: -1rem; }\n.table-tooltip.ng-tooltip-top-right:before {\n content: \"\";\n position: absolute;\n bottom: -1rem;\n right: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-top-right:before {\n border-color: #42505f #42505f transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-top-right:before {\n border-color: #3e464c #3e464c transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-top-right:before {\n border-color: #ffffff #ffffff transparent transparent; }\n.table-tooltip.ng-tooltip-bottom {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom:before {\n content: \"\";\n position: absolute;\n top: -2rem;\n left: calc(50% - 1rem);\n border-width: 1rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #42505f transparent; }\n.theme-gray .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #3e464c transparent; }\n.theme-white .table-tooltip.ng-tooltip-bottom:before {\n border-color: transparent transparent #ffffff transparent; }\n.table-tooltip.ng-tooltip-bottom-left {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom-left:before {\n content: \"\";\n position: absolute;\n top: -1rem;\n left: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #42505f #42505f; }\n.theme-gray .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #3e464c #3e464c; }\n.theme-white .table-tooltip.ng-tooltip-bottom-left:before {\n border-color: transparent transparent #ffffff #ffffff; }\n.table-tooltip.ng-tooltip-bottom-right {\n margin-top: 1rem; }\n.table-tooltip.ng-tooltip-bottom-right:before {\n content: \"\";\n position: absolute;\n top: -1rem;\n right: 0.7rem;\n border-width: 0.5rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #42505f #42505f transparent; }\n.theme-gray .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #3e464c #3e464c transparent; }\n.theme-white .table-tooltip.ng-tooltip-bottom-right:before {\n border-color: transparent #ffffff #ffffff transparent; }\n.table-tooltip.ng-tooltip-left {\n margin-left: -1rem; }\n.table-tooltip.ng-tooltip-left:before {\n content: \"\";\n position: absolute;\n top: 0;\n right: -1rem;\n border-width: 1rem 1rem 0 0;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-left:before {\n border-color: #42505f transparent transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-left:before {\n border-color: #3e464c transparent transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-left:before {\n border-color: #ffffff transparent transparent transparent; }\n.table-tooltip.ng-tooltip-right {\n margin-left: 1rem; }\n.table-tooltip.ng-tooltip-right:before {\n content: \"\";\n position: absolute;\n top: 0;\n left: -1rem;\n border-width: 1rem 0 0 1rem;\n border-style: solid; }\n.theme-dark .table-tooltip.ng-tooltip-right:before {\n border-color: #42505f transparent transparent transparent; }\n.theme-gray .table-tooltip.ng-tooltip-right:before {\n border-color: #3e464c transparent transparent transparent; }\n.theme-white .table-tooltip.ng-tooltip-right:before {\n border-color: #ffffff transparent transparent transparent; }\n.balance-tooltip {\n display: flex;\n flex-direction: column;\n font-size: 1.3rem;\n padding: 1.3rem; }\n.theme-dark .balance-tooltip {\n background: #42505f;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-gray .balance-tooltip {\n background: #3e464c;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\n color: #e0e0e0; }\n.theme-white .balance-tooltip {\n background: #ffffff;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\n color: #43454b; }\n.balance-tooltip.ng-tooltip-top {\n margin-top: -1rem; }\n.balance-tooltip.ng-tooltip-bottom {\n margin-top: 1rem; }\n.balance-tooltip.ng-tooltip-left {\n margin-left: -1rem; }\n.balance-tooltip.ng-tooltip-right {\n margin-left: 1rem; }\n.balance-tooltip .available {\n margin-bottom: 1.7rem; }\n.balance-tooltip .available b {\n font-weight: 600; }\n.balance-tooltip .locked {\n margin-bottom: 0.7rem; }\n.balance-tooltip .locked b {\n font-weight: 600; }\n.balance-tooltip .link {\n cursor: pointer; }\n.theme-dark .balance-tooltip .link {\n color: #4db1ff; }\n.theme-gray .balance-tooltip .link {\n color: #42a5f5; }\n.theme-white .balance-tooltip .link {\n color: #2c95f1; }\n.account-tooltip {\n word-break: break-word;\n max-width: 18rem; }\n.ngx-contextmenu .dropdown-menu {\n border: none;\n padding: 0; }\n.theme-dark .ngx-contextmenu .dropdown-menu {\n background-color: #2b3644;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\n.theme-gray .ngx-contextmenu .dropdown-menu {\n background-color: #292d31;\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\n.theme-white .ngx-contextmenu .dropdown-menu {\n background-color: #e0e0e0;\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5); }\n.ngx-contextmenu li {\n display: block;\n font-family: OpenSans, sans-serif;\n font-size: 1.3rem;\n text-transform: uppercase;\n text-align: center; }\n.ngx-contextmenu a {\n display: block;\n padding: 0.5em 1em; }\n.theme-dark .ngx-contextmenu a {\n color: #e0e0e0; }\n.theme-gray .ngx-contextmenu a {\n color: #e0e0e0; }\n.theme-white .ngx-contextmenu a {\n color: #43454b; }\n.theme-dark .ngx-contextmenu a:hover {\n background-color: #556576;\n color: #e0e0e0; }\n.theme-gray .ngx-contextmenu a:hover {\n background-color: #515960;\n color: #e0e0e0; }\n.theme-white .ngx-contextmenu a:hover {\n background-color: #ffffff;\n color: #43454b; }\n.ng-select.lock-selection-select {\n width: 100%; }\n.ng-select.lock-selection-select .ng-select-container {\n border: none;\n border-radius: 0;\n cursor: pointer;\n font-size: 1.4rem;\n outline: none;\n padding: 0 1rem;\n height: 4.2rem; }\n.theme-dark .ng-select.lock-selection-select .ng-select-container {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .ng-select.lock-selection-select .ng-select-container {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .ng-select.lock-selection-select .ng-select-container {\n background-color: #e6e6e6;\n color: #43454b; }\n.ng-select.lock-selection-select .ng-select-container .ng-value-container {\n padding: 0; }\n.ng-select.lock-selection-select .ng-dropdown-panel {\n border: none; }\n.theme-dark .ng-select.lock-selection-select .ng-dropdown-panel {\n background-color: #171e27; }\n.theme-gray .ng-select.lock-selection-select .ng-dropdown-panel {\n background-color: #292d31; }\n.theme-white .ng-select.lock-selection-select .ng-dropdown-panel {\n background-color: #e6e6e6; }\n.ng-select.lock-selection-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n font-size: 1.4rem;\n padding: 1rem; }\n.theme-dark .ng-select.lock-selection-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray .ng-select.lock-selection-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white .ng-select.lock-selection-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option {\n background-color: #e6e6e6;\n color: #43454b; }\n.theme-dark .ng-select.lock-selection-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\n background-color: rgba(58, 72, 90, 0.5);\n color: #e0e0e0; }\n.theme-gray .ng-select.lock-selection-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\n background-color: rgba(70, 76, 81, 0.5);\n color: #e0e0e0; }\n.theme-white .ng-select.lock-selection-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-marked {\n background-color: rgba(240, 240, 240, 0.5);\n color: #43454b; }\n.theme-dark .ng-select.lock-selection-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray .ng-select.lock-selection-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white .ng-select.lock-selection-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected {\n background-color: rgba(224, 224, 224, 0.5);\n color: #43454b; }\n.theme-dark app-modal-container .modal {\n background: url('background-dark.png');\n color: #e0e0e0; }\n.theme-gray app-modal-container .modal {\n background: url('background-gray.png');\n color: #e0e0e0; }\n.theme-white app-modal-container .modal {\n background: url('background-white.png');\n color: #43454b; }\n.theme-dark app-modal-container .modal .content .icon.error {\n background-color: #fe5252; }\n.theme-gray app-modal-container .modal .content .icon.error {\n background-color: #fe5252; }\n.theme-white app-modal-container .modal .content .icon.error {\n background-color: #ff5252; }\n.theme-dark app-modal-container .modal .content .icon.success {\n background-color: #5cda9d; }\n.theme-gray app-modal-container .modal .content .icon.success {\n background-color: #47cf8d; }\n.theme-white app-modal-container .modal .content .icon.success {\n background-color: #46c172; }\n.theme-dark app-modal-container .modal .content .icon.info {\n background-color: #4db1ff; }\n.theme-gray app-modal-container .modal .content .icon.info {\n background-color: #42a5f5; }\n.theme-white app-modal-container .modal .content .icon.info {\n background-color: #2c95f1; }\n.theme-dark app-modal-container .modal .action-button {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-modal-container .modal .action-button {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-modal-container .modal .action-button {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark app-modal-container .modal .close-button .icon {\n background-color: #556576; }\n.theme-gray app-modal-container .modal .close-button .icon {\n background-color: #515960; }\n.theme-white app-modal-container .modal .close-button .icon {\n background-color: #43454b; }\n.theme-dark app-transaction-details .table {\n border-top: 0.2rem solid #2b3644; }\n.theme-gray app-transaction-details .table {\n border-top: 0.2rem solid #2f3438; }\n.theme-white app-transaction-details .table {\n border-top: 0.2rem solid #ebebeb; }\n.theme-dark app-transaction-details .table .row .cell.label {\n color: #556576; }\n.theme-gray app-transaction-details .table .row .cell.label {\n color: #565c62; }\n.theme-white app-transaction-details .table .row .cell.label {\n color: #a0a5ab; }\n.theme-dark app-transaction-details .table .row .cell.value {\n color: #e0e0e0; }\n.theme-gray app-transaction-details .table .row .cell.value {\n color: #e0e0e0; }\n.theme-white app-transaction-details .table .row .cell.value {\n color: #43454b; }\n.theme-dark app-transaction-details .table .row .cell.key-value {\n color: #4db1ff; }\n.theme-gray app-transaction-details .table .row .cell.key-value {\n color: #42a5f5; }\n.theme-white app-transaction-details .table .row .cell.key-value {\n color: #2c95f1; }\n.theme-dark app-progress-container .progress-bar-container {\n color: #e0e0e0; }\n.theme-gray app-progress-container .progress-bar-container {\n color: #e0e0e0; }\n.theme-white app-progress-container .progress-bar-container {\n color: #43454b; }\n.theme-dark app-progress-container .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-progress-container .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-progress-container .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #5cda9d; }\n.theme-gray app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #47cf8d; }\n.theme-white app-progress-container .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #46c172; }\napp-main, app-create-wallet, app-open-wallet, app-restore-wallet, app-seed-phrase, app-wallet-details, app-assign-alias, app-edit-alias, app-transfer-alias, app-settings, app-login {\n flex: 1 1 auto;\n padding: 3rem;\n min-width: 85rem; }\napp-main .content, app-create-wallet .content, app-open-wallet .content, app-restore-wallet .content, app-seed-phrase .content, app-wallet-details .content, app-assign-alias .content, app-edit-alias .content, app-transfer-alias .content, app-settings .content, app-login .content {\n position: relative;\n padding: 3rem;\n min-height: 100%; }\n.theme-dark app-main .content, .theme-dark app-create-wallet .content, .theme-dark app-open-wallet .content, .theme-dark app-restore-wallet .content, .theme-dark app-seed-phrase .content, .theme-dark app-wallet-details .content, .theme-dark app-assign-alias .content, .theme-dark app-edit-alias .content, .theme-dark app-transfer-alias .content, .theme-dark app-settings .content, .theme-dark app-login .content {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray app-main .content, .theme-gray app-create-wallet .content, .theme-gray app-open-wallet .content, .theme-gray app-restore-wallet .content, .theme-gray app-seed-phrase .content, .theme-gray app-wallet-details .content, .theme-gray app-assign-alias .content, .theme-gray app-edit-alias .content, .theme-gray app-transfer-alias .content, .theme-gray app-settings .content, .theme-gray app-login .content {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white app-main .content, .theme-white app-create-wallet .content, .theme-white app-open-wallet .content, .theme-white app-restore-wallet .content, .theme-white app-seed-phrase .content, .theme-white app-wallet-details .content, .theme-white app-assign-alias .content, .theme-white app-edit-alias .content, .theme-white app-transfer-alias .content, .theme-white app-settings .content, .theme-white app-login .content {\n background-color: rgba(255, 255, 255, 0.5);\n color: #43454b; }\napp-main .content .head, app-create-wallet .content .head, app-open-wallet .content .head, app-restore-wallet .content .head, app-seed-phrase .content .head, app-wallet-details .content .head, app-assign-alias .content .head, app-edit-alias .content .head, app-transfer-alias .content .head, app-settings .content .head, app-login .content .head {\n position: absolute;\n top: 0;\n left: 0; }\n.theme-dark app-main .content .add-wallet .add-wallet-help {\n color: #4db1ff; }\n.theme-gray app-main .content .add-wallet .add-wallet-help {\n color: #42a5f5; }\n.theme-white app-main .content .add-wallet .add-wallet-help {\n color: #2c95f1; }\n.theme-dark app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #4db1ff; }\n.theme-gray app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #42a5f5; }\n.theme-white app-main .content .add-wallet .add-wallet-help .icon {\n background-color: #2c95f1; }\n.theme-dark app-seed-phrase .seed-phrase-content {\n background-color: #171e27;\n color: #e0e0e0; }\n.theme-gray app-seed-phrase .seed-phrase-content {\n background-color: #292d31;\n color: #e0e0e0; }\n.theme-white app-seed-phrase .seed-phrase-content {\n background-color: #e6e6e6;\n color: #43454b; }\n.theme-dark app-wallet-details .seed-phrase {\n background-color: #171e27; }\n.theme-gray app-wallet-details .seed-phrase {\n background-color: #292d31; }\n.theme-white app-wallet-details .seed-phrase {\n background-color: #e6e6e6; }\napp-settings .content {\n height: 100%;\n overflow-y: auto;\n display: flex;\n justify-content: space-between;\n flex-direction: column; }\n.theme-dark app-settings .content .theme-selection {\n color: #556576; }\n.theme-gray app-settings .content .theme-selection {\n color: #565c62; }\n.theme-white app-settings .content .theme-selection {\n color: #a0a5ab; }\n.theme-dark app-settings .content .scale-selection .button-block {\n background-color: rgba(23, 31, 39, 0.5); }\n.theme-gray app-settings .content .scale-selection .button-block {\n background-color: rgba(23, 25, 27, 0.5); }\n.theme-white app-settings .content .scale-selection .button-block {\n background-color: rgba(224, 224, 224, 0.5); }\n.theme-dark app-settings .content .scale-selection .button-block .label {\n color: #556576; }\n.theme-gray app-settings .content .scale-selection .button-block .label {\n color: #565c62; }\n.theme-white app-settings .content .scale-selection .button-block .label {\n color: #a0a5ab; }\n.theme-dark app-settings .content .scale-selection .button-block.active {\n background-color: #4db1ff; }\n.theme-gray app-settings .content .scale-selection .button-block.active {\n background-color: #42a5f5; }\n.theme-white app-settings .content .scale-selection .button-block.active {\n background-color: #2c95f1; }\n.theme-dark app-settings .content .scale-selection .button-block.active .label {\n color: #4db1ff; }\n.theme-gray app-settings .content .scale-selection .button-block.active .label {\n color: #42a5f5; }\n.theme-white app-settings .content .scale-selection .button-block.active .label {\n color: #2c95f1; }\napp-login {\n min-width: inherit; }\n.theme-dark app-sidebar {\n background-color: rgba(23, 31, 39, 0.5); }\n.theme-gray app-sidebar {\n background-color: rgba(23, 25, 27, 0.5); }\n.theme-white app-sidebar {\n background-color: rgba(255, 255, 255, 0.5); }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #42a5f5; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header button {\n color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\n background-color: transparent;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\n background-color: #2c95f1;\n color: #fefefe; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: rgba(43, 54, 68, 0.5);\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: rgba(37, 40, 43, 0.5);\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\n background-color: #1e88e5;\n color: #ffffff; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\n color: #91baf1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #000000;\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #000000;\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\n color: #91baf1; }\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(58, 72, 90, 0.5); }\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(70, 76, 81, 0.5); }\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\n background-color: rgba(240, 240, 240, 0.5); }\n.theme-dark app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #1f2833; }\n.theme-gray app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #2e3337; }\n.theme-white app-sidebar .sidebar-settings {\n border-bottom: 0.2rem solid #ebebeb; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button button {\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button button {\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-settings .wrap-button button {\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button button .icon {\n background-color: #4db1ff; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button button .icon {\n background-color: #42a5f5; }\n.theme-white app-sidebar .sidebar-settings .wrap-button button .icon {\n background-color: #2c95f1; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button.active button {\n background-color: rgba(43, 54, 68, 0.5) !important;\n color: #e0e0e0 !important; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button.active button {\n background-color: rgba(37, 40, 43, 0.5) !important;\n color: #e0e0e0 !important; }\n.theme-white app-sidebar .sidebar-settings .wrap-button.active button {\n background-color: #1e88e5 !important;\n color: #ffffff !important; }\n.theme-dark app-sidebar .sidebar-settings .wrap-button.active button .icon {\n background-color: #4db1ff !important; }\n.theme-gray app-sidebar .sidebar-settings .wrap-button.active button .icon {\n background-color: #42a5f5 !important; }\n.theme-white app-sidebar .sidebar-settings .wrap-button.active button .icon {\n background-color: #ffffff !important; }\n.theme-dark app-sidebar .sidebar-synchronization-status {\n color: #556576; }\n.theme-gray app-sidebar .sidebar-synchronization-status {\n color: #565c62; }\n.theme-white app-sidebar .sidebar-synchronization-status {\n color: #a0a5ab; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #fe5252; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #ff5252; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .offline:before {\n background-color: #ff5252; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .online:before {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .testnet {\n color: #e0e0e0; }\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .testnet {\n color: #e0e0e0; }\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .testnet {\n color: #43454b; }\n.theme-dark app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\n background-color: #363a3e; }\n.theme-white app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\n background-color: #46c172; }\n.theme-dark app-sidebar .sidebar-synchronization-status .progress-bar-container .loading {\n background-color: #5cda9d; }\n.theme-gray app-sidebar .sidebar-synchronization-status .progress-bar-container .loading {\n background-color: #47cf8d; }\n.theme-white app-sidebar .sidebar-synchronization-status .progress-bar-container .loading {\n background-color: #46c172; }\n.theme-dark app-wallet {\n color: #e0e0e0; }\n.theme-gray app-wallet {\n color: #e0e0e0; }\n.theme-white app-wallet {\n color: #43454b; }\n.theme-dark app-wallet .header button {\n color: #e0e0e0; }\n.theme-gray app-wallet .header button {\n color: #e0e0e0; }\n.theme-white app-wallet .header button {\n color: #43454b; }\n.theme-dark app-wallet .header button .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .header button .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .header button .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .header .alias .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .header .alias .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .header .alias .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .address {\n color: #4db1ff; }\n.theme-gray app-wallet .address {\n color: #42a5f5; }\n.theme-white app-wallet .address {\n color: #2c95f1; }\n.theme-dark app-wallet .address .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .address .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .address .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .tabs .tabs-header .tab {\n background-color: rgba(23, 31, 39, 0.5); }\n.theme-gray app-wallet .tabs .tabs-header .tab {\n background-color: rgba(23, 25, 27, 0.5); }\n.theme-white app-wallet .tabs .tabs-header .tab {\n background-color: rgba(224, 224, 224, 0.5); }\n.theme-dark app-wallet .tabs .tabs-header .tab .icon {\n background-color: #4db1ff; }\n.theme-gray app-wallet .tabs .tabs-header .tab .icon {\n background-color: #42a5f5; }\n.theme-white app-wallet .tabs .tabs-header .tab .icon {\n background-color: #2c95f1; }\n.theme-dark app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #4db1ff;\n color: #111921; }\n.theme-gray app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #42a5f5;\n color: #1a1a1a; }\n.theme-white app-wallet .tabs .tabs-header .tab .indicator {\n background-color: #ffffff;\n color: #43454b; }\n.theme-dark app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(43, 54, 68, 0.5); }\n.theme-gray app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(37, 40, 43, 0.5); }\n.theme-white app-wallet .tabs .tabs-header .tab.active {\n background-color: rgba(255, 255, 255, 0.5); }\n.theme-dark app-wallet .tabs .tabs-content {\n background-color: rgba(43, 54, 68, 0.5); }\n.theme-gray app-wallet .tabs .tabs-content {\n background-color: rgba(37, 40, 43, 0.5); }\n.theme-white app-wallet .tabs .tabs-content {\n background-color: rgba(255, 255, 255, 0.5); }\n.theme-dark app-send .form-send .send-select {\n color: #e0e0e0; }\n.theme-gray app-send .form-send .send-select {\n color: #e0e0e0; }\n.theme-white app-send .form-send .send-select {\n color: #43454b; }\n.theme-dark app-send .form-send .send-select .icon {\n background-color: #4db1ff; }\n.theme-gray app-send .form-send .send-select .icon {\n background-color: #42a5f5; }\n.theme-white app-send .form-send .send-select .icon {\n background-color: #2c95f1; }\n.theme-dark app-send .form-send .additional-details {\n border: 0.2rem solid #2b3644; }\n.theme-gray app-send .form-send .additional-details {\n border: 0.2rem solid #2f3438; }\n.theme-white app-send .form-send .additional-details {\n border: 0.2rem solid #ebebeb; }\n.theme-dark app-receive .btn-copy-address {\n background-color: #4db1ff; }\n.theme-gray app-receive .btn-copy-address {\n background-color: #42a5f5; }\n.theme-white app-receive .btn-copy-address {\n background-color: #2c95f1; }\n.theme-dark app-history table tbody tr:nth-child(4n+1) {\n background-color: #18202a; }\n.theme-gray app-history table tbody tr:nth-child(4n+1) {\n background-color: #25292d; }\n.theme-white app-history table tbody tr:nth-child(4n+1) {\n background-color: #ffffff; }\n.theme-dark app-history table tbody tr:nth-child(4n+2) {\n background-color: #18202a; }\n.theme-gray app-history table tbody tr:nth-child(4n+2) {\n background-color: #25292d; }\n.theme-white app-history table tbody tr:nth-child(4n+2) {\n background-color: #ffffff; }\n.theme-dark app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-gray app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-white app-history table tbody tr:nth-child(4n+3) {\n background-color: transparent; }\n.theme-dark app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-gray app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-white app-history table tbody tr:nth-child(4n+4) {\n background-color: transparent; }\n.theme-dark app-history table tbody tr .status .confirmation {\n background-color: #343f4a; }\n.theme-gray app-history table tbody tr .status .confirmation {\n background-color: #363a3e; }\n.theme-white app-history table tbody tr .status .confirmation {\n background-color: #dcdcdc; }\n.theme-dark app-history table tbody tr .status .confirmation .fill {\n background-color: #5cda9d; }\n.theme-gray app-history table tbody tr .status .confirmation .fill {\n background-color: #47cf8d; }\n.theme-white app-history table tbody tr .status .confirmation .fill {\n background-color: #46c172; }\napp-history table tbody tr .status.send .icon {\n background-color: #ff5252; }\napp-history table tbody tr .status.received .icon {\n background-color: #00c853; }\n.theme-dark app-contracts .wrap-table .contract .icon.new, .theme-dark app-contracts .wrap-table .contract .icon.alert {\n background-color: #fe5252; }\n.theme-gray app-contracts .wrap-table .contract .icon.new, .theme-gray app-contracts .wrap-table .contract .icon.alert {\n background-color: #fe5252; }\n.theme-white app-contracts .wrap-table .contract .icon.new, .theme-white app-contracts .wrap-table .contract .icon.alert {\n background-color: #ff5252; }\n.theme-dark app-contracts .wrap-table .contract .icon.purchase, .theme-dark app-contracts .wrap-table .contract .icon.sell {\n background-color: #4db1ff; }\n.theme-gray app-contracts .wrap-table .contract .icon.purchase, .theme-gray app-contracts .wrap-table .contract .icon.sell {\n background-color: #42a5f5; }\n.theme-white app-contracts .wrap-table .contract .icon.purchase, .theme-white app-contracts .wrap-table .contract .icon.sell {\n background-color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .purchase-select {\n color: #e0e0e0; }\n.theme-gray app-purchase .form-purchase .purchase-select {\n color: #e0e0e0; }\n.theme-white app-purchase .form-purchase .purchase-select {\n color: #43454b; }\n.theme-dark app-purchase .form-purchase .purchase-select .icon {\n background-color: #4db1ff; }\n.theme-gray app-purchase .form-purchase .purchase-select .icon {\n background-color: #42a5f5; }\n.theme-white app-purchase .form-purchase .purchase-select .icon {\n background-color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .purchase-states {\n color: #4db1ff; }\n.theme-gray app-purchase .form-purchase .purchase-states {\n color: #42a5f5; }\n.theme-white app-purchase .form-purchase .purchase-states {\n color: #2c95f1; }\n.theme-dark app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #2b3644; }\n.theme-gray app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #2f3438; }\n.theme-white app-purchase .form-purchase .additional-details {\n border: 0.2rem solid #ebebeb; }\n.theme-dark app-purchase .progress-bar-container .progress-bar {\n background-color: #343f4a; }\n.theme-gray app-purchase .progress-bar-container .progress-bar {\n background-color: #363a3e; }\n.theme-white app-purchase .progress-bar-container .progress-bar {\n background-color: #dcdcdc; }\n.theme-dark app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #5cda9d; }\n.theme-gray app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #47cf8d; }\n.theme-white app-purchase .progress-bar-container .progress-bar .progress-bar-full {\n background-color: #46c172; }\napp-messages table tbody tr td:first-child span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap; }\n.theme-dark app-messages table tbody tr td:first-child .icon {\n background-color: #fe5252; }\n.theme-gray app-messages table tbody tr td:first-child .icon {\n background-color: #fe5252; }\n.theme-white app-messages table tbody tr td:first-child .icon {\n background-color: #ff5252; }\n.theme-dark app-typing-message .head .interlocutor {\n color: #4db1ff; }\n.theme-gray app-typing-message .head .interlocutor {\n color: #42a5f5; }\n.theme-white app-typing-message .head .interlocutor {\n color: #2c95f1; }\n.theme-dark app-typing-message .messages-content .messages-list div.date {\n color: #556576; }\n.theme-gray app-typing-message .messages-content .messages-list div.date {\n color: #565c62; }\n.theme-white app-typing-message .messages-content .messages-list div.date {\n color: #a0a5ab; }\n.theme-dark app-typing-message .messages-content .messages-list div.my {\n background-color: #2a3544; }\n.theme-gray app-typing-message .messages-content .messages-list div.my {\n background-color: #30363c; }\n.theme-white app-typing-message .messages-content .messages-list div.my {\n background-color: #fff; }\napp-typing-message .messages-content .messages-list div.my:before {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: -1.1rem;\n border: 1.2rem solid transparent; }\n.theme-dark app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #2a3544; }\n.theme-gray app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #30363c; }\n.theme-white app-typing-message .messages-content .messages-list div.my:before {\n border-top-color: #fff; }\n.theme-dark app-typing-message .messages-content .messages-list div.buddy {\n background-color: #18202a; }\n.theme-gray app-typing-message .messages-content .messages-list div.buddy {\n background-color: #25292d; }\n.theme-white app-typing-message .messages-content .messages-list div.buddy {\n background-color: #ededed; }\napp-typing-message .messages-content .messages-list div.buddy:after {\n content: \"\";\n display: block;\n position: absolute;\n right: -1.1rem;\n top: 0;\n border: 1.2rem solid transparent; }\n.theme-dark app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #18202a; }\n.theme-gray app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #25292d; }\n.theme-white app-typing-message .messages-content .messages-list div.buddy:after {\n border-top-color: #ededed; }\n.theme-dark app-staking .chart-header .general .label {\n color: #556576; }\n.theme-gray app-staking .chart-header .general .label {\n color: #565c62; }\n.theme-white app-staking .chart-header .general .label {\n color: #a0a5ab; }\n.theme-dark app-staking .chart-header .general .options {\n color: #e0e0e0; }\n.theme-gray app-staking .chart-header .general .options {\n color: #e0e0e0; }\n.theme-white app-staking .chart-header .general .options {\n color: #43454b; }\napp-staking .chart-header .selected {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n flex-grow: 1;\n font-size: 1.6rem; }\n.theme-dark app-staking .chart-options .title {\n color: #556576; }\n.theme-gray app-staking .chart-options .title {\n color: #565c62; }\n.theme-white app-staking .chart-options .title {\n color: #a0a5ab; }\n.theme-dark app-staking .chart-options .options button {\n color: #e0e0e0;\n background-color: #2b3644; }\n.theme-gray app-staking .chart-options .options button {\n color: #e0e0e0;\n background-color: #292d31; }\n.theme-white app-staking .chart-options .options button {\n color: #43454b;\n background-color: #e0e0e0; }\n.theme-dark app-staking .chart-options .options button.active {\n background-color: #556576; }\n.theme-gray app-staking .chart-options .options button.active {\n background-color: #515960; }\n.theme-white app-staking .chart-options .options button.active {\n background-color: #ffffff; }\n.head {\n display: flex;\n align-items: flex-end;\n justify-content: space-between;\n font-size: 1.3rem;\n padding: 0 3rem;\n width: 100%;\n height: 3rem; }\n.theme-dark .head {\n color: #4db1ff; }\n.theme-gray .head {\n color: #42a5f5; }\n.theme-white .head {\n color: #2c95f1; }\n.head .breadcrumbs > span:not(:last-child), .head .breadcrumbs a:not(:last-child) {\n position: relative;\n cursor: pointer;\n margin-right: 20px;\n outline-style: none; }\n.head .breadcrumbs > span:not(:last-child):after, .head .breadcrumbs a:not(:last-child):after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0.5rem;\n right: -1.5rem;\n width: 0.9rem;\n height: 0.9rem;\n -webkit-mask: url('arrow-right.svg') no-repeat center;\n mask: url('arrow-right.svg') no-repeat center;\n -webkit-mask-size: cover;\n mask-size: cover; }\n.theme-dark .head .breadcrumbs > span:not(:last-child):after, .theme-dark .head .breadcrumbs a:not(:last-child):after {\n background-color: #4db1ff; }\n.theme-gray .head .breadcrumbs > span:not(:last-child):after, .theme-gray .head .breadcrumbs a:not(:last-child):after {\n background-color: #42a5f5; }\n.theme-white .head .breadcrumbs > span:not(:last-child):after, .theme-white .head .breadcrumbs a:not(:last-child):after {\n background-color: #2c95f1; }\n.head .back-btn {\n display: flex;\n align-items: center;\n background-color: transparent;\n color: #4db1ff;\n font-size: inherit;\n font-weight: 400;\n line-height: 1.3rem;\n padding: 0;\n height: auto; }\n.head .back-btn .icon {\n margin-right: 0.7rem;\n -webkit-mask: url('back.svg') no-repeat center;\n mask: url('back.svg') no-repeat center;\n width: 0.9rem;\n height: 0.9rem; }\n.theme-dark .head .back-btn .icon {\n background-color: #4db1ff; }\n.theme-gray .head .back-btn .icon {\n background-color: #42a5f5; }\n.theme-white .head .back-btn .icon {\n background-color: #2c95f1; }\n.scrolled-content::-webkit-scrollbar {\n background-color: transparent;\n cursor: default;\n width: 1rem;\n height: 1rem; }\n.scrolled-content::-webkit-scrollbar-track {\n background: transparent; }\n.scrolled-content::-webkit-scrollbar-thumb {\n background-color: #556576;\n background-clip: padding-box;\n border: 0.25rem solid transparent;\n border-radius: 0.5rem; }\n.scrolled-content::-webkit-scrollbar-thumb:hover {\n background-color: #556576; }\ntable {\n font-size: 1.3rem;\n width: 100%; }\ntable thead {\n text-align: left; }\n.theme-dark table thead {\n color: #556576; }\n.theme-gray table thead {\n color: #565c62; }\n.theme-white table thead {\n color: #a0a5ab; }\ntable thead tr {\n height: 4rem; }\ntable thead tr th {\n padding: 1rem;\n vertical-align: bottom; }\ntable thead tr th:first-child {\n padding-left: 3rem; }\ntable thead tr th:last-child {\n padding-right: 3rem; }\ntable tbody {\n text-align: left; }\n.theme-dark table tbody {\n color: #e0e0e0; }\n.theme-gray table tbody {\n color: #e0e0e0; }\n.theme-white table tbody {\n color: #43454b; }\ntable tbody tr {\n height: 3.5rem; }\n.theme-dark table tbody tr:nth-child(odd) {\n background-color: #18202a; }\n.theme-gray table tbody tr:nth-child(odd) {\n background-color: #25292d; }\n.theme-white table tbody tr:nth-child(odd) {\n background-color: #ffffff; }\ntable tbody tr td {\n line-height: 1.7rem;\n padding: 0 1rem;\n vertical-align: middle;\n white-space: nowrap;\n max-width: 20rem; }\ntable tbody tr td:first-child {\n padding-left: 3rem; }\ntable tbody tr td:last-child {\n padding-right: 3rem; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Light.ttf');\n font-weight: 300; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Regular.ttf');\n font-weight: 400; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-SemiBold.ttf');\n font-weight: 600; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-Bold.ttf');\n font-weight: 700; }\n@font-face {\n font-family: OpenSans;\n src: url('OpenSans-ExtraBold.ttf');\n font-weight: 800; }\nhtml {\n font-family: OpenSans, sans-serif;\n font-size: 10px; }\nbody {\n font-family: OpenSans, sans-serif;\n font-size: 1.6rem;\n width: 100vw;\n height: 100vh; }\nbody.theme-dark {\n background: #131921 url('background-dark.png') no-repeat center;\n background-size: cover; }\nbody.theme-gray {\n background: #101417 url('background-gray.png') no-repeat center;\n background-size: cover; }\nbody.theme-white {\n background: #eeeeee url('background-white.png') no-repeat center;\n background-size: cover; }\nbody app-root {\n display: flex;\n width: 100%;\n height: 100%; }\n\r\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX21peGlucy5zY3NzIiwic3JjL3N0eWxlcy5zY3NzIiwibm9kZV9tb2R1bGVzL0BuZy1zZWxlY3Qvbmctc2VsZWN0L3RoZW1lcy9kZWZhdWx0LnRoZW1lLmNzcyIsInNyYy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX251bGwuc2NzcyIsInNyYy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX2Jhc2Uuc2NzcyIsInNyYy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX3RoZW1lLnNjc3MiLCJzcmMvRDpcXHphbm9femFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGxheW91dFxcX21haW4uc2NzcyIsInNyYy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbGF5b3V0XFxfc2lkZWJhci5zY3NzIiwic3JjL0Q6XFx6YW5vX3phbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxsYXlvdXRcXF93YWxsZXQuc2NzcyIsInNyYy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbW9kdWxlc1xcX2hlYWQuc2NzcyIsInNyYy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbW9kdWxlc1xcX3Njcm9sbC5zY3NzIiwic3JjL0Q6XFx6YW5vX3phbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxtb2R1bGVzXFxfdGFibGUuc2NzcyIsInNyYy9EOlxcemFub196YW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXHN0eWxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThFQTs7Q0M1RUM7QUNGRCxpREFBaUQsZUFBZSxDQUFDLGlDQUFpQztBQUFDLHVEQUF1RCxlQUFlO0FBQUMsMkRBQTJELFFBQVEsQ0FBQyx5Q0FBeUMsQ0FBQyxzQkFBc0I7QUFBQyxpRUFBaUUseUNBQXlDO0FBQUMsa0VBQWtFLDRCQUE0QixDQUFDLDJCQUEyQjtBQUFDLCtEQUErRCx5QkFBeUIsQ0FBQyx3QkFBd0I7QUFBQyx5RUFBeUUsb0JBQW9CLENBQUMsMEVBQTBFO0FBQUMsbURBQW1ELHdCQUF3QjtBQUFDLHlDQUF5QyxZQUFZO0FBQUMsZ0NBQWdDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxrQkFBa0I7QUFBQyxzQ0FBc0MsbUNBQW1DO0FBQUMsb0RBQW9ELGtCQUFrQixDQUFDLGlCQUFpQjtBQUFDLGdFQUFnRSxrQkFBa0IsQ0FBQyxjQUFjO0FBQUMsb0VBQW9FLFVBQVU7QUFBQyxpREFBaUQsV0FBVztBQUFDLCtFQUErRSxPQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQjtBQUFDLDJGQUEyRixrQkFBa0IsQ0FBQyxpQkFBaUI7QUFBQyxvR0FBb0csd0JBQXdCLENBQUMsd0JBQXdCO0FBQUMsb0hBQW9ILGFBQWE7QUFBQyx1RUFBdUUsZUFBZSxDQUFDLGdCQUFnQjtBQUFDLG1GQUFtRixpQkFBaUIsQ0FBQyxjQUFjO0FBQUMsaUZBQWlGLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxnQkFB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RGdDO0lEM0RoQyxjQ3NEMkIsRUFBQTtBTGxCN0I7SUk5QkkseUJDdEN5QixFQUFBO0FMb0U3QjtJSTlCSSx5QkNReUIsRUFBQTtBTHNCN0I7SUk5QkkseUJDc0R5QixFQUFBO0FMeEI3QjtJSXRCRSx5QkMzQ2lDO0lENENqQyxjQ3JEMkIsRUFBQTtBTDBFN0I7SUl0QkUseUJDR2lDO0lERmpDLGNDUDJCLEVBQUE7QUw0QjdCO0lJdEJFLHlCQ2lEaUM7SURoRGpDLGNDdUMyQixFQUFBO0FMbEI3QjtJSWZJLHlCQ2pEMEIsRUFBQTtBTGdFOUI7SUlmSSx5QkNIMEIsRUFBQTtBTGtCOUI7SUlmSSx5QkMyQzBCLEVBQUE7QUw1QjlCO0lJUEUseUJDeERxQztJRHlEckMsY0NwRTJCLEVBQUE7QUwwRTdCO0lJUEUseUJDVnFDO0lEV3JDLGNDdEIyQixFQUFBO0FMNEI3QjtJSVBFLHlCQ29DcUM7SURuQ3JDLGNDd0IyQixFQUFBO0FMbEI3QjtJSUFJLHlCQzlEOEIsRUFBQTtBTDhEbEM7SUlBSSx5QkNoQjhCLEVBQUE7QUxnQmxDO0lJQUkseUJDOEI4QixFQUFBO0FEcEd0QztJQTRFSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QixFQUFBO0FKUnZCO01JV0UsNkJBQTZCO01BQzdCLDRCQ3pFbUM7TUQwRW5DLGNDeEZvQixFQUFBO0FMMkV0QjtNSVdFLDZCQUE2QjtNQUM3Qiw0QkMzQm1DO01ENEJuQyxjQzFDb0IsRUFBQTtBTDZCdEI7TUlXRSw2QkFBNkI7TUFDN0IsNEJDbUJtQztNRGxCbkMsY0NJb0IsRUFBQTtBRHZGMUI7TUE0Rk0sa0JBQWtCO01BQ2xCLDZEQUFxRTtjQUFyRSxxREFBcUU7TUFDckUsYUFBYTtNQUNiLGNBQWMsRUFBQTtBSnpCaEI7UUltQkkseUJDOUZrQixFQUFBO0FMMkV0QjtRSW1CSSx5QkNoRGtCLEVBQUE7QUw2QnRCO1FJbUJJLHlCQ0ZrQixFQUFBO0FEYzFCO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIscUJBQXFCLEVBQUE7QUFKdkI7SUFP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O0lBd0JNLGtCQUFrQixFQUFBO0FBeEJ4QjtJQTRCTSxXQUFXO0lBQ1gsa0JBQWtCO0lBQ2xCLFFBQVE7SUFDUixZQUFZO0lBQ1osbUNBQTJCO1lBQTNCLDJCQUEyQjtJQUMzQix1QkFBdUI7SUFDdkIsYUFBYTtJQUNiLGNBQWMsRUFBQTtBSi9NaEI7TUlrTkksNEJDMVJrQixFQUFBO0FMd0V0QjtNSWtOSSw0QkM1T2tCLEVBQUE7QUwwQnRCO01Ja05JLDRCQzlMa0IsRUFBQTtBRHdKMUI7RUE4Q00sMENBQTBELEVBQUE7QUoxTjVEO0lJNk5JLHlCQ3JTa0IsRUFBQTtBTHdFdEI7SUk2TkkseUJDdlBrQixFQUFBO0FMMEJ0QjtJSTZOSSx5QkN6TWtCLEVBQUE7QUxwQnRCO0VJc09BLHlCQy9SOEIsRUFBQTtBTHlEOUI7RUlzT0EseUJDalA4QixFQUFBO0FMVzlCO0VJc09BLHlCQ25NOEIsRUFBQTtBTG5DOUI7RUk4T0kseUJDdFRrQixFQUFBO0FMd0V0QjtFSThPSSx5QkN4UWtCLEVBQUE7QUwwQnRCO0VJOE9JLHlCQzFOa0IsRUFBQTtBTHBCdEI7RUlxUEkseUJDOVRzQixFQUFBO0FMeUUxQjtFSXFQSSx5QkNoUnNCLEVBQUE7QUwyQjFCO0VJcVBJLHlCQ2xPc0IsRUFBQTtBRHdPOUI7RUFDRSxpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLHFCQUFxQixFQUFBO0FKOVBuQjtJSWlRQSxtQkMxUytCO0lEMlMvQix1Q0MxUzBDO0lEMlMxQyxjQzlVc0IsRUFBQTtBTDJFdEI7SUlpUUEsbUJDNVArQjtJRDZQL0IsdUNDNVAwQztJRDZQMUMsY0NoU3NCLEVBQUE7QUw2QnRCO0lJaVFBLG1CQzlNK0I7SUQrTS9CLDZDQzlNZ0Q7SUQrTWhELGNDbFBzQixFQUFBO0FEME8xQjtJQVlJLGlCQUFpQixFQUFBO0FBWnJCO01BZU0sV0FBVztNQUNYLGtCQUFrQjtNQUNsQixhQUFhO01BQ2Isc0JBQXNCO01BQ3RCLGtCQUFrQjtNQUNsQixtQkFBbUIsRUFBQTtBSi9RckI7UUlrUkkseURBQWdGLEVBQUE7QUpsUnBG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b0IsRUFBQTtBTDBCdEI7TUkrYkUsY0MzYW9CLEVBQUE7QURnYjFCO0VBQ0Usc0JBQXNCO0VBQ3RCLGdCQUFnQixFQUFBO0FBR2xCO0VBR0ksWUFBWTtFQUNaLFVBQVUsRUFBQTtBSjdjVjtJSWdkRSx5QkMzZmtDO0lENGZsQyx1Q0N6ZndDLEVBQUE7QUx3QzFDO0lJZ2RFLHlCQzdja0M7SUQ4Y2xDLHVDQzNjd0MsRUFBQTtBTE4xQztJSWdkRSx5QkMvWmtDO0lEZ2FsQyw2Q0M3WjhDLEVBQUE7QURxWnBEO0VBYUksY0FBYztFQUNkLGlDQUFpQztFQUNqQyxpQkFBaUI7RUFDakIseUJBQXlCO0VBQ3pCLGtCQUFrQixFQUFBO0FBakJ0QjtFQXFCSSxjQUFjO0VBQ2Qsa0JBQWtCLEVBQUE7QUovZGxCO0lJa2VFLGNDN2lCb0IsRUFBQTtBTDJFdEI7SUlrZUUsY0MvZm9CLEVBQUE7QUw2QnRCO0lJa2VFLGNDamRvQixFQUFBO0FMakJ0QjtJSXdlSSx5QkNsaEIyQjtJRG1oQjNCLGNDcGpCa0IsRUFBQTtBTDJFdEI7SUl3ZUkseUJDcGUyQjtJRHFlM0IsY0N0Z0JrQixFQUFBO0FMNkJ0QjtJSXdlSSx5QkN0YjJCO0lEdWIzQixjQ3hka0IsRUFBQTtBRDhkMUI7RUFHSSxXQUFXLEVBQUE7QUFIZjtJQU1NLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsZUFBZTtJQUNmLGNBQWMsRUFBQTtBSjNmaEI7TUk4ZkkseUJDMWpCeUI7TUQyakJ6QixjQzFrQmtCLEVBQUE7QUwyRXRCO01JOGZJLHlCQzVnQnlCO01ENmdCekIsY0M1aEJrQixFQUFBO0FMNkJ0QjtNSThmSSx5QkM5ZHlCO01EK2R6QixjQzlla0IsRUFBQTtBRDhkMUI7TUFvQlEsVUFBVSxFQUFBO0FBcEJsQjtJQXlCTSxZQUFZLEVBQUE7QUp4Z0JkO01JMmdCSSx5QkN2a0J5QixFQUFBO0FMNEQ3QjtNSTJnQkkseUJDemhCeUIsRUFBQTtBTGM3QjtNSTJnQkkseUJDM2V5QixFQUFBO0FEK2NqQztNQWtDVSxpQkFBaUI7TUFDakIsYUFBYSxFQUFBO0FKbGhCbkI7UUlxaEJRLHlCQ2psQnFCO1FEa2xCckIsY0NqbUJjLEVBQUE7QUwyRXRCO1FJcWhCUSx5QkNuaUJxQjtRRG9pQnJCLGNDbmpCYyxFQUFBO0FMNkJ0QjtRSXFoQlEseUJDcmZxQjtRRHNmckIsY0NyZ0JjLEVBQUE7QUxqQnRCO1FJNGhCVSx1Q0N2bEI2QjtRRHdsQjdCLGNDeG1CWSxFQUFBO0FMMkV0QjtRSTRoQlUsdUNDemlCNkI7UUQwaUI3QixjQzFqQlksRUFBQTtBTDZCdEI7UUk0aEJVLDBDQzNmZ0M7UUQ0ZmhDLGNDNWdCWSxFQUFBO0FMakJ0QjtRSW9pQlUsdUNDOWxCZ0M7UUQrbEJoQyxjQ2huQlksRUFBQTtBTDJFdEI7UUlvaUJVLHVDQ2hqQmdDO1FEaWpCaEMsY0Nsa0JZLEVBQUE7QUw2QnRCO1FJb2lCVSwwQ0NsZ0JtQztRRG1nQm5DLGNDcGhCWSxFQUFBO0FMakJ0QjtFSW1qQkUsc0NDMWxCMEQ7RUQybEIxRCxjQy9uQm9CLEVBQUE7QUwyRXRCO0VJbWpCRSxzQ0M1aUIwRDtFRDZpQjFELGNDamxCb0IsRUFBQTtBTDZCdEI7RUltakJFLHVDQzlmMkQ7RUQrZjNELGNDbmlCb0IsRUFBQTtBTGpCdEI7RUk0akJNLHlCQ2xvQmUsRUFBQTtBTHNFckI7RUk0akJNLHlCQ3BsQmUsRUFBQTtBTHdCckI7RUk0akJNLHlCQ3RpQmUsRUFBQTtBTHRCckI7RUlta0JNLHlCQzFvQmlCLEVBQUE7QUx1RXZCO0VJbWtCTSx5QkM1bEJpQixFQUFBO0FMeUJ2QjtFSW1rQk0seUJDOWlCaUIsRUFBQTtBTHJCdkI7RUkwa0JNLHlCQ2xwQmdCLEVBQUE7QUx3RXRCO0VJMGtCTSx5QkNwbUJnQixFQUFBO0FMMEJ0QjtFSTBrQk0seUJDdGpCZ0IsRUFBQTtBTHBCdEI7RUlrbEJJLHlCQzFwQmtCO0VEMnBCbEIsY0M3cEJ5QixFQUFBO0FMMEU3QjtFSWtsQkkseUJDNW1Ca0I7RUQ2bUJsQixjQy9tQnlCLEVBQUE7QUw0QjdCO0VJa2xCSSx5QkM5akJrQjtFRCtqQmxCLGNDamtCeUIsRUFBQTtBTGxCN0I7RUk0bEJNLHlCQ2xvQm1CLEVBQUE7QUxzQ3pCO0VJNGxCTSx5QkNwbEJtQixFQUFBO0FMUnpCO0VJNGxCTSx5QkN0aUJtQixFQUFBO0FMdER6QjtFSXdtQkUsZ0NDcnFCbUMsRUFBQTtBTDZEckM7RUl3bUJFLGdDQ3ZuQm1DLEVBQUE7QUxlckM7RUl3bUJFLGdDQ3prQm1DLEVBQUE7QUwvQnJDO0VJa25CUSxjQzNyQmtCLEVBQUE7QUx5RTFCO0VJa25CUSxjQzdvQmtCLEVBQUE7QUwyQjFCO0VJa25CUSxjQy9sQmtCLEVBQUE7QUxuQjFCO0VJeW5CUSxjQ3BzQmMsRUFBQTtBTDJFdEI7RUl5bkJRLGNDdHBCYyxFQUFBO0FMNkJ0QjtFSXluQlEsY0N4bUJjLEVBQUE7QUxqQnRCO0VJZ29CUSxjQ3hzQmMsRUFBQTtBTHdFdEI7RUlnb0JRLGNDMXBCYyxFQUFBO0FMMEJ0QjtFSWdvQlEsY0M1bUJjLEVBQUE7QUxwQnRCO0VJNm9CRSxjQ3h0Qm9CLEVBQUE7QUwyRXRCO0VJNm9CRSxjQzFxQm9CLEVBQUE7QUw2QnRCO0VJNm9CRSxjQzVuQm9CLEVBQUE7QUxqQnRCO0VJbXBCSSx5QkNoc0IrQixFQUFBO0FMNkNuQztFSW1wQkkseUJDbHBCK0IsRUFBQTtBTERuQztFSW1wQkkseUJDcG1CK0IsRUFBQTtBTC9DbkM7RUl5cEJNLHlCQ3JzQmlDLEVBQUE7QUw0Q3ZDO0VJeXBCTSx5QkN2cEJpQyxFQUFBO0FMRnZDO0VJeXBCTSx5QkN6bUJpQyxFQUFBO0FDbkkzQztFQUNFLGNBQWM7RUFDZCxhQUFhO0VBQ2IsZ0JBQWdCLEVBQUE7QUFIbEI7SUFNSSxrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLGdCQUFnQixFQUFBO0FOMkVoQjtNTXhFRSx1Q0RKMkM7TUNLM0MsY0RKb0IsRUFBQTtBTDJFdEI7TU14RUUsdUNEMEMyQztNQ3pDM0MsY0QwQ29CLEVBQUE7QUw2QnRCO01NeEVFLDBDRHdGOEM7TUN2RjlDLGNEd0ZvQixFQUFBO0FDcEcxQjtNQWdCTSxrQkFBa0I7TUFDbEIsTUFBTTtNQUNOLE9BQU8sRUFBQTtBTmlFVDtFTW5ETSxjRHJCZ0IsRUFBQTtBTHdFdEI7RU1uRE0sY0R5QmdCLEVBQUE7QUwwQnRCO0VNbkRNLGNEdUVnQixFQUFBO0FMcEJ0QjtFTTdDUSx5QkQzQmMsRUFBQTtBTHdFdEI7RU03Q1EseUJEbUJjLEVBQUE7QUwwQnRCO0VNN0NRLHlCRGlFYyxFQUFBO0FMcEJ0QjtFTWhDRSx5QkQ1QjJCO0VDNkIzQixjRDVDb0IsRUFBQTtBTDJFdEI7RU1oQ0UseUJEa0IyQjtFQ2pCM0IsY0RFb0IsRUFBQTtBTDZCdEI7RU1oQ0UseUJEZ0UyQjtFQy9EM0IsY0RnRG9CLEVBQUE7QUxqQnRCO0VNckJFLHlCRHZDMkIsRUFBQTtBTDREN0I7RU1yQkUseUJETzJCLEVBQUE7QUxjN0I7RU1yQkUseUJEcUQyQixFQUFBO0FDaERqQztFQUdJLFlBQVk7RUFDWixnQkFBZ0I7RUFDaEIsYUFBYTtFQUNiLDhCQUE4QjtFQUM5QixzQkFBc0IsRUFBQTtBTlN0QjtJTUpJLGNEckVzQixFQUFBO0FMeUUxQjtJTUpJLGNEdkJzQixFQUFBO0FMMkIxQjtJTUpJLGNEdUJzQixFQUFBO0FMbkIxQjtJTUtNLHVDRHREMkMsRUFBQTtBTGlEakQ7SU1LTSx1Q0RSMkMsRUFBQTtBTEdqRDtJTUtNLDBDRHNDOEMsRUFBQTtBTDNDcEQ7SU1XUSxjRHBGa0IsRUFBQTtBTHlFMUI7SU1XUSxjRHRDa0IsRUFBQTtBTDJCMUI7SU1XUSxjRFFrQixFQUFBO0FMbkIxQjtJTWtCUSx5QkQxRmMsRUFBQTtBTHdFdEI7SU1rQlEseUJENUNjLEVBQUE7QUwwQnRCO0lNa0JRLHlCREVjLEVBQUE7QUxwQnRCO0lNd0JVLGNEaEdZLEVBQUE7QUx3RXRCO0lNd0JVLGNEbERZLEVBQUE7QUwwQnRCO0lNd0JVLGNESlksRUFBQTtBQ2ExQjtFQUNFLGtCQUFrQixFQUFBO0FObENoQjtFT2hGQSx1Q0ZBNkMsRUFBQTtBTGdGN0M7RU9oRkEsdUNGOEM2QyxFQUFBO0FMa0M3QztFT2hGQSwwQ0Y0RmdELEVBQUE7QUxaaEQ7RU90RU0sY0ZMZ0IsRUFBQTtBTDJFdEI7RU90RU0sY0Z5Q2dCLEVBQUE7QUw2QnRCO0VPdEVNLGNGdUZnQixFQUFBO0FMakJ0QjtFTy9ETSxjRlRnQixFQUFBO0FMd0V0QjtFTy9ETSxjRnFDZ0IsRUFBQTtBTDBCdEI7RU8vRE0sY0ZtRmdCLEVBQUE7QUxwQnRCO0VPckRNLDZCQUE2QjtFQUM3QixjRnZCZ0IsRUFBQTtBTDJFdEI7RU9yRE0sNkJBQTZCO0VBQzdCLGNGdUJnQixFQUFBO0FMNkJ0QjtFT3JETSw2QkFBNkI7RUFDN0IsY0ZxRWdCLEVBQUE7QUxqQnRCO0VPNUNVLGNGN0JnQixFQUFBO0FMeUUxQjtFTzVDVSxjRmlCZ0IsRUFBQTtBTDJCMUI7RU81Q1UsY0YrRGdCLEVBQUE7QUxuQjFCO0VPckNVLHlCRm5DWSxFQUFBO0FMd0V0QjtFT3JDVSx5QkZXWSxFQUFBO0FMMEJ0QjtFT3JDVSx5QkZ5RFksRUFBQTtBTHBCdEI7RU85QlUseUJGdkN3QjtFRXdDeEIsY0Y3Q21CLEVBQUE7QUwwRTdCO0VPOUJVLHlCRk93QjtFRU54QixjRkNtQixFQUFBO0FMNEI3QjtFTzlCVSx5QkZxRHdCO0VFcER4QixjRitDbUIsRUFBQTtBTGxCN0I7RU9wQlkseUJGekJ1QixFQUFBO0FMNkNuQztFT3BCWSx5QkZxQnVCLEVBQUE7QUxEbkM7RU9wQlkseUJGbUV1QixFQUFBO0FML0NuQztFT2RjLHlCRjlCeUIsRUFBQTtBTDRDdkM7RU9kYyx5QkZnQnlCLEVBQUE7QUxGdkM7RU9kYyx5QkY4RHlCLEVBQUE7QUxoRHZDO0VPTFUsY0ZwRWdCLEVBQUE7QUx5RTFCO0VPTFUsY0Z0QmdCLEVBQUE7QUwyQjFCO0VPTFUsY0Z3QmdCLEVBQUE7QUxuQjFCO0VPR1EsdUNGM0RxQztFRTREckMsY0YxRHFCLEVBQUE7QUxzRDdCO0VPR1EsdUNGYnFDO0VFY3JDLGNGWnFCLEVBQUE7QUxRN0I7RU9HUSx5QkZpQ3FDO0VFaENyQyxjRmtDcUIsRUFBQTtBTHRDN0I7RU9ZWSxjRmpFcUIsRUFBQTtBTHFEakM7RU9ZWSxjRm5CcUIsRUFBQTtBTE9qQztFT1lZLGNGMkJxQixFQUFBO0FMdkNqQztFT21CWSx5QkZyRTRCO0VFc0U1QixjRnhFc0IsRUFBQTtBTG9EbEM7RU9tQlkseUJGdkI0QjtFRXdCNUIsY0YxQnNCLEVBQUE7QUxNbEM7RU9tQlkseUJGdUI0QjtFRXRCNUIsY0ZvQnNCLEVBQUE7QUx4Q2xDO0VPMkJZLHlCRjlFeUI7RUUrRXpCLGNGdkdVLEVBQUE7QUwyRXRCO0VPMkJZLHlCRmhDeUI7RUVpQ3pCLGNGekRVLEVBQUE7QUw2QnRCO0VPMkJZLHlCRmN5QjtFRWJ6QixjRlhVLEVBQUE7QUxqQnRCO0VPbUNZLGNGeEZxQixFQUFBO0FMcURqQztFT21DWSxjRjFDcUIsRUFBQTtBTE9qQztFT21DWSxjRklxQixFQUFBO0FMdkNqQztFTzRDUSx1Q0ZuRzBDLEVBQUE7QUx1RGxEO0VPNENRLHVDRnJEMEMsRUFBQTtBTFNsRDtFTzRDUSwwQ0ZQNkMsRUFBQTtBTHJDckQ7RU9zREUsbUNGckl5QixFQUFBO0FMK0UzQjtFT3NERSxtQ0Z2RnlCLEVBQUE7QUxpQzNCO0VPc0RFLG1DRnpDeUIsRUFBQTtBTGIzQjtFTzhETSxjRnpJZ0IsRUFBQTtBTDJFdEI7RU84RE0sY0YzRmdCLEVBQUE7QUw2QnRCO0VPOERNLGNGN0NnQixFQUFBO0FMakJ0QjtFT29FUSx5QkY1SWMsRUFBQTtBTHdFdEI7RU9vRVEseUJGOUZjLEVBQUE7QUwwQnRCO0VPb0VRLHlCRmhEYyxFQUFBO0FMcEJ0QjtFTzhFUSxrREFBMEQ7RUFDMUQseUJBQTZDLEVBQUE7QVAvRXJEO0VPOEVRLGtEQUEwRDtFQUMxRCx5QkFBNkMsRUFBQTtBUC9FckQ7RU84RVEsb0NBQTBEO0VBQzFELHlCQUE2QyxFQUFBO0FQL0VyRDtFT3FGVSxvQ0FBbUUsRUFBQTtBUHJGN0U7RU9xRlUsb0NBQW1FLEVBQUE7QVByRjdFO0VPcUZVLG9DQUFtRSxFQUFBO0FQckY3RTtFT2dHRSxjRnpLd0IsRUFBQTtBTHlFMUI7RU9nR0UsY0YzSHdCLEVBQUE7QUwyQjFCO0VPZ0dFLGNGN0V3QixFQUFBO0FMbkIxQjtFT3dHTSx5QkZyTGUsRUFBQTtBTDZFckI7RU93R00seUJGdkllLEVBQUE7QUwrQnJCO0VPd0dNLHlCRnpGZSxFQUFBO0FMZnJCO0VPK0dNLHlCRjdMYyxFQUFBO0FMOEVwQjtFTytHTSx5QkYvSWMsRUFBQTtBTGdDcEI7RU8rR00seUJGakdjLEVBQUE7QUxkcEI7RU9zSE0sY0ZqTWdCLEVBQUE7QUwyRXRCO0VPc0hNLGNGbkpnQixFQUFBO0FMNkJ0QjtFT3NITSxjRnJHZ0IsRUFBQTtBTGpCdEI7RU9rSVEseUJGL0syQixFQUFBO0FMNkNuQztFT2tJUSx5QkZqSTJCLEVBQUE7QUxEbkM7RU9rSVEseUJGbkYyQixFQUFBO0FML0NuQztFT3dJVSx5QkZwTDZCLEVBQUE7QUw0Q3ZDO0VPd0lVLHlCRnRJNkIsRUFBQTtBTEZ2QztFT3dJVSx5QkZ4RjZCLEVBQUE7QUxoRHZDO0VPaUpNLHlCRjdMaUMsRUFBQTtBTDRDdkM7RU9pSk0seUJGL0lpQyxFQUFBO0FMRnZDO0VPaUpNLHlCRmpHaUMsRUFBQTtBTGhEdkM7RVFoRkEsY0hLc0IsRUFBQTtBTDJFdEI7RVFoRkEsY0htRHNCLEVBQUE7QUw2QnRCO0VRaEZBLGNIaUdzQixFQUFBO0FMakJ0QjtFUXhFSSxjSEhrQixFQUFBO0FMMkV0QjtFUXhFSSxjSDJDa0IsRUFBQTtBTDZCdEI7RVF4RUksY0h5RmtCLEVBQUE7QUxqQnRCO0VRbEVNLHlCSE5nQixFQUFBO0FMd0V0QjtFUWxFTSx5Qkh3Q2dCLEVBQUE7QUwwQnRCO0VRbEVNLHlCSHNGZ0IsRUFBQTtBTHBCdEI7RVF4RE0seUJIaEJnQixFQUFBO0FMd0V0QjtFUXhETSx5Qkg4QmdCLEVBQUE7QUwwQnRCO0VReERNLHlCSDRFZ0IsRUFBQTtBTHBCdEI7RVEvQ0UsY0h6Qm9CLEVBQUE7QUx3RXRCO0VRL0NFLGNIcUJvQixFQUFBO0FMMEJ0QjtFUS9DRSxjSG1Fb0IsRUFBQTtBTHBCdEI7RVF6Q0kseUJIL0JrQixFQUFBO0FMd0V0QjtFUXpDSSx5Qkhla0IsRUFBQTtBTDBCdEI7RVF6Q0kseUJINkRrQixFQUFBO0FMcEJ0QjtFUTdCTSx1Q0hwQjJDLEVBQUE7QUxpRGpEO0VRN0JNLHVDSDBCMkMsRUFBQTtBTEdqRDtFUTdCTSwwQ0h3RThDLEVBQUE7QUwzQ3BEO0VRdkJRLHlCSGpEYyxFQUFBO0FMd0V0QjtFUXZCUSx5QkhIYyxFQUFBO0FMMEJ0QjtFUXZCUSx5QkgyQ2MsRUFBQTtBTHBCdEI7RVFoQlEseUJIbENnQztFR21DaEMsY0hyQzBCLEVBQUE7QUxvRGxDO0VRaEJRLHlCSFlnQztFR1hoQyxjSFMwQixFQUFBO0FMTWxDO0VRaEJRLHlCSDBEZ0M7RUd6RGhDLGNIdUQwQixFQUFBO0FMeENsQztFUVJRLHVDSHBFcUMsRUFBQTtBTDRFN0M7RVFSUSx1Q0h0QnFDLEVBQUE7QUw4QjdDO0VRUlEsMENId0J3QyxFQUFBO0FMaEJoRDtFUUNJLHVDSDdFeUMsRUFBQTtBTDRFN0M7RVFDSSx1Q0gvQnlDLEVBQUE7QUw4QjdDO0VRQ0ksMENIZTRDLEVBQUE7QUxoQmhEO0VRY0ksY0h6RmtCLEVBQUE7QUwyRXRCO0VRY0ksY0gzQ2tCLEVBQUE7QUw2QnRCO0VRY0ksY0hHa0IsRUFBQTtBTGpCdEI7RVFvQk0seUJINUZnQixFQUFBO0FMd0V0QjtFUW9CTSx5Qkg5Q2dCLEVBQUE7QUwwQnRCO0VRb0JNLHlCSEFnQixFQUFBO0FMcEJ0QjtFUTRCSSw0Qkh6RmlDLEVBQUE7QUw2RHJDO0VRNEJJLDRCSDNDaUMsRUFBQTtBTGVyQztFUTRCSSw0QkhHaUMsRUFBQTtBTC9CckM7RVF1Q0UseUJIL0dvQixFQUFBO0FMd0V0QjtFUXVDRSx5QkhqRW9CLEVBQUE7QUwwQnRCO0VRdUNFLHlCSG5Cb0IsRUFBQTtBTHBCdEI7RVF1RFEseUJIdkdxQixFQUFBO0FMZ0Q3QjtFUXVEUSx5Qkh6RHFCLEVBQUE7QUxFN0I7RVF1RFEseUJIWHFCLEVBQUE7QUw1QzdCO0VROERRLHlCSDlHcUIsRUFBQTtBTGdEN0I7RVE4RFEseUJIaEVxQixFQUFBO0FMRTdCO0VROERRLHlCSGxCcUIsRUFBQTtBTDVDN0I7RVFxRVEsNkJBQTZCLEVBQUE7QVJyRXJDO0VRcUVRLDZCQUE2QixFQUFBO0FSckVyQztFUXFFUSw2QkFBNkIsRUFBQTtBUnJFckM7RVE0RVEsNkJBQTZCLEVBQUE7QVI1RXJDO0VRNEVRLDZCQUE2QixFQUFBO0FSNUVyQztFUTRFUSw2QkFBNkIsRUFBQTtBUjVFckM7RVFxRlUseUJIbEl5QixFQUFBO0FMNkNuQztFUXFGVSx5QkhwRnlCLEVBQUE7QUxEbkM7RVFxRlUseUJIdEN5QixFQUFBO0FML0NuQztFUTJGWSx5Qkh2STJCLEVBQUE7QUw0Q3ZDO0VRMkZZLHlCSHpGMkIsRUFBQTtBTEZ2QztFUTJGWSx5QkgzQzJCLEVBQUE7QUdKM0M7RUF3RFkseUJBQXlCLEVBQUE7QUF4RHJDO0VBK0RZLHlCQUF5QixFQUFBO0FSM0dqQztFUThIUSx5QkhwTWEsRUFBQTtBTHNFckI7RVE4SFEseUJIdEphLEVBQUE7QUx3QnJCO0VROEhRLHlCSHhHYSxFQUFBO0FMdEJyQjtFUXFJUSx5Qkg3TWMsRUFBQTtBTHdFdEI7RVFxSVEseUJIL0pjLEVBQUE7QUwwQnRCO0VRcUlRLHlCSGpIYyxFQUFBO0FMcEJ0QjtFUW9KSSxjSC9Oa0IsRUFBQTtBTDJFdEI7RVFvSkksY0hqTGtCLEVBQUE7QUw2QnRCO0VRb0pJLGNIbklrQixFQUFBO0FMakJ0QjtFUTBKTSx5QkhsT2dCLEVBQUE7QUx3RXRCO0VRMEpNLHlCSHBMZ0IsRUFBQTtBTDBCdEI7RVEwSk0seUJIdElnQixFQUFBO0FMcEJ0QjtFUWtLSSxjSDFPa0IsRUFBQTtBTHdFdEI7RVFrS0ksY0g1TGtCLEVBQUE7QUwwQnRCO0VRa0tJLGNIOUlrQixFQUFBO0FMcEJ0QjtFUXlLSSw0Qkh0T2lDLEVBQUE7QUw2RHJDO0VReUtJLDRCSHhMaUMsRUFBQTtBTGVyQztFUXlLSSw0QkgxSWlDLEVBQUE7QUwvQnJDO0VRbUxJLHlCSGhPK0IsRUFBQTtBTDZDbkM7RVFtTEkseUJIbEwrQixFQUFBO0FMRG5DO0VRbUxJLHlCSHBJK0IsRUFBQTtBTC9DbkM7RVF5TE0seUJIck9pQyxFQUFBO0FMNEN2QztFUXlMTSx5Qkh2TGlDLEVBQUE7QUxGdkM7RVF5TE0seUJIeklpQyxFQUFBO0FHZ0ozQztFUmxSRSxnQkFBZ0I7RUFDaEIsdUJBQXVCO0VBQ3ZCLG1CQUFtQixFQUFBO0FBZ0ZqQjtFUWlOVSx5Qkh2UlcsRUFBQTtBTHNFckI7RVFpTlUseUJIek9XLEVBQUE7QUx3QnJCO0VRaU5VLHlCSDNMVyxFQUFBO0FMdEJyQjtFUWlPSSxjSHpTa0IsRUFBQTtBTHdFdEI7RVFpT0ksY0gzUGtCLEVBQUE7QUwwQnRCO0VRaU9JLGNIN01rQixFQUFBO0FMcEJ0QjtFUStPUSxjSHhUa0IsRUFBQTtBTHlFMUI7RVErT1EsY0gxUWtCLEVBQUE7QUwyQjFCO0VRK09RLGNINU5rQixFQUFBO0FMbkIxQjtFUXNQUSx5QkhyU3lCLEVBQUE7QUwrQ2pDO0VRc1BRLHlCSHZQeUIsRUFBQTtBTENqQztFUXNQUSxzQkh6TXNCLEVBQUE7QUc2S2xDO0VScE9FLFdBRDBEO0VBRTFELGNBRjRCO0VBRzVCLGtCQUg0QztFUXVRbEMsTUFBTTtFQUNOLGFBQWE7RUFDYixnQ0FBZ0MsRUFBQTtBUjlQeEM7SVFpUVUseUJIaFR1QixFQUFBO0FMK0NqQztJUWlRVSx5QkhsUXVCLEVBQUE7QUxDakM7SVFpUVUsc0JIcE5vQixFQUFBO0FMN0M5QjtFUXlRUSx5Qkh2VDRCLEVBQUE7QUw4Q3BDO0VReVFRLHlCSHpRNEIsRUFBQTtBTEFwQztFUXlRUSx5QkgzTjRCLEVBQUE7QUc0S3hDO0VScE9FLFdBRDBEO0VBRTFELGNBRjRCO0VBRzVCLGtCQUg0QztFUTBSbEMsY0FBYztFQUNkLE1BQU07RUFDTixnQ0FBZ0MsRUFBQTtBUmpSeEM7SVFvUlUseUJIbFUwQixFQUFBO0FMOENwQztJUW9SVSx5QkhwUjBCLEVBQUE7QUxBcEM7SVFvUlUseUJIdE8wQixFQUFBO0FMOUNwQztFUXNTTSxjSC9Xb0IsRUFBQTtBTHlFMUI7RVFzU00sY0hqVW9CLEVBQUE7QUwyQjFCO0VRc1NNLGNIblJvQixFQUFBO0FMbkIxQjtFUTZTTSxjSHhYZ0IsRUFBQTtB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QXRENUI7VUEwRFUsbUJBQW1CLEVBQUE7QUN2QzdCO0VBQ0UscUJBQXFCO0VBQ3JCLDhCQUE4QztFQUM5QyxnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLHFCQUFxQjtFQUNyQixnQ0FBZ0Q7RUFDaEQsZ0JBQWdCLEVBQUE7QUFHbEI7RUFDRSxxQkFBcUI7RUFDckIsaUNBQWlEO0VBQ2pELGdCQUFnQixFQUFBO0FBR2xCO0VBQ0UscUJBQXFCO0VBQ3JCLDZCQUE2QztFQUM3QyxnQkFBZ0IsRUFBQTtBQUdsQjtFQUNFLHFCQUFxQjtFQUNyQixrQ0FBa0Q7RUFDbEQsZ0JBQWdCLEVBQUE7QUFJbEI7RUFDRSxpQ0FBaUM7RUFDakMsZUFBZSxFQUFBO0FBR2pCO0VBQ0UsaUNBQWlDO0VBQ2pDLGlCQUFpQjtFQUNqQixZQUFZO0VBQ1osYUFBYSxFQUFBO0FBSmY7SUFPSSwrREFBNkU7SUFDN0Usc0JBQXNCLEVBQUE7QUFSMUI7SUFZSSwrREFBNkU7SUFDN0Usc0JBQXNCLEVBQUE7QUFiMUI7SUFpQkksZ0VBQThFO0lBQzlFLHNCQUFzQixFQUFBO0FBbEIxQjtJQXNCSSxhQUFhO0lBQ2IsV0FBVztJQUNYLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvc3R5bGVzLnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAbWl4aW4gdGV4dC10cnVuY2F0ZSB7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcbkBtaXhpbiB0ZXh0V3JhcCB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgbGluZS1icmVhazogc3RyaWN0O1xyXG4gIC13ZWJraXQtaHlwaGVuczogYXV0bztcclxuICAtbXMtaHlwaGVuczogYXV0bztcclxuICBoeXBoZW5zOiBhdXRvO1xyXG59XHJcbkBtaXhpbiBjb3ZlckJveCB7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdHRvcDogMDtcclxuXHRsZWZ0OiAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdGhlaWdodDogMTAwJTtcclxufVxyXG5AbWl4aW4gYWJzICgkdG9wOiBhdXRvLCAkcmlnaHQ6IGF1dG8sICRib3R0b206IGF1dG8sICRsZWZ0OiBhdXRvKSB7XHJcbiAgdG9wOiAkdG9wO1xyXG4gIHJpZ2h0OiAkcmlnaHQ7XHJcbiAgYm90dG9tOiAkYm90dG9tO1xyXG4gIGxlZnQ6ICRsZWZ0O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxufVxyXG5AbWl4aW4gY292ZXJJbWcge1xyXG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcblx0LXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdC1vLWJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0YmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlO1xyXG59XHJcbkBtaXhpbiB2YWxpbmdCb3gge1xyXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR0b3A6ICA1MCU7XHJcblx0bGVmdDogNTAlO1xyXG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG59XHJcbkBtaXhpbiB1blNlbGVjdCB7XHJcblx0LXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xyXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xyXG4gIHVzZXItc2VsZWN0OiBub25lO1xyXG59XHJcbkBtaXhpbiBtYXgxMTk5IHsgLy8gbWFrZXQgMTE3MVxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4MTE3MCB7IC8vIG1ha2V0cyA5OTJcclxuICBAbWVkaWEgKG1heC13aWR0aDogMTE3MHB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDk5MSB7IC8vIG1ha2V0cyA3NjJcclxuICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4NzYxIHsgLy8gbWFrZXRzIDU3NlxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjFweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg1NzUgeyAvLyBtYWtldHMgNDAwXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1vYmlsZSB7XHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDM5OXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIGljb0NlbnRlciB7XHJcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcclxufVxyXG5AbWl4aW4gcHNldWRvICgkZGlzcGxheTogYmxvY2ssICRwb3M6IGFic29sdXRlLCAkY29udGVudDogJycpe1xyXG4gIGNvbnRlbnQ6ICRjb250ZW50O1xyXG4gIGRpc3BsYXk6ICRkaXNwbGF5O1xyXG4gIHBvc2l0aW9uOiAkcG9zO1xyXG59XHJcblxyXG4vKlxyXG4qIEltcGxlbWVudGF0aW9uIG9mIHRoZW1lc1xyXG4qL1xyXG5AbWl4aW4gdGhlbWlmeSgkdGhlbWVzOiAkdGhlbWVzKSB7XHJcbiAgQGVhY2ggJHRoZW1lLCAkbWFwIGluICR0aGVtZXMge1xyXG4gICAgLnRoZW1lLSN7JHRoZW1lfSAmIHtcclxuICAgICAgJHRoZW1lLW1hcDogKCkgIWdsb2JhbDtcclxuICAgICAgQGVhY2ggJGtleSwgJHN1Ym1hcCBpbiAkbWFwIHtcclxuICAgICAgICAkdmFsdWU6IG1hcC1nZXQobWFwLWdldCgkdGhlbWVzLCAkdGhlbWUpLCAnI3ska2V5fScpO1xyXG4gICAgICAgICR0aGVtZS1tYXA6IG1hcC1tZXJnZSgkdGhlbWUtbWFwLCAoJGtleTogJHZhbHVlKSkgIWdsb2JhbDtcclxuICAgICAgfVxyXG4gICAgICBAY29udGVudDtcclxuICAgICAgJHRoZW1lLW1hcDogbnVsbCAhZ2xvYmFsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGZ1bmN0aW9uIHRoZW1lZCgka2V5KSB7XHJcbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZS1tYXAsICRrZXkpO1xyXG59XHJcbiIsIi8qXHJcbiogSW1wbGVtZW50YXRpb24gb2YgdGhlbWVzXHJcbiovXG5AaW1wb3J0IHVybCh+QG5nLXNlbGVjdC9uZy1zZWxlY3QvdGhlbWVzL2RlZmF1bHQudGhlbWUuY3NzKTtcbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIC13ZWJraXQtYm94LXNpemluZzogaW5oZXJpdDtcbiAgLW1vei1ib3gtc2l6aW5nOiBpbmhlcml0O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIC13ZWJraXQtdG91Y2gtY29sbG91dDogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lOyB9XG5cbmh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbmEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbmRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbnNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG5iLCB1LCBpLCBjZW50ZXIsXG5kbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG50YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbmFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxubWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG50aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICBib3JkZXI6IDA7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgZm9udDogaW5oZXJpdDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbmFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsXG5mb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtZW51LCBuYXYsIHNlY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG5ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuXG5vbCwgdWwge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbmJsb2NrcXVvdGUsIHEge1xuICBxdW90ZXM6IG5vbmU7IH1cblxuYmxvY2txdW90ZTpiZWZvcmUsIGJsb2NrcXVvdGU6YWZ0ZXIsXG5xOmJlZm9yZSwgcTphZnRlciB7XG4gIGNvbnRlbnQ6IG5vbmU7IH1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG50ZCxcbnRoIHtcbiAgcGFkZGluZzogMDsgfVxuXG5pbnB1dCB7XG4gIG91dGxpbmU6IG5vbmU7IH1cbiAgaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAxMDAwcHggd2hpdGUgaW5zZXQ7IH1cblxuYnV0dG9uLFxuaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG91dGxpbmU6IG5vbmU7IH1cblxuYnV0dG9uW2Rpc2FibGVkXSxcbmh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBkZWZhdWx0OyB9XG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbmlucHV0IHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsgfVxuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyB9XG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9XG5cbmEge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgYTphY3RpdmUsIGE6aG92ZXIsIGE6Zm9jdXMge1xuICAgIG91dGxpbmU6IDA7IH1cblxuaSB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxuXG5iLCBzdHJvbmcge1xuICBmb250LXdlaWdodDogNzAwOyB9XG5cbmltZyB7XG4gIHdpZHRoOiBhdXRvO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgYm9yZGVyOiAwOyB9XG5cbi5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuLnRoZW1lLWRhcmsgLmFwcC1jb250ZW50IC5wcmVsb2FkZXIgLmxvYWRpbmctYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSAuYXBwLWNvbnRlbnQgLnByZWxvYWRlciAubG9hZGluZy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSAuYXBwLWNvbnRlbnQgLnByZWxvYWRlciAubG9hZGluZy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbmJ1dHRvbiB7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogMCAxcmVtO1xuICBoZWlnaHQ6IDQuMnJlbTsgfVxuICAudGhlbWUtZGFyayBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBhNGFlO1xuICAgIGNvbG9yOiAjMTExOTIxOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbikge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM3OTg0OGY7XG4gICAgY29sb3I6ICMxYTFhMWE7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbikge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM5MGE0YWU7XG4gICAgY29sb3I6ICNmZWZlZmU7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzliYjBiYTsgfVxuICAudGhlbWUtZ3JheSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODU5MDliOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWJhZWI3OyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKS5lcnJvci10ZXh0IHtcbiAgICBjb2xvcjogI2ZlNTI1MjsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCkuZXJyb3ItdGV4dCB7XG4gICAgY29sb3I6ICNmZTUyNTI7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKS5lcnJvci10ZXh0IHtcbiAgICBjb2xvcjogI2ZmNTI1MjsgfVxuICAudGhlbWUtZGFyayBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7XG4gICAgY29sb3I6ICMxMTE5MjE7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICAgIGNvbG9yOiAjMWExYTFhOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7XG4gICAgY29sb3I6ICNmZWZlZmU7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjBiOWZmOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzRkYWZmZjsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzc5ZmZhOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7XG4gICAgY29sb3I6ICMxMTE5MjE7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDtcbiAgICBjb2xvcjogIzFhMWExYTsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjtcbiAgICBjb2xvcjogI2ZlZmVmZTsgfVxuICAudGhlbWUtZGFyayBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNlMmExOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0OWQ5OTM7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0NmNhNzU7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGQwZTE7XG4gICAgY29sb3I6ICMxMTE5MjE7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzZWM1ZDc7XG4gICAgY29sb3I6ICMxYTFhMWE7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjZiNmM3O1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTJkOWVhOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDNjZWUwOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJiYmRjZjsgfVxuICBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cbiAgICAudGhlbWUtZGFyayBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJiMzY0NDtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLWdyYXkgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyZjM0Mzg7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS13aGl0ZSBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiAwLjJyZW0gc29saWQgI2ViZWJlYjtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiAuaWNvbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvY29tcGxldGUtdGVzdHdhbGxldC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgICB3aWR0aDogMS43cmVtO1xuICAgICAgaGVpZ2h0OiAxLjdyZW07IH1cbiAgICAgIC50aGVtZS1kYXJrIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24gLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwOyB9XG4gICAgICAudGhlbWUtZ3JheSBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24gLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDM0NTRiOyB9XG5cbi5pbnB1dC1ibG9jayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBtYXJnaW4tYm90dG9tOiAwLjRyZW07IH1cbiAgLmlucHV0LWJsb2NrIC53cmFwLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIG1pbi1oZWlnaHQ6IDIuNHJlbTsgfVxuICAuaW5wdXQtYmxvY2sgbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAyLjRyZW07IH1cbiAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2sgbGFiZWwge1xuICAgICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgICAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sgbGFiZWwge1xuICAgICAgY29sb3I6ICM1NjVjNjI7IH1cbiAgICAudGhlbWUtd2hpdGUgLmlucHV0LWJsb2NrIGxhYmVsIHtcbiAgICAgIGNvbG9yOiAjYTBhNWFiOyB9XG4gIC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSd0ZXh0J10sIC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSdwYXNzd29yZCddLCAuaW5wdXQtYmxvY2sgc2VsZWN0IHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA0LjJyZW07IH1cbiAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ndGV4dCddLCAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIHNlbGVjdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ndGV4dCddLCAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrIHNlbGVjdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxO1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3RleHQnXSwgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSdwYXNzd29yZCddLCAudGhlbWUtd2hpdGUgLmlucHV0LWJsb2NrIHNlbGVjdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgLmlucHV0LWJsb2NrLnRleHRhcmVhIHtcbiAgICBoZWlnaHQ6IGF1dG87IH1cbiAgICAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgbWluLXdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgbWluLWhlaWdodDogNy41cmVtO1xuICAgICAgbWF4LWhlaWdodDogNy41cmVtO1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICByZXNpemU6IG5vbmU7IH1cbiAgICAgIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jay50ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7XG4gICAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgICAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jay50ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XG4gICAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS40cmVtO1xuICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9XG4gICAgLnRoZW1lLWRhcmsgLmlucHV0LWJsb2NrIC5lcnJvci1ibG9jayB7XG4gICAgICBjb2xvcjogI2ZlNTI1MjsgfVxuICAgIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZTUyNTI7IH1cbiAgICAudGhlbWUtd2hpdGUgLmlucHV0LWJsb2NrIC5lcnJvci1ibG9jayB7XG4gICAgICBjb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayAuZXJyb3ItdGV4dCB7XG4gIGNvbG9yOiAjZmU1MjUyOyB9XG5cbi50aGVtZS1ncmF5IC5lcnJvci10ZXh0IHtcbiAgY29sb3I6ICNmZTUyNTI7IH1cblxuLnRoZW1lLXdoaXRlIC5lcnJvci10ZXh0IHtcbiAgY29sb3I6ICNmZjUyNTI7IH1cblxuaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXdlaWdodDogNDAwO1xuICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcbiAgLXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7IH1cbiAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgICBjb2xvcjogIzU1NjU3NjsgfVxuICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvICsgbGFiZWwge1xuICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvICsgbGFiZWwge1xuICAgIGNvbG9yOiAjYTBhNWFiOyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvcGFjaXR5OiAwOyB9XG4gIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMC43cmVtO1xuICAgIGxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHdpZHRoOiAxLjRyZW07XG4gICAgaGVpZ2h0OiAxLjRyZW07IH1cbiAgICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzQyYTVmNTsgfVxuICAgIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjMmM5NWYxOyB9XG4gIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWw6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDFyZW07XG4gICAgbGVmdDogMC4zcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHdpZHRoOiAwLjhyZW07XG4gICAgaGVpZ2h0OiAwLjhyZW07IH1cbiAgICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cbiAgICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcbiAgb3BhY2l0eTogMTsgfVxuXG5pbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHBhZGRpbmctbGVmdDogMy42cmVtO1xuICAtd2Via2l0LXRvdWNoLWNvbGxvdXQ6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gIC50aGVtZS1ncmF5IGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3ggKyBsYWJlbCB7XG4gICAgY29sb3I6ICM1NjVjNjI7IH1cbiAgLnRoZW1lLXdoaXRlIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3ggKyBsYWJlbCB7XG4gICAgY29sb3I6ICNhMGE1YWI7IH1cblxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpub3QoY2hlY2tlZCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAxLjZyZW07XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG4gIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpICsgbGFiZWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDEuNnJlbTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgd2lkdGg6IDEuNHJlbTtcbiAgICBoZWlnaHQ6IDEuNHJlbTsgfVxuICAgIC50aGVtZS1kYXJrIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpICsgbGFiZWw6YmVmb3JlIHtcbiAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkICM0ZGIxZmY7IH1cbiAgICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjNDJhNWY1OyB9XG4gICAgLnRoZW1lLXdoaXRlIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpICsgbGFiZWw6YmVmb3JlIHtcbiAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkICMyYzk1ZjE7IH1cblxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKTsgfVxuICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94OmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG4gIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94OmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IH1cblxuLnRoZW1lLWdyYXkgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IH1cblxuLnRoZW1lLXdoaXRlIC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1kYXJrIC5zd2l0Y2ggLmNpcmNsZS5vbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgLnN3aXRjaCAuY2lyY2xlLm9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgLnN3aXRjaCAuY2lyY2xlLm9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayAuc3dpdGNoIC5jaXJjbGUub2ZmIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSAuc3dpdGNoIC5jaXJjbGUub2ZmIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgLnN3aXRjaCAuY2lyY2xlLm9mZiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhMGE1YWI7IH1cblxuLnRhYmxlLXRvb2x0aXAge1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgcGFkZGluZzogMXJlbSAycmVtO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IH1cbiAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICM0MjUwNWY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjM2U0NjRjO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpO1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wIHtcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAtMnJlbTtcbiAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMXJlbSk7XG4gICAgICBib3JkZXItd2lkdGg6IDFyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1sZWZ0IHtcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLWxlZnQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IC0xcmVtO1xuICAgICAgbGVmdDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtIDFyZW0gMCAwO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLWxlZnQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IC0xcmVtO1xuICAgICAgcmlnaHQ6IDAuN3JlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjNDI1MDVmICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20ge1xuICAgIG1hcmdpbi10b3A6IDFyZW07IH1cbiAgICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogLTJyZW07XG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDFyZW0pO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGMgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLWxlZnQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IC0xcmVtO1xuICAgICAgbGVmdDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzNlNDY0YyAjM2U0NjRjOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgI2ZmZmZmZjsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMXJlbTtcbiAgICAgIHJpZ2h0OiAwLjdyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICMzZTQ2NGMgIzNlNDY0YyB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmIHRyYW5zcGFyZW50OyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IC0xcmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtIDFyZW0gMCAwO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cbiAgICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLTFyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDFyZW0gMCAwIDFyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICMzZTQ2NGMgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuXG4uYmFsYW5jZS10b29sdGlwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIHBhZGRpbmc6IDEuM3JlbTsgfVxuICAudGhlbWUtZGFyayAuYmFsYW5jZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjNDI1MDVmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAuYmFsYW5jZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjM2U0NjRjO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtd2hpdGUgLmJhbGFuY2UtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDEyMCwgMTIwLCAxMjAsIDAuNSk7XG4gICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLXRvcCB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW07IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAuYmFsYW5jZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gIC5iYWxhbmNlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cbiAgLmJhbGFuY2UtdG9vbHRpcCAuYXZhaWxhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjdyZW07IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC5hdmFpbGFibGUgYiB7XG4gICAgICBmb250LXdlaWdodDogNjAwOyB9XG4gIC5iYWxhbmNlLXRvb2x0aXAgLmxvY2tlZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC43cmVtOyB9XG4gICAgLmJhbGFuY2UtdG9vbHRpcCAubG9ja2VkIGIge1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDsgfVxuICAuYmFsYW5jZS10b29sdGlwIC5saW5rIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgICAudGhlbWUtZGFyayAuYmFsYW5jZS10b29sdGlwIC5saW5rIHtcbiAgICAgIGNvbG9yOiAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgLmJhbGFuY2UtdG9vbHRpcCAubGluayB7XG4gICAgICBjb2xvcjogIzQyYTVmNTsgfVxuICAgIC50aGVtZS13aGl0ZSAuYmFsYW5jZS10b29sdGlwIC5saW5rIHtcbiAgICAgIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi5hY2NvdW50LXRvb2x0aXAge1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICBtYXgtd2lkdGg6IDE4cmVtOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJiMzY0NDtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLWdyYXkgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgbGkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbSAxZW07IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSBhIHtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50aGVtZS1kYXJrIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGE6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuXG4ubmctc2VsZWN0LmxvY2stc2VsZWN0aW9uLXNlbGVjdCB7XG4gIHdpZHRoOiAxMDAlOyB9XG4gIC5uZy1zZWxlY3QubG9jay1zZWxlY3Rpb24tc2VsZWN0IC5uZy1zZWxlY3QtY29udGFpbmVyIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgaGVpZ2h0OiA0LjJyZW07IH1cbiAgICAudGhlbWUtZGFyayAubmctc2VsZWN0LmxvY2stc2VsZWN0aW9uLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtZ3JheSAubmctc2VsZWN0LmxvY2stc2VsZWN0aW9uLXNlbGVjdCAubmctc2VsZWN0LWNvbnRhaW5lciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxO1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgLm5nLXNlbGVjdC5sb2NrLXNlbGVjdGlvbi1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgLm5nLXNlbGVjdC5sb2NrLXNlbGVjdGlvbi1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciB7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gIC5uZy1zZWxlY3QubG9jay1zZWxlY3Rpb24tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCB7XG4gICAgYm9yZGVyOiBub25lOyB9XG4gICAgLnRoZW1lLWRhcmsgLm5nLXNlbGVjdC5sb2NrLXNlbGVjdGlvbi1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7IH1cbiAgICAudGhlbWUtZ3JheSAubmctc2VsZWN0LmxvY2stc2VsZWN0aW9uLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTsgfVxuICAgIC50aGVtZS13aGl0ZSAubmctc2VsZWN0LmxvY2stc2VsZWN0aW9uLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsgfVxuICAgIC5uZy1zZWxlY3QubG9jay1zZWxlY3Rpb24tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbiB7XG4gICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIHBhZGRpbmc6IDFyZW07IH1cbiAgICAgIC50aGVtZS1kYXJrIC5uZy1zZWxlY3QubG9jay1zZWxlY3Rpb24tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7XG4gICAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgICAudGhlbWUtZ3JheSAubmctc2VsZWN0LmxvY2stc2VsZWN0aW9uLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QubG9jay1zZWxlY3Rpb24tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XG4gICAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgICAudGhlbWUtZGFyayAubmctc2VsZWN0LmxvY2stc2VsZWN0aW9uLXNlbGVjdCAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLW1hcmtlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDcyLCA5MCwgMC41KTtcbiAgICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS1ncmF5IC5uZy1zZWxlY3QubG9jay1zZWxlY3Rpb24tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tbWFya2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3MCwgNzYsIDgxLCAwLjUpO1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5uZy1zZWxlY3QubG9jay1zZWxlY3Rpb24tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tbWFya2VkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDAsIDI0MCwgMjQwLCAwLjUpO1xuICAgICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAgICAgLnRoZW1lLWRhcmsgLm5nLXNlbGVjdC5sb2NrLXNlbGVjdGlvbi1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTtcbiAgICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS1ncmF5IC5uZy1zZWxlY3QubG9jay1zZWxlY3Rpb24tc2VsZWN0IC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7XG4gICAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLm5nLXNlbGVjdC5sb2NrLXNlbGVjdGlvbi1zZWxlY3QgLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjI0LCAyMjQsIDIyNCwgMC41KTtcbiAgICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwge1xuICBiYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZGFyay5wbmcpO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCB7XG4gIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1ncmF5LnBuZyk7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCB7XG4gIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmcpO1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZTUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmU1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0N2NmOGQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLnN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5pbmZvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuYWN0aW9uLWJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7XG4gIGNvbG9yOiAjMTExOTIxOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5hY3Rpb24tYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTtcbiAgY29sb3I6ICMxYTFhMWE7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5hY3Rpb24tYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTtcbiAgY29sb3I6ICNmZWZlZmU7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNsb3NlLWJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNsb3NlLWJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jbG9zZS1idXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSB7XG4gIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCAjMmIzNjQ0OyB9XG5cbi50aGVtZS1ncmF5IGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSB7XG4gIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCAjMmYzNDM4OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHJhbnNhY3Rpb24tZGV0YWlscyAudGFibGUge1xuICBib3JkZXItdG9wOiAwLjJyZW0gc29saWQgI2ViZWJlYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHJhbnNhY3Rpb24tZGV0YWlscyAudGFibGUgLnJvdyAuY2VsbC5sYWJlbCB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmxhYmVsIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmxhYmVsIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwudmFsdWUge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtdHJhbnNhY3Rpb24tZGV0YWlscyAudGFibGUgLnJvdyAuY2VsbC52YWx1ZSB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHJhbnNhY3Rpb24tZGV0YWlscyAudGFibGUgLnJvdyAuY2VsbC52YWx1ZSB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmtleS12YWx1ZSB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmtleS12YWx1ZSB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHJhbnNhY3Rpb24tZGV0YWlscyAudGFibGUgLnJvdyAuY2VsbC5rZXktdmFsdWUge1xuICBjb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXByb2dyZXNzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXByb2dyZXNzLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2Y0YTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzYzYTNlOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wcm9ncmVzcy1jb250YWluZXIgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcHJvZ3Jlc3MtY29udGFpbmVyIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLnByb2dyZXNzLWJhci1mdWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG5hcHAtbWFpbiwgYXBwLWNyZWF0ZS13YWxsZXQsIGFwcC1vcGVuLXdhbGxldCwgYXBwLXJlc3RvcmUtd2FsbGV0LCBhcHAtc2VlZC1waHJhc2UsIGFwcC13YWxsZXQtZGV0YWlscywgYXBwLWFzc2lnbi1hbGlhcywgYXBwLWVkaXQtYWxpYXMsIGFwcC10cmFuc2Zlci1hbGlhcywgYXBwLXNldHRpbmdzLCBhcHAtbG9naW4ge1xuICBmbGV4OiAxIDEgYXV0bztcbiAgcGFkZGluZzogM3JlbTtcbiAgbWluLXdpZHRoOiA4NXJlbTsgfVxuICBhcHAtbWFpbiAuY29udGVudCwgYXBwLWNyZWF0ZS13YWxsZXQgLmNvbnRlbnQsIGFwcC1vcGVuLXdhbGxldCAuY29udGVudCwgYXBwLXJlc3RvcmUtd2FsbGV0IC5jb250ZW50LCBhcHAtc2VlZC1waHJhc2UgLmNvbnRlbnQsIGFwcC13YWxsZXQtZGV0YWlscyAuY29udGVudCwgYXBwLWFzc2lnbi1hbGlhcyAuY29udGVudCwgYXBwLWVkaXQtYWxpYXMgLmNvbnRlbnQsIGFwcC10cmFuc2Zlci1hbGlhcyAuY29udGVudCwgYXBwLXNldHRpbmdzIC5jb250ZW50LCBhcHAtbG9naW4gLmNvbnRlbnQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAzcmVtO1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7IH1cbiAgICAudGhlbWUtZGFyayBhcHAtbWFpbiAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLWNyZWF0ZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1vcGVuLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLXJlc3RvcmUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtc2VlZC1waHJhc2UgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC13YWxsZXQtZGV0YWlscyAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLWFzc2lnbi1hbGlhcyAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLWVkaXQtYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC10cmFuc2Zlci1hbGlhcyAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLXNldHRpbmdzIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtbG9naW4gLmNvbnRlbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpO1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtZ3JheSBhcHAtbWFpbiAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLWNyZWF0ZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1vcGVuLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLXJlc3RvcmUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtc2VlZC1waHJhc2UgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC13YWxsZXQtZGV0YWlscyAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLWFzc2lnbi1hbGlhcyAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLWVkaXQtYWxpYXMgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC10cmFuc2Zlci1hbGlhcyAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtbG9naW4gLmNvbnRlbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpO1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtd2hpdGUgYXBwLW1haW4gLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtY3JlYXRlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC1vcGVuLXdhbGxldCAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC1zZWVkLXBocmFzZSAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQtZGV0YWlscyAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQsIC50aGVtZS13aGl0ZSBhcHAtZWRpdC1hbGlhcyAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC10cmFuc2Zlci1hbGlhcyAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC1zZXR0aW5ncyAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC1sb2dpbiAuY29udGVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7XG4gICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAgIGFwcC1tYWluIC5jb250ZW50IC5oZWFkLCBhcHAtY3JlYXRlLXdhbGxldCAuY29udGVudCAuaGVhZCwgYXBwLW9wZW4td2FsbGV0IC5jb250ZW50IC5oZWFkLCBhcHAtcmVzdG9yZS13YWxsZXQgLmNvbnRlbnQgLmhlYWQsIGFwcC1zZWVkLXBocmFzZSAuY29udGVudCAuaGVhZCwgYXBwLXdhbGxldC1kZXRhaWxzIC5jb250ZW50IC5oZWFkLCBhcHAtYXNzaWduLWFsaWFzIC5jb250ZW50IC5oZWFkLCBhcHAtZWRpdC1hbGlhcyAuY29udGVudCAuaGVhZCwgYXBwLXRyYW5zZmVyLWFsaWFzIC5jb250ZW50IC5oZWFkLCBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLmhlYWQsIGFwcC1sb2dpbiAuY29udGVudCAuaGVhZCB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAge1xuICBjb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAge1xuICBjb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNlZWQtcGhyYXNlIC5zZWVkLXBocmFzZS1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE3MWUyNztcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNlZWQtcGhyYXNlIC5zZWVkLXBocmFzZS1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zZWVkLXBocmFzZSAuc2VlZC1waHJhc2UtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQtZGV0YWlscyAuc2VlZC1waHJhc2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3OyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQtZGV0YWlscyAuc2VlZC1waHJhc2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0LWRldGFpbHMgLnNlZWQtcGhyYXNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsgfVxuXG5hcHAtc2V0dGluZ3MgLmNvbnRlbnQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuICAudGhlbWUtZGFyayBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnRoZW1lLXNlbGVjdGlvbiB7XG4gICAgY29sb3I6ICM1NTY1NzY7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnRoZW1lLXNlbGVjdGlvbiB7XG4gICAgY29sb3I6ICNhMGE1YWI7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMywgMzEsIDM5LCAwLjUpOyB9XG4gIC50aGVtZS1ncmF5IGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2sge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMsIDI1LCAyNywgMC41KTsgfVxuICAudGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjQsIDIyNCwgMjI0LCAwLjUpOyB9XG4gIC50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2sgLmxhYmVsIHtcbiAgICBjb2xvcjogIzU1NjU3NjsgfVxuICAudGhlbWUtZ3JheSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrIC5sYWJlbCB7XG4gICAgY29sb3I6ICM1NjVjNjI7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC1zZXR0aW5ncyAuY29udGVudCAuc2NhbGUtc2VsZWN0aW9uIC5idXR0b24tYmxvY2sgLmxhYmVsIHtcbiAgICBjb2xvcjogI2EwYTVhYjsgfVxuICAudGhlbWUtZGFyayBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuICAudGhlbWUtZ3JheSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuICAudGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXNldHRpbmdzIC5jb250ZW50IC5zY2FsZS1zZWxlY3Rpb24gLmJ1dHRvbi1ibG9jay5hY3RpdmUgLmxhYmVsIHtcbiAgICBjb2xvcjogIzRkYjFmZjsgfVxuICAudGhlbWUtZ3JheSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrLmFjdGl2ZSAubGFiZWwge1xuICAgIGNvbG9yOiAjNDJhNWY1OyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQgLnNjYWxlLXNlbGVjdGlvbiAuYnV0dG9uLWJsb2NrLmFjdGl2ZSAubGFiZWwge1xuICAgIGNvbG9yOiAjMmM5NWYxOyB9XG5cbmFwcC1sb2dpbiB7XG4gIG1pbi13aWR0aDogaW5oZXJpdDsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMsIDI1LCAyNywgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGgzIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGgzIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciBoMyB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciBidXR0b24ge1xuICBjb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciBidXR0b24ge1xuICBjb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC50ZXh0IHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC50ZXh0IHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAudGV4dCB7XG4gIGNvbG9yOiAjYTBhNWFiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7XG4gIGNvbG9yOiAjMTExOTIxOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTtcbiAgY29sb3I6ICMxYTFhMWE7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTtcbiAgY29sb3I6ICNmZWZlZmU7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM2M2EzZTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0N2NmOGQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93LmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU4OGU1O1xuICBjb2xvcjogI2ZmZmZmZjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC50ZXh0IHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAudGV4dCB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC50ZXh0IHtcbiAgY29sb3I6ICM5MWJhZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTtcbiAgY29sb3I6ICMxYTFhMWE7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93LmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93LmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcbiAgY29sb3I6ICM5MWJhZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50OmhvdmVyOm5vdCguYWN0aXZlKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTgsIDcyLCA5MCwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQ6aG92ZXI6bm90KC5hY3RpdmUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3MCwgNzYsIDgxLCAwLjUpOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQ6aG92ZXI6bm90KC5hY3RpdmUpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDAsIDI0MCwgMjQwLCAwLjUpOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICMxZjI4MzM7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3Mge1xuICBib3JkZXItYm90dG9tOiAwLjJyZW0gc29saWQgIzJlMzMzNzsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3Mge1xuICBib3JkZXItYm90dG9tOiAwLjJyZW0gc29saWQgI2ViZWJlYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24gYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uIGJ1dHRvbiB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyAud3JhcC1idXR0b24gYnV0dG9uIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbiBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uLmFjdGl2ZSBidXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSkgIWltcG9ydGFudDtcbiAgY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uLmFjdGl2ZSBidXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU4OGU1ICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uLmFjdGl2ZSBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmICFpbXBvcnRhbnQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgLndyYXAtYnV0dG9uLmFjdGl2ZSBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1ICFpbXBvcnRhbnQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIC53cmFwLWJ1dHRvbi5hY3RpdmUgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5vZmZsaW5lOmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZTUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5vZmZsaW5lOmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub25saW5lOmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub25saW5lOmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0N2NmOGQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnRlc3RuZXQge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC50ZXN0bmV0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLnRlc3RuZXQge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnN5bmNpbmcgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnN5bmNpbmcgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAuc3luY2luZyAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnByb2dyZXNzLWJhci1jb250YWluZXIgLmxvYWRpbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnByb2dyZXNzLWJhci1jb250YWluZXIgLmxvYWRpbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5sb2FkaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLmhlYWRlciBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLmhlYWRlciBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLmhlYWRlciBidXR0b24gLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5oZWFkZXIgLmFsaWFzIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC5oZWFkZXIgLmFsaWFzIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAuaGVhZGVyIC5hbGlhcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAuYWRkcmVzcyB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLmFkZHJlc3Mge1xuICBjb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAuYWRkcmVzcyB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLmFkZHJlc3MgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLmFkZHJlc3MgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC5hZGRyZXNzIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMywgMzEsIDM5LCAwLjUpOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzLCAyNSwgMjcsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyNCwgMjI0LCAyMjQsIDAuNSk7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7XG4gIGNvbG9yOiAjMTExOTIxOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7XG4gIGNvbG9yOiAjMWExYTFhOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAudGFicyAudGFicy1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3Qge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3Qge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2VuZCAuZm9ybS1zZW5kIC5zZW5kLXNlbGVjdCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2VuZCAuZm9ybS1zZW5kIC5zZW5kLXNlbGVjdCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJiMzY0NDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2VuZCAuZm9ybS1zZW5kIC5hZGRpdGlvbmFsLWRldGFpbHMge1xuICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmYzNDM4OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2VuZCAuZm9ybS1zZW5kIC5hZGRpdGlvbmFsLWRldGFpbHMge1xuICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjZWJlYmViOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1yZWNlaXZlIC5idG4tY29weS1hZGRyZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1yZWNlaXZlIC5idG4tY29weS1hZGRyZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNTI5MmQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisxKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4MjAyYTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjUyOTJkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMikge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0biszKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0biszKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rNCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cyAuY29uZmlybWF0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2Y0YTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzYzYTNlOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cyAuY29uZmlybWF0aW9uIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cyAuY29uZmlybWF0aW9uIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG5hcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnNlbmQgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbmFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMucmVjZWl2ZWQgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBjODUzOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLm5ldywgLnRoZW1lLWRhcmsgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uYWxlcnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmU1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLm5ldywgLnRoZW1lLWdyYXkgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uYWxlcnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmU1MjUyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5uZXcsIC50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5hbGVydCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24ucHVyY2hhc2UsIC50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnNlbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnB1cmNoYXNlLCAudGhlbWUtZ3JheSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5zZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24ucHVyY2hhc2UsIC50aGVtZS13aGl0ZSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5zZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc3RhdGVzIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zdGF0ZXMge1xuICBjb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zdGF0ZXMge1xuICBjb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5hZGRpdGlvbmFsLWRldGFpbHMge1xuICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmYzNDM4OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICNlYmViZWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzZjRhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM2M2EzZTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLnByb2dyZXNzLWJhci1mdWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLnByb2dyZXNzLWJhci1mdWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG5hcHAtbWVzc2FnZXMgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tZXNzYWdlcyB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZTUyNTI7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1lc3NhZ2VzIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1lc3NhZ2VzIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHlwaW5nLW1lc3NhZ2UgLmhlYWQgLmludGVybG9jdXRvciB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAuaGVhZCAuaW50ZXJsb2N1dG9yIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAuaGVhZCAuaW50ZXJsb2N1dG9yIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5kYXRlIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5kYXRlIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuZGF0ZSB7XG4gIGNvbG9yOiAjYTBhNWFiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmEzNTQ0OyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzAzNjNjOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfVxuXG5hcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogLTEuMXJlbTtcbiAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teTpiZWZvcmUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICMyYTM1NDQ7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teTpiZWZvcmUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICMzMDM2M2M7IH1cbiAgLnRoZW1lLXdoaXRlIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXk6YmVmb3JlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuYnVkZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTgyMDJhOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuYnVkZHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjUyOTJkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VkZWRlZDsgfVxuXG5hcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IC0xLjFyZW07XG4gIHRvcDogMDtcbiAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeTphZnRlciB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogIzE4MjAyYTsgfVxuICAudGhlbWUtZ3JheSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjMjUyOTJkOyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5OmFmdGVyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZWRlZGVkOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLmdlbmVyYWwgLmxhYmVsIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAubGFiZWwge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAubGFiZWwge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtaGVhZGVyIC5nZW5lcmFsIC5vcHRpb25zIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAub3B0aW9ucyB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc3Rha2luZyAuY2hhcnQtaGVhZGVyIC5nZW5lcmFsIC5vcHRpb25zIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuc2VsZWN0ZWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBmbGV4LWdyb3c6IDE7XG4gIGZvbnQtc2l6ZTogMS42cmVtOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC50aXRsZSB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC50aXRsZSB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAudGl0bGUge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAub3B0aW9ucyBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJiMzY0NDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAub3B0aW9ucyBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uIHtcbiAgY29sb3I6ICM0MzQ1NGI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC5vcHRpb25zIGJ1dHRvbi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG5cbi5oZWFkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xuICBwYWRkaW5nOiAwIDNyZW07XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDNyZW07IH1cbiAgLnRoZW1lLWRhcmsgLmhlYWQge1xuICAgIGNvbG9yOiAjNGRiMWZmOyB9XG4gIC50aGVtZS1ncmF5IC5oZWFkIHtcbiAgICBjb2xvcjogIzQyYTVmNTsgfVxuICAudGhlbWUtd2hpdGUgLmhlYWQge1xuICAgIGNvbG9yOiAjMmM5NWYxOyB9XG4gIC5oZWFkIC5icmVhZGNydW1icyA+IHNwYW46bm90KDpsYXN0LWNoaWxkKSwgLmhlYWQgLmJyZWFkY3J1bWJzIGE6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gICAgb3V0bGluZS1zdHlsZTogbm9uZTsgfVxuICAgIC5oZWFkIC5icmVhZGNydW1icyA+IHNwYW46bm90KDpsYXN0LWNoaWxkKTphZnRlciwgLmhlYWQgLmJyZWFkY3J1bWJzIGE6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDAuNXJlbTtcbiAgICAgIHJpZ2h0OiAtMS41cmVtO1xuICAgICAgd2lkdGg6IDAuOXJlbTtcbiAgICAgIGhlaWdodDogMC45cmVtO1xuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LXJpZ2h0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICAgIG1hc2stc2l6ZTogY292ZXI7IH1cbiAgICAgIC50aGVtZS1kYXJrIC5oZWFkIC5icmVhZGNydW1icyA+IHNwYW46bm90KDpsYXN0LWNoaWxkKTphZnRlciwgLnRoZW1lLWRhcmsgLmhlYWQgLmJyZWFkY3J1bWJzIGE6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgICAgIC50aGVtZS1ncmF5IC5oZWFkIC5icmVhZGNydW1icyA+IHNwYW46bm90KDpsYXN0LWNoaWxkKTphZnRlciwgLnRoZW1lLWdyYXkgLmhlYWQgLmJyZWFkY3J1bWJzIGE6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIsIC50aGVtZS13aGl0ZSAuaGVhZCAuYnJlYWRjcnVtYnMgYTpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuICAuaGVhZCAuYmFjay1idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogIzRkYjFmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBsaW5lLWhlaWdodDogMS4zcmVtO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgaGVpZ2h0OiBhdXRvOyB9XG4gICAgLmhlYWQgLmJhY2stYnRuIC5pY29uIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMC43cmVtO1xuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2JhY2suc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xuICAgICAgd2lkdGg6IDAuOXJlbTtcbiAgICAgIGhlaWdodDogMC45cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayAuaGVhZCAuYmFjay1idG4gLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG4gICAgICAudGhlbWUtZ3JheSAuaGVhZCAuYmFjay1idG4gLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLmhlYWQgLmJhY2stYnRuIC5pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4uc2Nyb2xsZWQtY29udGVudDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuICB3aWR0aDogMXJlbTtcbiAgaGVpZ2h0OiAxcmVtOyB9XG5cbi5zY3JvbGxlZC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG5cbi5zY3JvbGxlZC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7XG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XG4gIGJvcmRlcjogMC4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtOyB9XG5cbi5zY3JvbGxlZC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7IH1cblxudGFibGUge1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgd2lkdGg6IDEwMCU7IH1cbiAgdGFibGUgdGhlYWQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgICAudGhlbWUtZGFyayB0YWJsZSB0aGVhZCB7XG4gICAgICBjb2xvcjogIzU1NjU3NjsgfVxuICAgIC50aGVtZS1ncmF5IHRhYmxlIHRoZWFkIHtcbiAgICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gICAgLnRoZW1lLXdoaXRlIHRhYmxlIHRoZWFkIHtcbiAgICAgIGNvbG9yOiAjYTBhNWFiOyB9XG4gICAgdGFibGUgdGhlYWQgdHIge1xuICAgICAgaGVpZ2h0OiA0cmVtOyB9XG4gICAgICB0YWJsZSB0aGVhZCB0ciB0aCB7XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207IH1cbiAgICAgICAgdGFibGUgdGhlYWQgdHIgdGg6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogM3JlbTsgfVxuICAgICAgICB0YWJsZSB0aGVhZCB0ciB0aDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtOyB9XG4gIHRhYmxlIHRib2R5IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyB9XG4gICAgLnRoZW1lLWRhcmsgdGFibGUgdGJvZHkge1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtZ3JheSB0YWJsZSB0Ym9keSB7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS13aGl0ZSB0YWJsZSB0Ym9keSB7XG4gICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAgIHRhYmxlIHRib2R5IHRyIHtcbiAgICAgIGhlaWdodDogMy41cmVtOyB9XG4gICAgICAudGhlbWUtZGFyayB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxODIwMmE7IH1cbiAgICAgIC50aGVtZS1ncmF5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI1MjkyZDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuICAgICAgdGFibGUgdGJvZHkgdHIgdGQge1xuICAgICAgICBsaW5lLWhlaWdodDogMS43cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDFyZW07XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG1heC13aWR0aDogMjByZW07IH1cbiAgICAgICAgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogM3JlbTsgfVxuICAgICAgICB0YWJsZSB0Ym9keSB0ciB0ZDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogT3BlblNhbnM7XG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUxpZ2h0LnR0Zik7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtUmVndWxhci50dGYpO1xuICBmb250LXdlaWdodDogNDAwOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogT3BlblNhbnM7XG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLVNlbWlCb2xkLnR0Zik7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtQm9sZC50dGYpO1xuICBmb250LXdlaWdodDogNzAwOyB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogT3BlblNhbnM7XG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUV4dHJhQm9sZC50dGYpO1xuICBmb250LXdlaWdodDogODAwOyB9XG5cbmh0bWwge1xuICBmb250LWZhbWlseTogT3BlblNhbnMsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTBweDsgfVxuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuNnJlbTtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoOyB9XG4gIGJvZHkudGhlbWUtZGFyayB7XG4gICAgYmFja2dyb3VuZDogIzEzMTkyMSB1cmwoXCJhc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZGFyay5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOyB9XG4gIGJvZHkudGhlbWUtZ3JheSB7XG4gICAgYmFja2dyb3VuZDogIzEwMTQxNyB1cmwoXCJhc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZ3JheS5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOyB9XG4gIGJvZHkudGhlbWUtd2hpdGUge1xuICAgIGJhY2tncm91bmQ6ICNlZWVlZWUgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLXdoaXRlLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7IH1cbiAgYm9keSBhcHAtcm9vdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7IH1cbiIsIi5uZy1zZWxlY3Qubmctc2VsZWN0LW9wZW5lZD4ubmctc2VsZWN0LWNvbnRhaW5lcntiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLWNvbG9yOiNiM2IzYjMgI2NjYyAjZDlkOWQ5fS5uZy1zZWxlY3Qubmctc2VsZWN0LW9wZW5lZD4ubmctc2VsZWN0LWNvbnRhaW5lcjpob3Zlcntib3gtc2hhZG93Om5vbmV9Lm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkPi5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy1hcnJvd3t0b3A6LTJweDtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzk5OTtib3JkZXItd2lkdGg6MCA1cHggNXB4fS5uZy1zZWxlY3Qubmctc2VsZWN0LW9wZW5lZD4ubmctc2VsZWN0LWNvbnRhaW5lciAubmctYXJyb3c6aG92ZXJ7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzMzN9Lm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkLm5nLXNlbGVjdC1ib3R0b20+Lm5nLXNlbGVjdC1jb250YWluZXJ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6MDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjB9Lm5nLXNlbGVjdC5uZy1zZWxlY3Qtb3BlbmVkLm5nLXNlbGVjdC10b3A+Lm5nLXNlbGVjdC1jb250YWluZXJ7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjB9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtZm9jdXNlZDpub3QoLm5nLXNlbGVjdC1vcGVuZWQpPi5uZy1zZWxlY3QtY29udGFpbmVye2JvcmRlci1jb2xvcjojMDA3ZWZmO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsMC4wNzUpLDAgMCAwIDNweCByZ2JhKDAsMTI2LDI1NSwwLjEpfS5uZy1zZWxlY3Qubmctc2VsZWN0LWRpc2FibGVkPi5uZy1zZWxlY3QtY29udGFpbmVye2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOX0ubmctc2VsZWN0IC5uZy1oYXMtdmFsdWUgLm5nLXBsYWNlaG9sZGVye2Rpc3BsYXk6bm9uZX0ubmctc2VsZWN0IC5uZy1zZWxlY3QtY29udGFpbmVye2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjRweDtib3JkZXI6MXB4IHNvbGlkICNjY2M7bWluLWhlaWdodDozNnB4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubmctc2VsZWN0IC5uZy1zZWxlY3QtY29udGFpbmVyOmhvdmVye2JveC1zaGFkb3c6MCAxcHggMCByZ2JhKDAsMCwwLDAuMDYpfS5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lcnthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZy1sZWZ0OjEwcHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0IC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXJ7cGFkZGluZy1yaWdodDoxMHB4O3BhZGRpbmctbGVmdDowfS5uZy1zZWxlY3QgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctcGxhY2Vob2xkZXJ7Y29sb3I6Izk5OX0ubmctc2VsZWN0Lm5nLXNlbGVjdC1zaW5nbGUgLm5nLXNlbGVjdC1jb250YWluZXJ7aGVpZ2h0OjM2cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3Qtc2luZ2xlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLWlucHV0e3RvcDo1cHg7bGVmdDowO3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctcmlnaHQ6NTBweH1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3Qubmctc2VsZWN0LXNpbmdsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1pbnB1dHtwYWRkaW5nLXJpZ2h0OjEwcHg7cGFkZGluZy1sZWZ0OjUwcHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUubmctc2VsZWN0LWRpc2FibGVkPi5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVle2JhY2tncm91bmQtY29sb3I6I2Y5ZjlmOTtib3JkZXI6MXB4IHNvbGlkICNlNmU2ZTZ9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUubmctc2VsZWN0LWRpc2FibGVkPi5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1sYWJlbHtwYWRkaW5nOjAgNXB4fS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXJ7cGFkZGluZy10b3A6NXB4O3BhZGRpbmctbGVmdDo3cHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVye3BhZGRpbmctcmlnaHQ6N3B4O3BhZGRpbmctbGVmdDowfS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVle2ZvbnQtc2l6ZTowLjllbTttYXJnaW4tYm90dG9tOjVweDtiYWNrZ3JvdW5kLWNvbG9yOiNlYmY1ZmY7Ym9yZGVyLXJhZGl1czoycHg7bWFyZ2luLXJpZ2h0OjVweH1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVle21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjVweH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZS5uZy12YWx1ZS1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjl9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUubmctdmFsdWUtZGlzYWJsZWQgLm5nLXZhbHVlLWxhYmVse3BhZGRpbmctbGVmdDo1cHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZS5uZy12YWx1ZS1kaXNhYmxlZCAubmctdmFsdWUtbGFiZWx7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDo1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmc6MXB4IDVweH0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZSAubmctdmFsdWUtaWNvbntkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nOjFweCA1cHh9Lm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWljb246aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZDFlOGZmfS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1pY29uLmxlZnR7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjYjhkYmZmfVtkaXI9XCJydGxcIl0gLm5nLXNlbGVjdC5uZy1zZWxlY3QtbXVsdGlwbGUgLm5nLXNlbGVjdC1jb250YWluZXIgLm5nLXZhbHVlLWNvbnRhaW5lciAubmctdmFsdWUgLm5nLXZhbHVlLWljb24ubGVmdHtib3JkZXItbGVmdDoxcHggc29saWQgI2I4ZGJmZjtib3JkZXItcmlnaHQ6bm9uZX0ubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy12YWx1ZSAubmctdmFsdWUtaWNvbi5yaWdodHtib3JkZXItbGVmdDoxcHggc29saWQgI2I4ZGJmZn1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXZhbHVlIC5uZy12YWx1ZS1pY29uLnJpZ2h0e2JvcmRlci1sZWZ0OjA7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjYjhkYmZmfS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLWlucHV0e3BhZGRpbmc6MCAwIDNweCAzcHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1pbnB1dHtwYWRkaW5nOjAgM3B4IDNweCAwfS5uZy1zZWxlY3Qubmctc2VsZWN0LW11bHRpcGxlIC5uZy1zZWxlY3QtY29udGFpbmVyIC5uZy12YWx1ZS1jb250YWluZXIgLm5nLXBsYWNlaG9sZGVye3RvcDo1cHg7cGFkZGluZy1ib3R0b206NXB4O3BhZGRpbmctbGVmdDozcHh9W2Rpcj1cInJ0bFwiXSAubmctc2VsZWN0Lm5nLXNlbGVjdC1tdWx0aXBsZSAubmctc2VsZWN0LWNvbnRhaW5lciAubmctdmFsdWUtY29udGFpbmVyIC5uZy1wbGFjZWhvbGRlcntwYWRkaW5nLXJpZ2h0OjNweDtwYWRkaW5nLWxlZnQ6MH0ubmctc2VsZWN0IC5uZy1jbGVhci13cmFwcGVye2NvbG9yOiM5OTl9Lm5nLXNlbGVjdCAubmctY2xlYXItd3JhcHBlcjpob3ZlciAubmctY2xlYXJ7Y29sb3I6I0QwMDIxQn0ubmctc2VsZWN0IC5uZy1zcGlubmVyLXpvbmV7cGFkZGluZzo1cHggNXB4IDAgMH1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3QgLm5nLXNwaW5uZXItem9uZXtwYWRkaW5nOjVweCAwIDAgNXB4fS5uZy1zZWxlY3QgLm5nLWFycm93LXdyYXBwZXJ7d2lkdGg6MjVweDtwYWRkaW5nLXJpZ2h0OjVweH1bZGlyPVwicnRsXCJdIC5uZy1zZWxlY3QgLm5nLWFycm93LXdyYXBwZXJ7cGFkZGluZy1sZWZ0OjVweDtwYWRkaW5nLXJpZ2h0OjB9Lm5nLXNlbGVjdCAubmctYXJyb3ctd3JhcHBlcjpob3ZlciAubmctYXJyb3d7Ym9yZGVyLXRvcC1jb2xvcjojNjY2fS5uZy1zZWxlY3QgLm5nLWFycm93LXdyYXBwZXIgLm5nLWFycm93e2JvcmRlci1jb2xvcjojOTk5IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6NXB4IDVweCAyLjVweH0ubmctZHJvcGRvd24tcGFuZWx7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2NjYztib3gtc2hhZG93OjAgMXB4IDAgcmdiYSgwLDAsMCwwLjA2KTtsZWZ0OjB9Lm5nLWRyb3Bkb3duLXBhbmVsLm5nLXNlbGVjdC1ib3R0b217dG9wOjEwMCU7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtY29sb3I6I2U2ZTZlNjttYXJnaW4tdG9wOi0xcHh9Lm5nLWRyb3Bkb3duLXBhbmVsLm5nLXNlbGVjdC1ib3R0b20gLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb246bGFzdC1jaGlsZHtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHh9Lm5nLWRyb3Bkb3duLXBhbmVsLm5nLXNlbGVjdC10b3B7Ym90dG9tOjEwMCU7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tY29sb3I6I2U2ZTZlNjttYXJnaW4tYm90dG9tOi0xcHh9Lm5nLWRyb3Bkb3duLXBhbmVsLm5nLXNlbGVjdC10b3AgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb246Zmlyc3QtY2hpbGR7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4fS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24taGVhZGVye2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNjY2M7cGFkZGluZzo1cHggN3B4fS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tZm9vdGVye2JvcmRlci10b3A6MXB4IHNvbGlkICNjY2M7cGFkZGluZzo1cHggN3B4fS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXN7bWFyZ2luLWJvdHRvbToxcHh9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0Z3JvdXB7dXNlci1zZWxlY3Q6bm9uZTtwYWRkaW5nOjhweCAxMHB4O2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjpyZ2JhKDAsMCwwLDAuNTQpO2N1cnNvcjpwb2ludGVyfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGdyb3VwLm5nLW9wdGlvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRncm91cC5uZy1vcHRpb24tbWFya2Vke2JhY2tncm91bmQtY29sb3I6I2Y1ZmFmZn0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRncm91cC5uZy1vcHRpb24tc2VsZWN0ZWQsLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0Z3JvdXAubmctb3B0aW9uLXNlbGVjdGVkLm5nLW9wdGlvbi1tYXJrZWR7YmFja2dyb3VuZC1jb2xvcjojZWJmNWZmO2ZvbnQtd2VpZ2h0OjYwMH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb257YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOnJnYmEoMCwwLDAsMC44Nyk7cGFkZGluZzo4cHggMTBweH0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLXNlbGVjdGVkLC5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tc2VsZWN0ZWQubmctb3B0aW9uLW1hcmtlZHtjb2xvcjojMzMzO2JhY2tncm91bmQtY29sb3I6I2ViZjVmZn0ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLXNlbGVjdGVkIC5uZy1vcHRpb24tbGFiZWwsLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1zZWxlY3RlZC5uZy1vcHRpb24tbWFya2VkIC5uZy1vcHRpb24tbGFiZWx7Zm9udC13ZWlnaHQ6NjAwfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tbWFya2Vke2JhY2tncm91bmQtY29sb3I6I2Y1ZmFmZjtjb2xvcjojMzMzfS5uZy1kcm9wZG93bi1wYW5lbCAubmctZHJvcGRvd24tcGFuZWwtaXRlbXMgLm5nLW9wdGlvbi5uZy1vcHRpb24tZGlzYWJsZWR7Y29sb3I6I2NjY30ubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24ubmctb3B0aW9uLWNoaWxke3BhZGRpbmctbGVmdDoyMnB4fVtkaXI9XCJydGxcIl0gLm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uLm5nLW9wdGlvbi1jaGlsZHtwYWRkaW5nLXJpZ2h0OjIycHg7cGFkZGluZy1sZWZ0OjB9Lm5nLWRyb3Bkb3duLXBhbmVsIC5uZy1kcm9wZG93bi1wYW5lbC1pdGVtcyAubmctb3B0aW9uIC5uZy10YWctbGFiZWx7Zm9udC1zaXplOjgwJTtmb250LXdlaWdodDo0MDA7cGFkZGluZy1yaWdodDo1cHh9W2Rpcj1cInJ0bFwiXSAubmctZHJvcGRvd24tcGFuZWwgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIC5uZy1vcHRpb24gLm5nLXRhZy1sYWJlbHtwYWRkaW5nLWxlZnQ6NXB4O3BhZGRpbmctcmlnaHQ6MH1bZGlyPVwicnRsXCJdIC5uZy1kcm9wZG93bi1wYW5lbHtkaXJlY3Rpb246cnRsO3RleHQtYWxpZ246cmlnaHR9XG4iLCIvLyogKioqKioqKiByZXNldCAmIG5vcm1hbGl6ZSAqKioqKioqICAqLy9cclxuXHJcbi8vIGJveC1zaXppbmcgdGhlIHNhbWUgZm9yIGFsbCBlbGVtZW50c1xyXG5odG1sIHtcclxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xyXG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XHJcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBpbmhlcml0O1xyXG4gIC1tb3otYm94LXNpemluZzogaW5oZXJpdDtcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxuICBAaW5jbHVkZSB1blNlbGVjdDtcclxufVxyXG5cclxuaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxyXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXHJcbmEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcclxuZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxyXG5zbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxyXG5iLCB1LCBpLCBjZW50ZXIsXHJcbmRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXHJcbmZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxyXG50YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcclxuYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsXHJcbmZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcclxubWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXHJcbnRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XHJcbiAgICBib3JkZXI6IDA7XHJcbiAgICBmb250LXNpemU6IDEwMCU7XHJcbiAgICBmb250OiBpbmhlcml0O1xyXG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xyXG59XHJcbmFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsXHJcbmZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgc2VjdGlvbiB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuYm9keSB7XHJcbiAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxub2wsIHVsIHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbn1cclxuYmxvY2txdW90ZSwgcSB7XHJcbiAgICBxdW90ZXM6IG5vbmU7XHJcbn1cclxuYmxvY2txdW90ZTpiZWZvcmUsIGJsb2NrcXVvdGU6YWZ0ZXIsXHJcbnE6YmVmb3JlLCBxOmFmdGVyIHtcclxuICAgIGNvbnRlbnQ6IG5vbmU7XHJcbn1cclxuXHJcbi8vdGFibGVcclxudGFibGUge1xyXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICAgIGJvcmRlci1zcGFjaW5nOiAwO1xyXG59XHJcbnRkLFxyXG50aCB7XHJcbiAgcGFkZGluZzogMDtcclxufVxyXG5cclxuLy9mb3JtcyBlbGVtZW50XHJcbmlucHV0IHtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAmOi13ZWJraXQtYXV0b2ZpbGwge1xyXG4gICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAwIDEwMDBweCB3aGl0ZSBpbnNldDtcclxuICAgIH1cclxufVxyXG5cclxuYnV0dG9uLFxyXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sXHJcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcclxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuYnV0dG9uW2Rpc2FibGVkXSxcclxuaHRtbCBpbnB1dFtkaXNhYmxlZF0ge1xyXG4gIGN1cnNvcjogZGVmYXVsdDtcclxufVxyXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXHJcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcclxuICBib3JkZXI6IDA7XHJcbiAgcGFkZGluZzogMDtcclxufVxyXG5pbnB1dCB7XHJcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcclxufVxyXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcclxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxufVxyXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxyXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbn1cclxuXHJcblxyXG4vL2xpbmtcclxuYSB7XHJcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG5cdCY6YWN0aXZlLFxyXG5cdCY6aG92ZXIsXHJcblx0Jjpmb2N1cyB7XHJcblx0XHRvdXRsaW5lOiAwO1xyXG5cdH1cclxufVxyXG5cclxuaSB7IGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxyXG5iLCBzdHJvbmcgeyBmb250LXdlaWdodDogNzAwOyAgIH1cclxuXHJcbi8vIGltYWdlc1xyXG5pbWcge1xyXG5cdHdpZHRoOiBhdXRvO1xyXG5cdG1heC13aWR0aDogMTAwJTtcclxuXHRoZWlnaHQ6IGF1dG87XHJcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuXHRib3JkZXI6IDA7XHJcbn1cclxuXHJcbi5oaWRkZW4ge1xyXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG4iLCIuYXBwLWNvbnRlbnQge1xyXG5cclxuICAucHJlbG9hZGVyIHtcclxuXHJcbiAgICAubG9hZGluZy1iYXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmJ1dHRvbiB7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEuNXJlbTtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgcGFkZGluZzogMCAxcmVtO1xyXG4gIGhlaWdodDogNC4ycmVtO1xyXG5cclxuICAmOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChkaXNhYmxlZEJ1dHRvbkJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGRpc2FibGVkQnV0dG9uSG92ZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xyXG5cclxuICAgICYuZXJyb3ItdGV4dCB7XHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZUJ1dHRvbkJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVCdXR0b25Ib3ZlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCkge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZ3JlZW5CdXR0b25CYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChncmVlbkJ1dHRvbkhvdmVyQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodHVycXVvaXNlQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodHVycXVvaXNlQnV0dG9uSG92ZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYudHJhbnNwYXJlbnQtYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XHJcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDEuN3JlbTtcclxuICAgICAgaGVpZ2h0OiAxLjdyZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLmlucHV0LWJsb2NrIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC40cmVtO1xyXG5cclxuICAud3JhcC1sYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIG1pbi1oZWlnaHQ6IDIuNHJlbTtcclxuICB9XHJcblxyXG4gIGxhYmVsIHtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDIuNHJlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dFt0eXBlPSd0ZXh0J10sIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIHNlbGVjdCB7XHJcbiAgICBib3JkZXI6IG5vbmU7XHJcbiAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogNC4ycmVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi50ZXh0YXJlYSB7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcblxyXG4gICAgdGV4dGFyZWEge1xyXG4gICAgICBmb250LWZhbWlseTogT3BlblNhbnMsIHNhbnMtc2VyaWY7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICAgIG91dGxpbmU6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDFyZW07XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBtaW4td2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgbWluLWhlaWdodDogNy41cmVtO1xyXG4gICAgICBtYXgtaGVpZ2h0OiA3LjVyZW07XHJcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gICAgICByZXNpemU6IG5vbmU7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5lcnJvci1ibG9jayB7XHJcbiAgICBmb250LXNpemU6IDFyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS40cmVtO1xyXG4gICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmVycm9yLXRleHQge1xyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gIH1cclxufVxyXG5cclxuaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyB7XHJcblxyXG4gICYgKyBsYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgdW5TZWxlY3Q7XHJcbiAgfVxyXG5cclxuICAmOm5vdChjaGVja2VkKSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG5cclxuICAgICYgKyBsYWJlbCB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICAmICsgbGFiZWw6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwLjdyZW07XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgIHdpZHRoOiAxLjRyZW07XHJcbiAgICAgIGhlaWdodDogMS40cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJiArIGxhYmVsOmFmdGVyIHtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAxcmVtO1xyXG4gICAgICBsZWZ0OiAwLjNyZW07XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgd2lkdGg6IDAuOHJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjhyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6Y2hlY2tlZCB7XHJcblxyXG4gICAgJiArIGxhYmVsOmFmdGVyIHtcclxuICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3gge1xyXG5cclxuICAmICsgbGFiZWwge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAzLjZyZW07XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIHVuU2VsZWN0O1xyXG4gIH1cclxuXHJcbiAgJjpub3QoY2hlY2tlZCkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiA1MCU7XHJcbiAgICBsZWZ0OiAxLjZyZW07XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcblxyXG4gICAgJiArIGxhYmVsIHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgfVxyXG5cclxuICAgICYgKyBsYWJlbDpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiAnJztcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDUwJTtcclxuICAgICAgbGVmdDogMS42cmVtO1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICB3aWR0aDogMS40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuNHJlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkIHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpjaGVja2VkIHtcclxuXHJcbiAgICAmICsgbGFiZWw6YmVmb3JlIHtcclxuICAgICAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLnN3aXRjaCB7XHJcblxyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHN3aXRjaEJhY2tncm91bmRDb2xvcik7XHJcbiAgfVxyXG5cclxuICAuY2lyY2xlIHtcclxuXHJcbiAgICAmLm9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYub2ZmIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi50YWJsZS10b29sdGlwIHtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuICBwYWRkaW5nOiAxcmVtIDJyZW07XHJcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQ6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgIGJveC1zaGFkb3c6IHRoZW1lZCh0b29sdGlwU2hhZG93KTtcclxuICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtdG9wIHtcclxuICAgIG1hcmdpbi10b3A6IC0xcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IC0ycmVtO1xyXG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDFyZW0pO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDFyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXRvcC1sZWZ0IHtcclxuICAgIG1hcmdpbi10b3A6IC0xcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IC0xcmVtO1xyXG4gICAgICBsZWZ0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMXJlbSAxcmVtIDAgMDtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtdG9wLXJpZ2h0IHtcclxuICAgIG1hcmdpbi10b3A6IC0xcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBib3R0b206IC0xcmVtO1xyXG4gICAgICByaWdodDogMC43cmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWJvdHRvbSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IC0ycmVtO1xyXG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDFyZW0pO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDFyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWJvdHRvbS1sZWZ0IHtcclxuICAgIG1hcmdpbi10b3A6IDFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogLTFyZW07XHJcbiAgICAgIGxlZnQ6IDAuN3JlbTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1ib3R0b20tcmlnaHQge1xyXG4gICAgbWFyZ2luLXRvcDogMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAtMXJlbTtcclxuICAgICAgcmlnaHQ6IDAuN3JlbTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1sZWZ0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICByaWdodDogLTFyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMXJlbSAxcmVtIDAgMDtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtcmlnaHQge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgbGVmdDogLTFyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMXJlbSAwIDAgMXJlbTtcclxuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uYmFsYW5jZS10b29sdGlwIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgcGFkZGluZzogMS4zcmVtO1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQ6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKTtcclxuICAgIGJveC1zaGFkb3c6IHRoZW1lZCh0b29sdGlwU2hhZG93KTtcclxuICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtdG9wIHtcclxuICAgIG1hcmdpbi10b3A6IC0xcmVtO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWJvdHRvbSB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLWxlZnQge1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXJpZ2h0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgLmF2YWlsYWJsZSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxLjdyZW07XHJcblxyXG4gICAgYiB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubG9ja2VkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuN3JlbTtcclxuXHJcbiAgICBiIHtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5saW5rIHtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5hY2NvdW50LXRvb2x0aXAge1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcbiAgbWF4LXdpZHRoOiAxOHJlbTtcclxufVxyXG5cclxuLm5neC1jb250ZXh0bWVudSB7XHJcblxyXG4gIC5kcm9wZG93bi1tZW51IHtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIHBhZGRpbmc6IDA7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBib3gtc2hhZG93OiB0aGVtZWQodG9vbHRpcFNoYWRvdyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsaSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICAgIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICB9XHJcblxyXG4gIGEge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiAwLjVlbSAxZW07XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2hhcnRPcHRpb25zSG92ZXJDb2xvcik7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLm5nLXNlbGVjdCB7XHJcblxyXG4gICYubG9jay1zZWxlY3Rpb24tc2VsZWN0IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG5cclxuICAgIC5uZy1zZWxlY3QtY29udGFpbmVyIHtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgICAgIGhlaWdodDogNC4ycmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAubmctdmFsdWUtY29udGFpbmVyIHtcclxuICAgICAgICBwYWRkaW5nOiAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm5nLWRyb3Bkb3duLXBhbmVsIHtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLm5nLWRyb3Bkb3duLXBhbmVsLWl0ZW1zIHtcclxuXHJcbiAgICAgICAgLm5nLW9wdGlvbiB7XHJcbiAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgICAgICAgIHBhZGRpbmc6IDFyZW07XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJi5uZy1vcHRpb24tbWFya2VkIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzZWxlY3RIb3ZlckNvbG9yKTtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJi5uZy1vcHRpb24tc2VsZWN0ZWQge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHNlbGVjdFNlbGVjdGVkQ29sb3IpO1xyXG4gICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1tb2RhbC1jb250YWluZXIge1xyXG5cclxuICAubW9kYWwge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtZWQobW9kYWxCYWNrZ3JvdW5kKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuY29udGVudCB7XHJcblxyXG4gICAgICAuaWNvbi5lcnJvciB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAuaWNvbi5zdWNjZXNzIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZ3JlZW5UZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24uaW5mbyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5hY3Rpb24tYnV0dG9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5jbG9zZS1idXR0b24ge1xyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjbG9zZUJ1dHRvbkNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIHtcclxuXHJcbiAgLnRhYmxlIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAucm93IHtcclxuXHJcbiAgICAgIC5jZWxsIHtcclxuXHJcbiAgICAgICAgJi5sYWJlbCB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi52YWx1ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmtleS12YWx1ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtcHJvZ3Jlc3MtY29udGFpbmVyIHtcclxuXHJcbiAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC5wcm9ncmVzcy1iYXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLnByb2dyZXNzLWJhci1mdWxsIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiJHRoZW1lczogKFxyXG4gIGRhcms6IChcclxuICAgIGJvZHlCYWNrZ3JvdW5kQ29sb3I6ICMxMzE5MjEsXHJcbiAgICBzaWRlYmFyQmFja2dyb3VuZENvbG9yOiByZ2JhKDIzLCAzMSwgMzksIDAuNSksXHJcbiAgICBzaWRlYmFyQm9yZGVyQ29sb3I6ICMxZjI4MzMsXHJcbiAgICBvbmxpbmVDb2xvcjogIzVjZGE5ZCxcclxuICAgIG9mZmxpbmVDb2xvcjogI2ZlNTI1MixcclxuICAgIGNvbnRlbnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KSxcclxuICAgIG1haW5UZXh0Q29sb3I6ICNlMGUwZTAsXHJcbiAgICBhbHRlcm5hdGl2ZVRleHRDb2xvcjogIzExMTkyMSxcclxuICAgIG9wdGlvbmFsVGV4dENvbG9yOiAjNTU2NTc2LFxyXG4gICAgYmx1ZVRleHRDb2xvcjogIzRkYjFmZixcclxuICAgIGdyZWVuVGV4dENvbG9yOiAjNWNkYTlkLFxyXG4gICAgcmVkVGV4dENvbG9yOiAjZmU1MjUyLFxyXG4gICAgYmx1ZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzRkYjFmZixcclxuICAgIGJsdWVCdXR0b25Ib3ZlckNvbG9yOiAjNjBiOWZmLFxyXG4gICAgZGlzYWJsZWRCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM5MGE0YWUsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkhvdmVyQ29sb3I6ICM5YmIwYmEsXHJcbiAgICBncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzVjZGE5ZCxcclxuICAgIGdyZWVuQnV0dG9uSG92ZXJDb2xvcjogIzVjZTJhMSxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzRkZDBlMSxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3I6ICM1MmQ5ZWEsXHJcbiAgICB0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yOiAjMmIzNjQ0LFxyXG4gICAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICMxNzFlMjcsXHJcbiAgICBzZWxlY3RIb3ZlckNvbG9yOiByZ2JhKDU4LCA3MiwgOTAsIDAuNSksXHJcbiAgICBzZWxlY3RTZWxlY3RlZENvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSksXHJcbiAgICBzd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICMwMDAwMDAsXHJcbiAgICBhY2NvdW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSksXHJcbiAgICBhY2NvdW50SG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoNTgsIDcyLCA5MCwgMC41KSxcclxuICAgIGFjY291bnRNYWluVGV4dENvbG9yOiAjZTBlMGUwLFxyXG4gICAgYWNjb3VudE9wdGlvbmFsVGV4dENvbG9yOiAjNTU2NTc2LFxyXG4gICAgYWNjb3VudEluZGljYXRvclRleHRDb2xvcjogIzExMTkyMSxcclxuICAgIGFjY291bnRTd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICMwMDAwMDAsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yOiAjNGRiMWZmLFxyXG4gICAgdGFiSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMC41KSxcclxuICAgIHRhYmxlQmFja2dyb3VuZENvbG9yOiAjMTgyMDJhLFxyXG4gICAgbWVzc2FnZU15QmFja2dyb3VuZENvbG9yOiAjMmEzNTQ0LFxyXG4gICAgbWVzc2FnZUJ1ZGR5QmFja2dyb3VuZENvbG9yOiAjMTgyMDJhLFxyXG4gICAgcHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3I6ICMzNDNmNGEsXHJcbiAgICBwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3I6ICM1Y2RhOWQsXHJcbiAgICBjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3I6ICMyYjM2NDQsXHJcbiAgICBjaGFydE9wdGlvbnNIb3ZlckNvbG9yOiAjNTU2NTc2LFxyXG4gICAgdG9vbHRpcEJhY2tncm91bmRDb2xvcjogIzQyNTA1ZixcclxuICAgIHRvb2x0aXBTaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KSxcclxuICAgIG1vZGFsQmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWRhcmsucG5nKSxcclxuICAgIGNsb3NlQnV0dG9uQ29sb3I6ICM1NTY1NzZcclxuICApLFxyXG4gIGdyYXk6IChcclxuICAgIGJvZHlCYWNrZ3JvdW5kQ29sb3I6ICMxMDE0MTcsXHJcbiAgICBzaWRlYmFyQmFja2dyb3VuZENvbG9yOiByZ2JhKDIzLCAyNSwgMjcsIDAuNSksXHJcbiAgICBzaWRlYmFyQm9yZGVyQ29sb3I6ICMyZTMzMzcsXHJcbiAgICBvbmxpbmVDb2xvcjogIzQ3Y2Y4ZCxcclxuICAgIG9mZmxpbmVDb2xvcjogI2ZmNTI1MixcclxuICAgIGNvbnRlbnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KSxcclxuICAgIG1haW5UZXh0Q29sb3I6ICNlMGUwZTAsXHJcbiAgICBhbHRlcm5hdGl2ZVRleHRDb2xvcjogIzFhMWExYSxcclxuICAgIG9wdGlvbmFsVGV4dENvbG9yOiAjNTY1YzYyLFxyXG4gICAgYmx1ZVRleHRDb2xvcjogIzQyYTVmNSxcclxuICAgIGdyZWVuVGV4dENvbG9yOiAjNDdjZjhkLFxyXG4gICAgcmVkVGV4dENvbG9yOiAjZmU1MjUyLFxyXG4gICAgYmx1ZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzQyYTVmNSxcclxuICAgIGJsdWVCdXR0b25Ib3ZlckNvbG9yOiAjNGRhZmZmLFxyXG4gICAgZGlzYWJsZWRCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM3OTg0OGYsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkhvdmVyQ29sb3I6ICM4NTkwOWIsXHJcbiAgICBncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzQ3Y2Y4ZCxcclxuICAgIGdyZWVuQnV0dG9uSG92ZXJDb2xvcjogIzQ5ZDk5MyxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzNlYzVkNyxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3I6ICM0M2NlZTAsXHJcbiAgICB0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yOiAjMmYzNDM4LFxyXG4gICAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICMyOTJkMzEsXHJcbiAgICBzZWxlY3RIb3ZlckNvbG9yOiByZ2JhKDcwLCA3NiwgODEsIDAuNSksXHJcbiAgICBzZWxlY3RTZWxlY3RlZENvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSksXHJcbiAgICBzd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICMwMDAwMDAsXHJcbiAgICBhY2NvdW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSksXHJcbiAgICBhY2NvdW50SG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoNzAsIDc2LCA4MSwgMC41KSxcclxuICAgIGFjY291bnRNYWluVGV4dENvbG9yOiAjZTBlMGUwLFxyXG4gICAgYWNjb3VudE9wdGlvbmFsVGV4dENvbG9yOiAjNTY1YzYyLFxyXG4gICAgYWNjb3VudEluZGljYXRvclRleHRDb2xvcjogIzFhMWExYSxcclxuICAgIGFjY291bnRTd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICMwMDAwMDAsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yOiAjNDJhNWY1LFxyXG4gICAgdGFiSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjMsIDI1LCAyNywgMC41KSxcclxuICAgIHRhYmxlQmFja2dyb3VuZENvbG9yOiAjMjUyOTJkLFxyXG4gICAgbWVzc2FnZU15QmFja2dyb3VuZENvbG9yOiAjMzAzNjNjLFxyXG4gICAgbWVzc2FnZUJ1ZGR5QmFja2dyb3VuZENvbG9yOiAjMjUyOTJkLFxyXG4gICAgcHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3I6ICMzNjNhM2UsXHJcbiAgICBwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3I6ICM0N2NmOGQsXHJcbiAgICBjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3I6ICMyOTJkMzEsXHJcbiAgICBjaGFydE9wdGlvbnNIb3ZlckNvbG9yOiAjNTE1OTYwLFxyXG4gICAgdG9vbHRpcEJhY2tncm91bmRDb2xvcjogIzNlNDY0YyxcclxuICAgIHRvb2x0aXBTaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KSxcclxuICAgIG1vZGFsQmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nKSxcclxuICAgIGNsb3NlQnV0dG9uQ29sb3I6ICM1MTU5NjBcclxuICApLFxyXG4gIHdoaXRlOiAoXHJcbiAgICBib2R5QmFja2dyb3VuZENvbG9yOiAjZWVlZWVlLFxyXG4gICAgc2lkZWJhckJhY2tncm91bmRDb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpLFxyXG4gICAgc2lkZWJhckJvcmRlckNvbG9yOiAjZWJlYmViLFxyXG4gICAgb25saW5lQ29sb3I6ICM0NmMxNzIsXHJcbiAgICBvZmZsaW5lQ29sb3I6ICNmZjUyNTIsXHJcbiAgICBjb250ZW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSksXHJcbiAgICBtYWluVGV4dENvbG9yOiAjNDM0NTRiLFxyXG4gICAgYWx0ZXJuYXRpdmVUZXh0Q29sb3I6ICNmZWZlZmUsXHJcbiAgICBvcHRpb25hbFRleHRDb2xvcjogI2EwYTVhYixcclxuICAgIGJsdWVUZXh0Q29sb3I6ICMyYzk1ZjEsXHJcbiAgICBncmVlblRleHRDb2xvcjogIzQ2YzE3MixcclxuICAgIHJlZFRleHRDb2xvcjogI2ZmNTI1MixcclxuICAgIGJsdWVCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICMyYzk1ZjEsXHJcbiAgICBibHVlQnV0dG9uSG92ZXJDb2xvcjogIzM3OWZmYSxcclxuICAgIGRpc2FibGVkQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjOTBhNGFlLFxyXG4gICAgZGlzYWJsZWRCdXR0b25Ib3ZlckNvbG9yOiAjOWJhZWI3LFxyXG4gICAgZ3JlZW5CdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM0NmMxNzIsXHJcbiAgICBncmVlbkJ1dHRvbkhvdmVyQ29sb3I6ICM0NmNhNzUsXHJcbiAgICB0dXJxdW9pc2VCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICMyNmI2YzcsXHJcbiAgICB0dXJxdW9pc2VCdXR0b25Ib3ZlckNvbG9yOiAjMmJiZGNmLFxyXG4gICAgdHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcjogI2ViZWJlYixcclxuICAgIGlucHV0QmFja2dyb3VuZENvbG9yOiAjZTZlNmU2LFxyXG4gICAgc2VsZWN0SG92ZXJDb2xvcjogcmdiYSgyNDAsIDI0MCwgMjQwLCAwLjUpLFxyXG4gICAgc2VsZWN0U2VsZWN0ZWRDb2xvcjogcmdiYSgyMjQsIDIyNCwgMjI0LCAwLjUpLFxyXG4gICAgc3dpdGNoQmFja2dyb3VuZENvbG9yOiAjZTBlMGUwLFxyXG4gICAgYWNjb3VudEJhY2tncm91bmRDb2xvcjogcmdiYSgzMCwgMTM2LCAyMjksIDEpLFxyXG4gICAgYWNjb3VudEhvdmVyQmFja2dyb3VuZENvbG9yOiByZ2JhKDI0MCwgMjQwLCAyNDAsIDAuNSksXHJcbiAgICBhY2NvdW50TWFpblRleHRDb2xvcjogI2ZmZmZmZixcclxuICAgIGFjY291bnRPcHRpb25hbFRleHRDb2xvcjogIzkxYmFmMSxcclxuICAgIGFjY291bnRJbmRpY2F0b3JUZXh0Q29sb3I6ICM0MzQ1NGIsXHJcbiAgICBhY2NvdW50U3dpdGNoQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcjogI2ZmZmZmZixcclxuICAgIHRhYkluYWN0aXZlQmFja2dyb3VuZENvbG9yOiByZ2JhKDIyNCwgMjI0LCAyMjQsIDAuNSksXHJcbiAgICB0YWJsZUJhY2tncm91bmRDb2xvcjogI2ZmZmZmZixcclxuICAgIG1lc3NhZ2VNeUJhY2tncm91bmRDb2xvcjogI2ZmZixcclxuICAgIG1lc3NhZ2VCdWRkeUJhY2tncm91bmRDb2xvcjogI2VkZWRlZCxcclxuICAgIHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yOiAjZGNkY2RjLFxyXG4gICAgcHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yOiAjNDZjMTcyLFxyXG4gICAgY2hhcnRPcHRpb25zQmFja2dyb3VuZENvbG9yOiAjZTBlMGUwLFxyXG4gICAgY2hhcnRPcHRpb25zSG92ZXJDb2xvcjogI2ZmZmZmZixcclxuICAgIHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3I6ICNmZmZmZmYsXHJcbiAgICB0b29sdGlwU2hhZG93OiAwIDAgMXJlbSByZ2JhKDEyMCwgMTIwLCAxMjAsIDAuNSksXHJcbiAgICBtb2RhbEJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmcpLFxyXG4gICAgY2xvc2VCdXR0b25Db2xvcjogIzQzNDU0YlxyXG4gIClcclxuKTtcclxuXHJcblxyXG5cclxuXHJcblxyXG4iLCJhcHAtbWFpbiwgYXBwLWNyZWF0ZS13YWxsZXQsIGFwcC1vcGVuLXdhbGxldCwgYXBwLXJlc3RvcmUtd2FsbGV0LCBhcHAtc2VlZC1waHJhc2UsIGFwcC13YWxsZXQtZGV0YWlscywgYXBwLWFzc2lnbi1hbGlhcywgYXBwLWVkaXQtYWxpYXMsIGFwcC10cmFuc2Zlci1hbGlhcywgYXBwLXNldHRpbmdzLCBhcHAtbG9naW4ge1xyXG4gIGZsZXg6IDEgMSBhdXRvO1xyXG4gIHBhZGRpbmc6IDNyZW07XHJcbiAgbWluLXdpZHRoOiA4NXJlbTtcclxuXHJcbiAgLmNvbnRlbnQge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgcGFkZGluZzogM3JlbTtcclxuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuaGVhZCB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLW1haW4ge1xyXG5cclxuICAuY29udGVudCB7XHJcblxyXG4gICAgLmFkZC13YWxsZXQge1xyXG5cclxuICAgICAgLmFkZC13YWxsZXQtaGVscCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXNlZWQtcGhyYXNlIHtcclxuXHJcbiAgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtd2FsbGV0LWRldGFpbHMge1xyXG5cclxuICAuc2VlZC1waHJhc2Uge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoaW5wdXRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXNldHRpbmdzIHtcclxuXHJcbiAgLmNvbnRlbnQge1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cclxuICAgIC50aGVtZS1zZWxlY3Rpb24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2NhbGUtc2VsZWN0aW9uIHtcclxuXHJcbiAgICAgIC5idXR0b24tYmxvY2sge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubGFiZWwge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWN0aXZlIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5sYWJlbCB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbG9naW4ge1xyXG4gIG1pbi13aWR0aDogaW5oZXJpdDtcclxufVxyXG4iLCJhcHAtc2lkZWJhciB7XHJcblxyXG4gIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHNpZGViYXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLnNpZGViYXItYWNjb3VudHMge1xyXG5cclxuICAgIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciB7XHJcblxyXG4gICAgICBoMyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2lkZWJhci1hY2NvdW50cy1saXN0IHtcclxuXHJcbiAgICAgIC5zaWRlYmFyLWFjY291bnQge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zaWRlYmFyLWFjY291bnQtcm93IHtcclxuXHJcbiAgICAgICAgICAudGV4dCB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5pbmRpY2F0b3Ige1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVCdXR0b25CYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG5cclxuICAgICAgICAgICAgLnByb2dyZXNzLWJhciB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIC5maWxsIHtcclxuXHJcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJi5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY3RpdmUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudE1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5zaWRlYmFyLWFjY291bnQtcm93IHtcclxuXHJcbiAgICAgICAgICAgIC50ZXh0IHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFjY291bnRPcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAuaW5kaWNhdG9yIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFjY291bnRJbmRpY2F0b3JUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLnN3aXRjaCB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRTd2l0Y2hCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICYuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudE9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6aG92ZXI6bm90KC5hY3RpdmUpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRIb3ZlckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc2lkZWJhci1zZXR0aW5ncyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCB0aGVtZWQoc2lkZWJhckJvcmRlckNvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAud3JhcC1idXR0b24ge1xyXG5cclxuICAgICAgYnV0dG9uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgIGJ1dHRvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50QmFja2dyb3VuZENvbG9yKSFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudE1haW5UZXh0Q29sb3IpIWltcG9ydGFudDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcikhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnN0YXR1cy1jb250YWluZXIge1xyXG5cclxuICAgICAgLm9mZmxpbmU6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQob2ZmbGluZUNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5vbmxpbmU6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQob25saW5lQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLnRlc3RuZXQge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG5cclxuICAgICAgLnN5bmNpbmcge1xyXG5cclxuICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuZmlsbCB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmxvYWRpbmcge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJhcHAtd2FsbGV0IHtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmhlYWRlciB7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmFsaWFzIHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWRkcmVzcyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGFicyB7XHJcblxyXG4gICAgLnRhYnMtaGVhZGVyIHtcclxuXHJcbiAgICAgIC50YWIge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pbmRpY2F0b3Ige1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvclRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudGFicy1jb250ZW50IHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXNlbmQge1xyXG5cclxuICAuZm9ybS1zZW5kIHtcclxuXHJcbiAgICAuc2VuZC1zZWxlY3Qge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWRkaXRpb25hbC1kZXRhaWxzIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXJlY2VpdmUge1xyXG5cclxuICAuYnRuLWNvcHktYWRkcmVzcyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1oaXN0b3J5IHtcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMSkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMikge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMykge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDRuKzQpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc3RhdHVzIHtcclxuXHJcbiAgICAgICAgICAuY29uZmlybWF0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5maWxsIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMuc2VuZCAge1xyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMucmVjZWl2ZWQge1xyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwYzg1MztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1jb250cmFjdHMge1xyXG5cclxuICAud3JhcC10YWJsZSB7XHJcblxyXG4gICAgLmNvbnRyYWN0IHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgJi5uZXcsICYuYWxlcnQge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYucHVyY2hhc2UsICYuc2VsbCB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1wdXJjaGFzZSB7XHJcblxyXG4gIC5mb3JtLXB1cmNoYXNlIHtcclxuXHJcbiAgICAucHVyY2hhc2Utc2VsZWN0IHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbWVzc2FnZXMge1xyXG5cclxuICB0YWJsZSB7XHJcblxyXG4gICAgdGJvZHkge1xyXG5cclxuICAgICAgdHIge1xyXG5cclxuICAgICAgICB0ZDpmaXJzdC1jaGlsZCB7XHJcblxyXG4gICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC10eXBpbmctbWVzc2FnZSB7XHJcblxyXG4gIC5oZWFkIHtcclxuXHJcbiAgICAuaW50ZXJsb2N1dG9yIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5tZXNzYWdlcy1jb250ZW50IHtcclxuXHJcbiAgICAubWVzc2FnZXMtbGlzdCB7XHJcblxyXG4gICAgICBkaXYge1xyXG5cclxuICAgICAgICAmLmRhdGUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubXkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQobWVzc2FnZU15QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG87XHJcbiAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgbGVmdDogLTEuMXJlbTtcclxuICAgICAgICAgICAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtZWQobWVzc2FnZU15QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5idWRkeSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICY6YWZ0ZXIge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgcHNldWRvO1xyXG4gICAgICAgICAgICByaWdodDogLTEuMXJlbTtcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICBib3JkZXI6IDEuMnJlbSBzb2xpZCB0cmFuc3BhcmVudDtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHRoZW1lZChtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtc3Rha2luZyB7XHJcblxyXG4gIC5jaGFydC1oZWFkZXIge1xyXG5cclxuICAgIC5nZW5lcmFsIHtcclxuXHJcbiAgICAgIC5sYWJlbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAub3B0aW9ucyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2VsZWN0ZWQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmNoYXJ0LW9wdGlvbnMge1xyXG5cclxuICAgIC50aXRsZSB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vcHRpb25zIHtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY3RpdmUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2hhcnRPcHRpb25zSG92ZXJDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi5oZWFkIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgcGFkZGluZzogMCAzcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogM3JlbTtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmJyZWFkY3J1bWJzIHtcclxuXHJcbiAgICA+IHNwYW4sIGEge1xyXG5cclxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxuICAgICAgICBvdXRsaW5lLXN0eWxlOiBub25lO1xyXG5cclxuICAgICAgICAmOmFmdGVyIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG87XHJcbiAgICAgICAgICB0b3A6IDAuNXJlbTtcclxuICAgICAgICAgIHJpZ2h0OiAtMS41cmVtO1xyXG4gICAgICAgICAgd2lkdGg6IDAuOXJlbTtcclxuICAgICAgICAgIGhlaWdodDogMC45cmVtO1xyXG4gICAgICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2Fycm93LXJpZ2h0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgICAgIG1hc2stc2l6ZTogY292ZXI7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5iYWNrLWJ0biB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgY29sb3I6ICM0ZGIxZmY7XHJcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuM3JlbTtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcblxyXG4gICAgLmljb24ge1xyXG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuN3JlbTtcclxuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2JhY2suc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB3aWR0aDogMC45cmVtO1xyXG4gICAgICBoZWlnaHQ6IDAuOXJlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIuc2Nyb2xsZWQtY29udGVudCB7XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgd2lkdGg6IDFyZW07XHJcbiAgICBoZWlnaHQ6IDFyZW07XHJcbiAgfVxyXG5cclxuICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICB9XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7XHJcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG4gICAgYm9yZGVyOiAwLjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xyXG4gIH1cclxuXHJcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcclxuICB9XHJcbn1cclxuIiwidGFibGUge1xyXG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICB0aGVhZCB7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICB0ciB7XHJcbiAgICAgIGhlaWdodDogNHJlbTtcclxuXHJcbiAgICAgIHRoIHtcclxuICAgICAgICBwYWRkaW5nOiAxcmVtO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XHJcblxyXG4gICAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0Ym9keSB7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyIHtcclxuICAgICAgaGVpZ2h0OiAzLjVyZW07XHJcblxyXG4gICAgICAmOm50aC1jaGlsZChvZGQpIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGQge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjdyZW07XHJcbiAgICAgICAgcGFkZGluZzogMCAxcmVtO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgICBtYXgtd2lkdGg6IDIwcmVtO1xyXG5cclxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogM3JlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIvLyBCQVNFXHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2Jhc2UvbWl4aW5zJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvYmFzZS9udWxsJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvYmFzZS90aGVtZSc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2Jhc2UvYmFzZSc7XHJcblxyXG4vLyBMQVlPVVRcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbGF5b3V0L21haW4nO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9sYXlvdXQvc2V0dGluZ3MnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9sYXlvdXQvc2lkZWJhcic7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2xheW91dC93YWxsZXQnO1xyXG5cclxuLy8gTU9EVUxFU1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9tb2R1bGVzL2hlYWQnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9tb2R1bGVzL3Njcm9sbCc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL21vZHVsZXMvdGFibGUnO1xyXG5cclxuQGltcG9ydCBcIn5Abmctc2VsZWN0L25nLXNlbGVjdC90aGVtZXMvZGVmYXVsdC50aGVtZS5jc3NcIjtcclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1MaWdodC50dGYpO1xyXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1SZWd1bGFyLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLVNlbWlCb2xkLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUJvbGQudHRmKTtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogT3BlblNhbnM7XHJcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtRXh0cmFCb2xkLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDgwMDtcclxufVxyXG5cclxuXHJcbmh0bWwge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbn1cclxuXHJcbmJvZHkge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEuNnJlbTtcclxuICB3aWR0aDogMTAwdnc7XHJcbiAgaGVpZ2h0OiAxMDB2aDtcclxuXHJcbiAgJi50aGVtZS1kYXJrIHtcclxuICAgIGJhY2tncm91bmQ6ICMxMzE5MjEgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWRhcmsucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIH1cclxuXHJcbiAgJi50aGVtZS1ncmF5IHtcclxuICAgIGJhY2tncm91bmQ6ICMxMDE0MTcgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIH1cclxuXHJcbiAgJi50aGVtZS13aGl0ZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlIHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgfVxyXG5cclxuICBhcHAtcm9vdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG59XHJcbiJdfQ== */", '', '']] /***/ }), @@ -557,7 +557,7 @@ if(false) {} /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(/*! D:\Projects\Zano\src\gui\qt-daemon\html_source\src\styles.scss */"./src/styles.scss"); +module.exports = __webpack_require__(/*! D:\zano_zano\src\gui\qt-daemon\html_source\src\styles.scss */"./src/styles.scss"); /***/ }) diff --git a/src/gui/qt-daemon/html/styles.js.map b/src/gui/qt-daemon/html/styles.js.map index 39fd76e4..baa818c1 100644 --- a/src/gui/qt-daemon/html/styles.js.map +++ b/src/gui/qt-daemon/html/styles.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/styles.scss","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./src/styles.scss?4266"],"names":[],"mappings":"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;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA,KAAK,KAAwC,EAAE,EAE7C;;AAEF,QAAQ,sBAAiB;AACzB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;;;;;;AC9YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,WAAW,EAAE;AACrD,wCAAwC,WAAW,EAAE;;AAErD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,sCAAsC;AACtC,GAAG;AACH;AACA,8DAA8D;AAC9D;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;;;;;;;;;;;;ACvFA,cAAc,mBAAO,CAAC,4ZAA0N;;AAEhP,4CAA4C,QAAS;;AAErD;AACA;;;;AAIA,eAAe;;AAEf;AACA;;AAEA,aAAa,mBAAO,CAAC,mGAAgD;;AAErE;;AAEA,GAAG,KAAU,EAAE,E","file":"styles.js","sourcesContent":["module.exports = [[module.id, \"/*\\r\\n* Implementation of themes\\r\\n*/\\nhtml {\\n box-sizing: border-box;\\n -webkit-box-sizing: border-box;\\n -moz-box-sizing: border-box; }\\n*, *:before, *:after {\\n box-sizing: inherit;\\n -webkit-box-sizing: inherit;\\n -moz-box-sizing: inherit;\\n margin: 0;\\n padding: 0;\\n -webkit-touch-collout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\nhtml, body, div, span, applet, object, iframe,\\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\\na, abbr, acronym, address, big, cite, code,\\ndel, dfn, em, img, ins, kbd, q, s, samp,\\nsmall, strike, strong, sub, sup, tt, var,\\nb, u, i, center,\\ndl, dt, dd, ol, ul, li,\\nfieldset, form, label, legend,\\ntable, caption, tbody, tfoot, thead, tr, th, td,\\narticle, aside, canvas, details, embed,\\nfigure, figcaption, footer, header, hgroup,\\nmenu, nav, output, ruby, section, summary,\\ntime, mark, audio, video {\\n border: 0;\\n font-size: 100%;\\n font: inherit;\\n vertical-align: baseline; }\\narticle, aside, details, figcaption, figure,\\nfooter, header, hgroup, menu, nav, section {\\n display: block; }\\nbody {\\n line-height: 1;\\n font-style: normal; }\\nol, ul {\\n list-style: none; }\\nblockquote, q {\\n quotes: none; }\\nblockquote:before, blockquote:after,\\nq:before, q:after {\\n content: none; }\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0; }\\ntd,\\nth {\\n padding: 0; }\\ninput {\\n outline: none; }\\ninput:-webkit-autofill {\\n -webkit-box-shadow: 0 0 0 1000px white inset; }\\nbutton,\\nhtml input[type=\\\"button\\\"],\\ninput[type=\\\"reset\\\"],\\ninput[type=\\\"submit\\\"] {\\n -webkit-appearance: button;\\n cursor: pointer;\\n outline: none; }\\nbutton[disabled],\\nhtml input[disabled] {\\n cursor: default; }\\nbutton::-moz-focus-inner,\\ninput::-moz-focus-inner {\\n border: 0;\\n padding: 0; }\\ninput {\\n line-height: normal; }\\ninput[type=\\\"search\\\"] {\\n -webkit-appearance: textfield;\\n box-sizing: content-box; }\\ninput[type=\\\"search\\\"]::-webkit-search-cancel-button,\\ninput[type=\\\"search\\\"]::-webkit-search-decoration {\\n -webkit-appearance: none; }\\na {\\n text-decoration: none; }\\na:active, a:hover, a:focus {\\n outline: 0; }\\ni {\\n font-style: italic; }\\nb, strong {\\n font-weight: 700; }\\nimg {\\n width: auto;\\n max-width: 100%;\\n height: auto;\\n vertical-align: top;\\n border: 0; }\\n.hidden {\\n display: none !important; }\\nbutton {\\n border: none;\\n font-family: OpenSans, sans-serif;\\n font-size: 1.5rem;\\n font-weight: 600;\\n outline: none;\\n padding: 0 1rem;\\n height: 4.2rem; }\\n.theme-dark button:disabled:not(.transparent-button) {\\n background-color: #90a4ae;\\n color: #111921; }\\n.theme-gray button:disabled:not(.transparent-button) {\\n background-color: #79848f;\\n color: #1a1a1a; }\\n.theme-white button:disabled:not(.transparent-button) {\\n background-color: #90a4ae;\\n color: #fefefe; }\\n.theme-dark button:disabled:not(.transparent-button):hover {\\n background-color: #9bb0ba; }\\n.theme-gray button:disabled:not(.transparent-button):hover {\\n background-color: #85909b; }\\n.theme-white button:disabled:not(.transparent-button):hover {\\n background-color: #9baeb7; }\\n.theme-dark button.blue-button:not(:disabled) {\\n background-color: #4db1ff;\\n color: #111921; }\\n.theme-gray button.blue-button:not(:disabled) {\\n background-color: #42a5f5;\\n color: #1a1a1a; }\\n.theme-white button.blue-button:not(:disabled) {\\n background-color: #2c95f1;\\n color: #fefefe; }\\n.theme-dark button.blue-button:not(:disabled):hover {\\n background-color: #60b9ff; }\\n.theme-gray button.blue-button:not(:disabled):hover {\\n background-color: #4dafff; }\\n.theme-white button.blue-button:not(:disabled):hover {\\n background-color: #379ffa; }\\n.theme-dark button.green-button:not(:disabled) {\\n background-color: #5cda9d;\\n color: #111921; }\\n.theme-gray button.green-button:not(:disabled) {\\n background-color: #47cf8d;\\n color: #1a1a1a; }\\n.theme-white button.green-button:not(:disabled) {\\n background-color: #46c172;\\n color: #fefefe; }\\n.theme-dark button.green-button:not(:disabled):hover {\\n background-color: #5ce2a1; }\\n.theme-gray button.green-button:not(:disabled):hover {\\n background-color: #49d993; }\\n.theme-white button.green-button:not(:disabled):hover {\\n background-color: #46ca75; }\\n.theme-dark button.turquoise-button:not(:disabled) {\\n background-color: #4dd0e1;\\n color: #111921; }\\n.theme-gray button.turquoise-button:not(:disabled) {\\n background-color: #3ec5d7;\\n color: #1a1a1a; }\\n.theme-white button.turquoise-button:not(:disabled) {\\n background-color: #26b6c7;\\n color: #fefefe; }\\n.theme-dark button.turquoise-button:not(:disabled):hover {\\n background-color: #52d9ea; }\\n.theme-gray button.turquoise-button:not(:disabled):hover {\\n background-color: #43cee0; }\\n.theme-white button.turquoise-button:not(:disabled):hover {\\n background-color: #2bbdcf; }\\nbutton.transparent-button {\\n display: flex;\\n align-items: center;\\n justify-content: center; }\\n.theme-dark button.transparent-button {\\n background-color: transparent;\\n border: 0.2rem solid #2b3644;\\n color: #e0e0e0; }\\n.theme-gray button.transparent-button {\\n background-color: transparent;\\n border: 0.2rem solid #2f3438;\\n color: #e0e0e0; }\\n.theme-white button.transparent-button {\\n background-color: transparent;\\n border: 0.2rem solid #ebebeb;\\n color: #43454b; }\\nbutton.transparent-button .icon {\\n margin-right: 1rem;\\n -webkit-mask: url('complete-testwallet.svg') no-repeat center;\\n mask: url('complete-testwallet.svg') no-repeat center;\\n width: 1.7rem;\\n height: 1.7rem; }\\n.theme-dark button.transparent-button .icon {\\n background-color: #e0e0e0; }\\n.theme-gray button.transparent-button .icon {\\n background-color: #e0e0e0; }\\n.theme-white button.transparent-button .icon {\\n background-color: #43454b; }\\n.input-block {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n margin-bottom: 0.4rem; }\\n.input-block .wrap-label {\\n display: flex;\\n align-items: center;\\n justify-content: flex-start;\\n min-height: 2.4rem; }\\n.input-block label {\\n font-size: 1.3rem;\\n line-height: 2.4rem; }\\n.theme-dark .input-block label {\\n color: #556576; }\\n.theme-gray .input-block label {\\n color: #565c62; }\\n.theme-white .input-block label {\\n color: #a0a5ab; }\\n.input-block input[type='text'], .input-block input[type='password'], .input-block select {\\n border: none;\\n font-size: 1.4rem;\\n outline: none;\\n padding: 0 1rem;\\n width: 100%;\\n height: 4.2rem; }\\n.theme-dark .input-block input[type='text'], .theme-dark .input-block input[type='password'], .theme-dark .input-block select {\\n background-color: #171e27;\\n color: #e0e0e0; }\\n.theme-gray .input-block input[type='text'], .theme-gray .input-block input[type='password'], .theme-gray .input-block select {\\n background-color: #292d31;\\n color: #e0e0e0; }\\n.theme-white .input-block input[type='text'], .theme-white .input-block input[type='password'], .theme-white .input-block select {\\n background-color: #e6e6e6;\\n color: #43454b; }\\n.input-block.textarea {\\n height: auto; }\\n.input-block.textarea textarea {\\n font-family: OpenSans, sans-serif;\\n border: none;\\n font-size: 1.4rem;\\n outline: none;\\n padding: 1rem;\\n width: 100%;\\n min-width: 100%;\\n height: 100%;\\n min-height: 7.5rem;\\n max-height: 7.5rem;\\n overflow: hidden;\\n resize: none; }\\n.theme-dark .input-block.textarea textarea {\\n background-color: #171e27;\\n color: #e0e0e0; }\\n.theme-gray .input-block.textarea textarea {\\n background-color: #292d31;\\n color: #e0e0e0; }\\n.theme-white .input-block.textarea textarea {\\n background-color: #e6e6e6;\\n color: #43454b; }\\n.input-block .error-block {\\n font-size: 1rem;\\n line-height: 1.4rem;\\n align-self: flex-end;\\n text-align: right; }\\n.theme-dark .input-block .error-block {\\n color: #fe5252; }\\n.theme-gray .input-block .error-block {\\n color: #fe5252; }\\n.theme-white .input-block .error-block {\\n color: #ff5252; }\\ninput[type='radio'].style-radio + label {\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n font-weight: 400;\\n padding-left: 2.4rem;\\n -webkit-touch-collout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n.theme-dark input[type='radio'].style-radio + label {\\n color: #556576; }\\n.theme-gray input[type='radio'].style-radio + label {\\n color: #565c62; }\\n.theme-white input[type='radio'].style-radio + label {\\n color: #a0a5ab; }\\ninput[type='radio'].style-radio:not(checked) {\\n position: absolute;\\n opacity: 0; }\\ninput[type='radio'].style-radio:not(checked) + label {\\n position: relative; }\\ninput[type='radio'].style-radio:not(checked) + label:before {\\n content: '';\\n position: absolute;\\n top: 0.7rem;\\n left: 0;\\n background: transparent;\\n border-radius: 50%;\\n width: 1.4rem;\\n height: 1.4rem; }\\n.theme-dark input[type='radio'].style-radio:not(checked) + label:before {\\n border: 0.1rem solid #4db1ff; }\\n.theme-gray input[type='radio'].style-radio:not(checked) + label:before {\\n border: 0.1rem solid #42a5f5; }\\n.theme-white input[type='radio'].style-radio:not(checked) + label:before {\\n border: 0.1rem solid #2c95f1; }\\ninput[type='radio'].style-radio:not(checked) + label:after {\\n content: '';\\n position: absolute;\\n top: 1rem;\\n left: 0.3rem;\\n border-radius: 50%;\\n opacity: 0;\\n width: 0.8rem;\\n height: 0.8rem; }\\n.theme-dark input[type='radio'].style-radio:not(checked) + label:after {\\n background-color: #4db1ff; }\\n.theme-gray input[type='radio'].style-radio:not(checked) + label:after {\\n background-color: #42a5f5; }\\n.theme-white input[type='radio'].style-radio:not(checked) + label:after {\\n background-color: #2c95f1; }\\ninput[type='radio'].style-radio:checked + label:after {\\n opacity: 1; }\\ninput[type='checkbox'].style-checkbox + label {\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n font-weight: 400;\\n padding-left: 3.6rem;\\n -webkit-touch-collout: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n.theme-dark input[type='checkbox'].style-checkbox + label {\\n color: #556576; }\\n.theme-gray input[type='checkbox'].style-checkbox + label {\\n color: #565c62; }\\n.theme-white input[type='checkbox'].style-checkbox + label {\\n color: #a0a5ab; }\\ninput[type='checkbox'].style-checkbox:not(checked) {\\n position: absolute;\\n top: 50%;\\n left: 1.6rem;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n visibility: hidden; }\\ninput[type='checkbox'].style-checkbox:not(checked) + label {\\n position: relative; }\\ninput[type='checkbox'].style-checkbox:not(checked) + label:before {\\n content: '';\\n position: absolute;\\n top: 50%;\\n left: 1.6rem;\\n -webkit-transform: translateY(-50%);\\n transform: translateY(-50%);\\n background: transparent;\\n width: 1.4rem;\\n height: 1.4rem; }\\n.theme-dark input[type='checkbox'].style-checkbox:not(checked) + label:before {\\n border: 0.1rem solid #4db1ff; }\\n.theme-gray input[type='checkbox'].style-checkbox:not(checked) + label:before {\\n border: 0.1rem solid #42a5f5; }\\n.theme-white input[type='checkbox'].style-checkbox:not(checked) + label:before {\\n border: 0.1rem solid #2c95f1; }\\ninput[type='checkbox'].style-checkbox:checked + label:before {\\n background: url('complete-testwallet.svg'); }\\n.theme-dark input[type='checkbox'].style-checkbox:checked + label:before {\\n background-color: #4db1ff; }\\n.theme-gray input[type='checkbox'].style-checkbox:checked + label:before {\\n background-color: #42a5f5; }\\n.theme-white input[type='checkbox'].style-checkbox:checked + label:before {\\n background-color: #2c95f1; }\\n.theme-dark .switch {\\n background-color: #000000; }\\n.theme-gray .switch {\\n background-color: #000000; }\\n.theme-white .switch {\\n background-color: #e0e0e0; }\\n.theme-dark .switch .circle.on {\\n background-color: #4db1ff; }\\n.theme-gray .switch .circle.on {\\n background-color: #42a5f5; }\\n.theme-white .switch .circle.on {\\n background-color: #2c95f1; }\\n.theme-dark .switch .circle.off {\\n background-color: #556576; }\\n.theme-gray .switch .circle.off {\\n background-color: #565c62; }\\n.theme-white .switch .circle.off {\\n background-color: #a0a5ab; }\\n.table-tooltip {\\n font-size: 1.3rem;\\n padding: 1rem 2rem;\\n white-space: pre-wrap; }\\n.theme-dark .table-tooltip {\\n background: #42505f;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\\n color: #e0e0e0; }\\n.theme-gray .table-tooltip {\\n background: #3e464c;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\\n color: #e0e0e0; }\\n.theme-white .table-tooltip {\\n background: #ffffff;\\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\\n color: #43454b; }\\n.table-tooltip.ng-tooltip-top {\\n margin-top: -1rem; }\\n.table-tooltip.ng-tooltip-top:before {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: -2rem;\\n left: calc(50% - 1rem);\\n border-width: 1rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-top:before {\\n border-color: #42505f transparent transparent transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-top:before {\\n border-color: #3e464c transparent transparent transparent; }\\n.theme-white .table-tooltip.ng-tooltip-top:before {\\n border-color: #ffffff transparent transparent transparent; }\\n.table-tooltip.ng-tooltip-top-left {\\n margin-top: -1rem; }\\n.table-tooltip.ng-tooltip-top-left:before {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: -1rem;\\n left: 0.7rem;\\n border-width: 1rem 1rem 0 0;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-top-left:before {\\n border-color: #42505f transparent transparent transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-top-left:before {\\n border-color: #3e464c transparent transparent transparent; }\\n.theme-white .table-tooltip.ng-tooltip-top-left:before {\\n border-color: #ffffff transparent transparent transparent; }\\n.table-tooltip.ng-tooltip-top-right {\\n margin-top: -1rem; }\\n.table-tooltip.ng-tooltip-top-right:before {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: -1rem;\\n right: 0.7rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-top-right:before {\\n border-color: #42505f #42505f transparent transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-top-right:before {\\n border-color: #3e464c #3e464c transparent transparent; }\\n.theme-white .table-tooltip.ng-tooltip-top-right:before {\\n border-color: #ffffff #ffffff transparent transparent; }\\n.table-tooltip.ng-tooltip-bottom {\\n margin-top: 1rem; }\\n.table-tooltip.ng-tooltip-bottom:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: -2rem;\\n left: calc(50% - 1rem);\\n border-width: 1rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-bottom:before {\\n border-color: transparent transparent #42505f transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-bottom:before {\\n border-color: transparent transparent #3e464c transparent; }\\n.theme-white .table-tooltip.ng-tooltip-bottom:before {\\n border-color: transparent transparent #ffffff transparent; }\\n.table-tooltip.ng-tooltip-bottom-left {\\n margin-top: 1rem; }\\n.table-tooltip.ng-tooltip-bottom-left:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: -1rem;\\n left: 0.7rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-bottom-left:before {\\n border-color: transparent transparent #42505f #42505f; }\\n.theme-gray .table-tooltip.ng-tooltip-bottom-left:before {\\n border-color: transparent transparent #3e464c #3e464c; }\\n.theme-white .table-tooltip.ng-tooltip-bottom-left:before {\\n border-color: transparent transparent #ffffff #ffffff; }\\n.table-tooltip.ng-tooltip-bottom-right {\\n margin-top: 1rem; }\\n.table-tooltip.ng-tooltip-bottom-right:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: -1rem;\\n right: 0.7rem;\\n border-width: 0.5rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-bottom-right:before {\\n border-color: transparent #42505f #42505f transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-bottom-right:before {\\n border-color: transparent #3e464c #3e464c transparent; }\\n.theme-white .table-tooltip.ng-tooltip-bottom-right:before {\\n border-color: transparent #ffffff #ffffff transparent; }\\n.table-tooltip.ng-tooltip-left {\\n margin-left: -1rem; }\\n.table-tooltip.ng-tooltip-left:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n right: -1rem;\\n border-width: 1rem 1rem 0 0;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-left:before {\\n border-color: #42505f transparent transparent transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-left:before {\\n border-color: #3e464c transparent transparent transparent; }\\n.theme-white .table-tooltip.ng-tooltip-left:before {\\n border-color: #ffffff transparent transparent transparent; }\\n.table-tooltip.ng-tooltip-right {\\n margin-left: 1rem; }\\n.table-tooltip.ng-tooltip-right:before {\\n content: \\\"\\\";\\n position: absolute;\\n top: 0;\\n left: -1rem;\\n border-width: 1rem 0 0 1rem;\\n border-style: solid; }\\n.theme-dark .table-tooltip.ng-tooltip-right:before {\\n border-color: #42505f transparent transparent transparent; }\\n.theme-gray .table-tooltip.ng-tooltip-right:before {\\n border-color: #3e464c transparent transparent transparent; }\\n.theme-white .table-tooltip.ng-tooltip-right:before {\\n border-color: #ffffff transparent transparent transparent; }\\n.balance-tooltip {\\n display: flex;\\n flex-direction: column;\\n font-size: 1.3rem;\\n padding: 1.3rem; }\\n.theme-dark .balance-tooltip {\\n background: #42505f;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\\n color: #e0e0e0; }\\n.theme-gray .balance-tooltip {\\n background: #3e464c;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5);\\n color: #e0e0e0; }\\n.theme-white .balance-tooltip {\\n background: #ffffff;\\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5);\\n color: #43454b; }\\n.balance-tooltip.ng-tooltip-top {\\n margin-top: -1rem; }\\n.balance-tooltip.ng-tooltip-bottom {\\n margin-top: 1rem; }\\n.balance-tooltip.ng-tooltip-left {\\n margin-left: -1rem; }\\n.balance-tooltip.ng-tooltip-right {\\n margin-left: 1rem; }\\n.balance-tooltip .available {\\n margin-bottom: 1.7rem; }\\n.balance-tooltip .available b {\\n font-weight: 600; }\\n.balance-tooltip .locked {\\n margin-bottom: 0.7rem; }\\n.balance-tooltip .locked b {\\n font-weight: 600; }\\n.balance-tooltip .link {\\n cursor: pointer; }\\n.theme-dark .balance-tooltip .link {\\n color: #4db1ff; }\\n.theme-gray .balance-tooltip .link {\\n color: #42a5f5; }\\n.theme-white .balance-tooltip .link {\\n color: #2c95f1; }\\n.ngx-contextmenu .dropdown-menu {\\n border: none;\\n padding: 0; }\\n.theme-dark .ngx-contextmenu .dropdown-menu {\\n background-color: #2b3644;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\\n.theme-gray .ngx-contextmenu .dropdown-menu {\\n background-color: #292d31;\\n box-shadow: 0 0 1rem rgba(0, 0, 0, 0.5); }\\n.theme-white .ngx-contextmenu .dropdown-menu {\\n background-color: #e0e0e0;\\n box-shadow: 0 0 1rem rgba(120, 120, 120, 0.5); }\\n.ngx-contextmenu li {\\n display: block;\\n font-family: OpenSans, sans-serif;\\n font-size: 1.3rem;\\n text-transform: uppercase;\\n text-align: center; }\\n.ngx-contextmenu a {\\n display: block;\\n padding: 0.5em 1em; }\\n.theme-dark .ngx-contextmenu a {\\n color: #e0e0e0; }\\n.theme-gray .ngx-contextmenu a {\\n color: #e0e0e0; }\\n.theme-white .ngx-contextmenu a {\\n color: #43454b; }\\n.theme-dark .ngx-contextmenu a:hover {\\n background-color: #556576;\\n color: #e0e0e0; }\\n.theme-gray .ngx-contextmenu a:hover {\\n background-color: #515960;\\n color: #e0e0e0; }\\n.theme-white .ngx-contextmenu a:hover {\\n background-color: #ffffff;\\n color: #43454b; }\\n.theme-dark app-modal-container .modal {\\n background: url('background-dark.png');\\n color: #e0e0e0; }\\n.theme-gray app-modal-container .modal {\\n background: url('background-gray.png');\\n color: #e0e0e0; }\\n.theme-white app-modal-container .modal {\\n background: url('background-white.png');\\n color: #43454b; }\\n.theme-dark app-modal-container .modal .content .icon.error {\\n background-color: #fe5252; }\\n.theme-gray app-modal-container .modal .content .icon.error {\\n background-color: #fe5252; }\\n.theme-white app-modal-container .modal .content .icon.error {\\n background-color: #ff5252; }\\n.theme-dark app-modal-container .modal .content .icon.success {\\n background-color: #5cda9d; }\\n.theme-gray app-modal-container .modal .content .icon.success {\\n background-color: #47cf8d; }\\n.theme-white app-modal-container .modal .content .icon.success {\\n background-color: #46c172; }\\n.theme-dark app-modal-container .modal .content .icon.info {\\n background-color: #4db1ff; }\\n.theme-gray app-modal-container .modal .content .icon.info {\\n background-color: #42a5f5; }\\n.theme-white app-modal-container .modal .content .icon.info {\\n background-color: #2c95f1; }\\n.theme-dark app-modal-container .modal .action-button {\\n background-color: #4db1ff;\\n color: #111921; }\\n.theme-gray app-modal-container .modal .action-button {\\n background-color: #42a5f5;\\n color: #1a1a1a; }\\n.theme-white app-modal-container .modal .action-button {\\n background-color: #2c95f1;\\n color: #fefefe; }\\n.theme-dark app-modal-container .modal .close-button .icon {\\n background-color: #556576; }\\n.theme-gray app-modal-container .modal .close-button .icon {\\n background-color: #515960; }\\n.theme-white app-modal-container .modal .close-button .icon {\\n background-color: #43454b; }\\n.theme-dark app-transaction-details .table {\\n border-top: 0.2rem solid #2b3644; }\\n.theme-gray app-transaction-details .table {\\n border-top: 0.2rem solid #2f3438; }\\n.theme-white app-transaction-details .table {\\n border-top: 0.2rem solid #ebebeb; }\\n.theme-dark app-transaction-details .table .row .cell.label {\\n color: #556576; }\\n.theme-gray app-transaction-details .table .row .cell.label {\\n color: #565c62; }\\n.theme-white app-transaction-details .table .row .cell.label {\\n color: #a0a5ab; }\\n.theme-dark app-transaction-details .table .row .cell.value {\\n color: #e0e0e0; }\\n.theme-gray app-transaction-details .table .row .cell.value {\\n color: #e0e0e0; }\\n.theme-white app-transaction-details .table .row .cell.value {\\n color: #43454b; }\\n.theme-dark app-transaction-details .table .row .cell.key-value {\\n color: #4db1ff; }\\n.theme-gray app-transaction-details .table .row .cell.key-value {\\n color: #42a5f5; }\\n.theme-white app-transaction-details .table .row .cell.key-value {\\n color: #2c95f1; }\\napp-main, app-create-wallet, app-open-wallet, app-restore-wallet, app-seed-phrase, app-wallet-details, app-assign-alias, app-edit-alias, app-transfer-alias, app-settings, app-login {\\n flex: 1 1 auto;\\n padding: 3rem;\\n min-width: 85rem; }\\napp-main .content, app-create-wallet .content, app-open-wallet .content, app-restore-wallet .content, app-seed-phrase .content, app-wallet-details .content, app-assign-alias .content, app-edit-alias .content, app-transfer-alias .content, app-settings .content, app-login .content {\\n position: relative;\\n padding: 3rem;\\n min-height: 100%; }\\n.theme-dark app-main .content, .theme-dark app-create-wallet .content, .theme-dark app-open-wallet .content, .theme-dark app-restore-wallet .content, .theme-dark app-seed-phrase .content, .theme-dark app-wallet-details .content, .theme-dark app-assign-alias .content, .theme-dark app-edit-alias .content, .theme-dark app-transfer-alias .content, .theme-dark app-settings .content, .theme-dark app-login .content {\\n background-color: rgba(43, 54, 68, 0.5);\\n color: #e0e0e0; }\\n.theme-gray app-main .content, .theme-gray app-create-wallet .content, .theme-gray app-open-wallet .content, .theme-gray app-restore-wallet .content, .theme-gray app-seed-phrase .content, .theme-gray app-wallet-details .content, .theme-gray app-assign-alias .content, .theme-gray app-edit-alias .content, .theme-gray app-transfer-alias .content, .theme-gray app-settings .content, .theme-gray app-login .content {\\n background-color: rgba(37, 40, 43, 0.5);\\n color: #e0e0e0; }\\n.theme-white app-main .content, .theme-white app-create-wallet .content, .theme-white app-open-wallet .content, .theme-white app-restore-wallet .content, .theme-white app-seed-phrase .content, .theme-white app-wallet-details .content, .theme-white app-assign-alias .content, .theme-white app-edit-alias .content, .theme-white app-transfer-alias .content, .theme-white app-settings .content, .theme-white app-login .content {\\n background-color: rgba(255, 255, 255, 0.5);\\n color: #43454b; }\\napp-main .content .head, app-create-wallet .content .head, app-open-wallet .content .head, app-restore-wallet .content .head, app-seed-phrase .content .head, app-wallet-details .content .head, app-assign-alias .content .head, app-edit-alias .content .head, app-transfer-alias .content .head, app-settings .content .head, app-login .content .head {\\n position: absolute;\\n top: 0;\\n left: 0; }\\n.theme-dark app-main .content .add-wallet .add-wallet-help {\\n color: #4db1ff; }\\n.theme-gray app-main .content .add-wallet .add-wallet-help {\\n color: #42a5f5; }\\n.theme-white app-main .content .add-wallet .add-wallet-help {\\n color: #2c95f1; }\\n.theme-dark app-main .content .add-wallet .add-wallet-help .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-main .content .add-wallet .add-wallet-help .icon {\\n background-color: #42a5f5; }\\n.theme-white app-main .content .add-wallet .add-wallet-help .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-seed-phrase .seed-phrase-content {\\n background-color: #171e27;\\n color: #e0e0e0; }\\n.theme-gray app-seed-phrase .seed-phrase-content {\\n background-color: #292d31;\\n color: #e0e0e0; }\\n.theme-white app-seed-phrase .seed-phrase-content {\\n background-color: #e6e6e6;\\n color: #43454b; }\\n.theme-dark app-wallet-details .seed-phrase {\\n background-color: #171e27; }\\n.theme-gray app-wallet-details .seed-phrase {\\n background-color: #292d31; }\\n.theme-white app-wallet-details .seed-phrase {\\n background-color: #e6e6e6; }\\n.theme-dark app-settings .content .theme-selection {\\n color: #556576; }\\n.theme-gray app-settings .content .theme-selection {\\n color: #565c62; }\\n.theme-white app-settings .content .theme-selection {\\n color: #a0a5ab; }\\napp-login {\\n min-width: inherit; }\\n.theme-dark app-sidebar {\\n background-color: rgba(23, 31, 39, 0.5); }\\n.theme-gray app-sidebar {\\n background-color: rgba(23, 25, 27, 0.5); }\\n.theme-white app-sidebar {\\n background-color: rgba(255, 255, 255, 0.5); }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header h3 {\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-header button {\\n color: #4db1ff; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-header button {\\n color: #42a5f5; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-header button {\\n color: #2c95f1; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\\n background-color: transparent;\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\\n background-color: transparent;\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account {\\n background-color: transparent;\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\\n color: #556576; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\\n color: #565c62; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .text {\\n color: #a0a5ab; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\\n background-color: #42a5f5; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\\n background-color: #4db1ff;\\n color: #111921; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\\n background-color: #42a5f5;\\n color: #1a1a1a; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .indicator {\\n background-color: #2c95f1;\\n color: #fefefe; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\\n background-color: #343f4a; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\\n background-color: #363a3e; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar {\\n background-color: #dcdcdc; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\\n background-color: #5cda9d; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\\n background-color: #47cf8d; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row .progress-bar-container .progress-bar .fill {\\n background-color: #46c172; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\\n color: #556576; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\\n color: #565c62; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account .sidebar-account-row.account-synchronization {\\n color: #a0a5ab; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\\n background-color: rgba(43, 54, 68, 0.5);\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\\n background-color: rgba(37, 40, 43, 0.5);\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active {\\n background-color: #1e88e5;\\n color: #ffffff; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\\n color: #556576; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\\n color: #565c62; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .text {\\n color: #91baf1; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\\n background-color: #4db1ff;\\n color: #111921; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\\n background-color: #42a5f5;\\n color: #1a1a1a; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .indicator {\\n background-color: #ffffff;\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\\n background-color: #000000;\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\\n background-color: #000000;\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row .switch {\\n background-color: #ffffff;\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\\n color: #556576; }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\\n color: #565c62; }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account.active .sidebar-account-row.account-synchronization {\\n color: #91baf1; }\\n.theme-dark app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\\n background-color: rgba(58, 72, 90, 0.5); }\\n.theme-gray app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\\n background-color: rgba(70, 76, 81, 0.5); }\\n.theme-white app-sidebar .sidebar-accounts .sidebar-accounts-list .sidebar-account:hover:not(.active) {\\n background-color: rgba(240, 240, 240, 0.5); }\\n.theme-dark app-sidebar .sidebar-settings {\\n border-bottom: 0.2rem solid #1f2833; }\\n.theme-gray app-sidebar .sidebar-settings {\\n border-bottom: 0.2rem solid #2e3337; }\\n.theme-white app-sidebar .sidebar-settings {\\n border-bottom: 0.2rem solid #ebebeb; }\\n.theme-dark app-sidebar .sidebar-settings button {\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-settings button {\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-settings button {\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-settings button .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-sidebar .sidebar-settings button .icon {\\n background-color: #42a5f5; }\\n.theme-white app-sidebar .sidebar-settings button .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-sidebar .sidebar-synchronization-status {\\n color: #556576; }\\n.theme-gray app-sidebar .sidebar-synchronization-status {\\n color: #565c62; }\\n.theme-white app-sidebar .sidebar-synchronization-status {\\n color: #a0a5ab; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .offline:before {\\n background-color: #fe5252; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .offline:before {\\n background-color: #ff5252; }\\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .offline:before {\\n background-color: #ff5252; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .online:before {\\n background-color: #5cda9d; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .online:before {\\n background-color: #47cf8d; }\\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .online:before {\\n background-color: #46c172; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .status-container .testnet {\\n color: #e0e0e0; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .status-container .testnet {\\n color: #e0e0e0; }\\n.theme-white app-sidebar .sidebar-synchronization-status .status-container .testnet {\\n color: #43454b; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\\n background-color: #343f4a; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\\n background-color: #363a3e; }\\n.theme-white app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar {\\n background-color: #dcdcdc; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\\n background-color: #5cda9d; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\\n background-color: #47cf8d; }\\n.theme-white app-sidebar .sidebar-synchronization-status .progress-bar-container .syncing .progress-bar .fill {\\n background-color: #46c172; }\\n.theme-dark app-sidebar .sidebar-synchronization-status .progress-bar-container .loading {\\n background-color: #5cda9d; }\\n.theme-gray app-sidebar .sidebar-synchronization-status .progress-bar-container .loading {\\n background-color: #47cf8d; }\\n.theme-white app-sidebar .sidebar-synchronization-status .progress-bar-container .loading {\\n background-color: #46c172; }\\n.theme-dark app-wallet {\\n color: #e0e0e0; }\\n.theme-gray app-wallet {\\n color: #e0e0e0; }\\n.theme-white app-wallet {\\n color: #43454b; }\\n.theme-dark app-wallet .header button {\\n color: #e0e0e0; }\\n.theme-gray app-wallet .header button {\\n color: #e0e0e0; }\\n.theme-white app-wallet .header button {\\n color: #43454b; }\\n.theme-dark app-wallet .header button .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-wallet .header button .icon {\\n background-color: #42a5f5; }\\n.theme-white app-wallet .header button .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-wallet .header .alias .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-wallet .header .alias .icon {\\n background-color: #42a5f5; }\\n.theme-white app-wallet .header .alias .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-wallet .address {\\n color: #4db1ff; }\\n.theme-gray app-wallet .address {\\n color: #42a5f5; }\\n.theme-white app-wallet .address {\\n color: #2c95f1; }\\n.theme-dark app-wallet .address .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-wallet .address .icon {\\n background-color: #42a5f5; }\\n.theme-white app-wallet .address .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-wallet .tabs .tabs-header .tab {\\n background-color: rgba(23, 31, 39, 0.5); }\\n.theme-gray app-wallet .tabs .tabs-header .tab {\\n background-color: rgba(23, 25, 27, 0.5); }\\n.theme-white app-wallet .tabs .tabs-header .tab {\\n background-color: rgba(224, 224, 224, 0.5); }\\n.theme-dark app-wallet .tabs .tabs-header .tab .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-wallet .tabs .tabs-header .tab .icon {\\n background-color: #42a5f5; }\\n.theme-white app-wallet .tabs .tabs-header .tab .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-wallet .tabs .tabs-header .tab .indicator {\\n background-color: #4db1ff;\\n color: #111921; }\\n.theme-gray app-wallet .tabs .tabs-header .tab .indicator {\\n background-color: #42a5f5;\\n color: #1a1a1a; }\\n.theme-white app-wallet .tabs .tabs-header .tab .indicator {\\n background-color: #ffffff;\\n color: #43454b; }\\n.theme-dark app-wallet .tabs .tabs-header .tab.active {\\n background-color: rgba(43, 54, 68, 0.5); }\\n.theme-gray app-wallet .tabs .tabs-header .tab.active {\\n background-color: rgba(37, 40, 43, 0.5); }\\n.theme-white app-wallet .tabs .tabs-header .tab.active {\\n background-color: rgba(255, 255, 255, 0.5); }\\n.theme-dark app-wallet .tabs .tabs-content {\\n background-color: rgba(43, 54, 68, 0.5); }\\n.theme-gray app-wallet .tabs .tabs-content {\\n background-color: rgba(37, 40, 43, 0.5); }\\n.theme-white app-wallet .tabs .tabs-content {\\n background-color: rgba(255, 255, 255, 0.5); }\\n.theme-dark app-send .form-send .send-select {\\n color: #e0e0e0; }\\n.theme-gray app-send .form-send .send-select {\\n color: #e0e0e0; }\\n.theme-white app-send .form-send .send-select {\\n color: #43454b; }\\n.theme-dark app-send .form-send .send-select .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-send .form-send .send-select .icon {\\n background-color: #42a5f5; }\\n.theme-white app-send .form-send .send-select .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-send .form-send .additional-details {\\n border: 0.2rem solid #2b3644; }\\n.theme-gray app-send .form-send .additional-details {\\n border: 0.2rem solid #2f3438; }\\n.theme-white app-send .form-send .additional-details {\\n border: 0.2rem solid #ebebeb; }\\n.theme-dark app-receive .btn-copy-address {\\n background-color: #4db1ff; }\\n.theme-gray app-receive .btn-copy-address {\\n background-color: #42a5f5; }\\n.theme-white app-receive .btn-copy-address {\\n background-color: #2c95f1; }\\n.theme-dark app-history table tbody tr:nth-child(4n+1) {\\n background-color: #18202a; }\\n.theme-gray app-history table tbody tr:nth-child(4n+1) {\\n background-color: #25292d; }\\n.theme-white app-history table tbody tr:nth-child(4n+1) {\\n background-color: #ffffff; }\\n.theme-dark app-history table tbody tr:nth-child(4n+2) {\\n background-color: #18202a; }\\n.theme-gray app-history table tbody tr:nth-child(4n+2) {\\n background-color: #25292d; }\\n.theme-white app-history table tbody tr:nth-child(4n+2) {\\n background-color: #ffffff; }\\n.theme-dark app-history table tbody tr:nth-child(4n+3) {\\n background-color: transparent; }\\n.theme-gray app-history table tbody tr:nth-child(4n+3) {\\n background-color: transparent; }\\n.theme-white app-history table tbody tr:nth-child(4n+3) {\\n background-color: transparent; }\\n.theme-dark app-history table tbody tr:nth-child(4n+4) {\\n background-color: transparent; }\\n.theme-gray app-history table tbody tr:nth-child(4n+4) {\\n background-color: transparent; }\\n.theme-white app-history table tbody tr:nth-child(4n+4) {\\n background-color: transparent; }\\n.theme-dark app-history table tbody tr .status .confirmation {\\n background-color: #343f4a; }\\n.theme-gray app-history table tbody tr .status .confirmation {\\n background-color: #363a3e; }\\n.theme-white app-history table tbody tr .status .confirmation {\\n background-color: #dcdcdc; }\\n.theme-dark app-history table tbody tr .status .confirmation .fill {\\n background-color: #5cda9d; }\\n.theme-gray app-history table tbody tr .status .confirmation .fill {\\n background-color: #47cf8d; }\\n.theme-white app-history table tbody tr .status .confirmation .fill {\\n background-color: #46c172; }\\napp-history table tbody tr .status.send .icon {\\n background-color: #ff5252; }\\napp-history table tbody tr .status.received .icon {\\n background-color: #00c853; }\\n.theme-dark app-contracts .wrap-table .contract .icon.new, .theme-dark app-contracts .wrap-table .contract .icon.alert {\\n background-color: #fe5252; }\\n.theme-gray app-contracts .wrap-table .contract .icon.new, .theme-gray app-contracts .wrap-table .contract .icon.alert {\\n background-color: #fe5252; }\\n.theme-white app-contracts .wrap-table .contract .icon.new, .theme-white app-contracts .wrap-table .contract .icon.alert {\\n background-color: #ff5252; }\\n.theme-dark app-contracts .wrap-table .contract .icon.purchase, .theme-dark app-contracts .wrap-table .contract .icon.sell {\\n background-color: #4db1ff; }\\n.theme-gray app-contracts .wrap-table .contract .icon.purchase, .theme-gray app-contracts .wrap-table .contract .icon.sell {\\n background-color: #42a5f5; }\\n.theme-white app-contracts .wrap-table .contract .icon.purchase, .theme-white app-contracts .wrap-table .contract .icon.sell {\\n background-color: #2c95f1; }\\n.theme-dark app-purchase .form-purchase .purchase-select {\\n color: #e0e0e0; }\\n.theme-gray app-purchase .form-purchase .purchase-select {\\n color: #e0e0e0; }\\n.theme-white app-purchase .form-purchase .purchase-select {\\n color: #43454b; }\\n.theme-dark app-purchase .form-purchase .purchase-select .icon {\\n background-color: #4db1ff; }\\n.theme-gray app-purchase .form-purchase .purchase-select .icon {\\n background-color: #42a5f5; }\\n.theme-white app-purchase .form-purchase .purchase-select .icon {\\n background-color: #2c95f1; }\\n.theme-dark app-purchase .form-purchase .purchase-states {\\n color: #4db1ff; }\\n.theme-gray app-purchase .form-purchase .purchase-states {\\n color: #42a5f5; }\\n.theme-white app-purchase .form-purchase .purchase-states {\\n color: #2c95f1; }\\n.theme-dark app-purchase .form-purchase .additional-details {\\n border: 0.2rem solid #2b3644; }\\n.theme-gray app-purchase .form-purchase .additional-details {\\n border: 0.2rem solid #2f3438; }\\n.theme-white app-purchase .form-purchase .additional-details {\\n border: 0.2rem solid #ebebeb; }\\n.theme-dark app-purchase .progress-bar-container .progress-bar {\\n background-color: #343f4a; }\\n.theme-gray app-purchase .progress-bar-container .progress-bar {\\n background-color: #363a3e; }\\n.theme-white app-purchase .progress-bar-container .progress-bar {\\n background-color: #dcdcdc; }\\n.theme-dark app-purchase .progress-bar-container .progress-bar .progress-bar-full {\\n background-color: #5cda9d; }\\n.theme-gray app-purchase .progress-bar-container .progress-bar .progress-bar-full {\\n background-color: #47cf8d; }\\n.theme-white app-purchase .progress-bar-container .progress-bar .progress-bar-full {\\n background-color: #46c172; }\\napp-messages table tbody tr td:first-child span {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap; }\\n.theme-dark app-messages table tbody tr td:first-child .icon {\\n background-color: #fe5252; }\\n.theme-gray app-messages table tbody tr td:first-child .icon {\\n background-color: #fe5252; }\\n.theme-white app-messages table tbody tr td:first-child .icon {\\n background-color: #ff5252; }\\n.theme-dark app-typing-message .head .interlocutor {\\n color: #4db1ff; }\\n.theme-gray app-typing-message .head .interlocutor {\\n color: #42a5f5; }\\n.theme-white app-typing-message .head .interlocutor {\\n color: #2c95f1; }\\n.theme-dark app-typing-message .messages-content .messages-list div.date {\\n color: #556576; }\\n.theme-gray app-typing-message .messages-content .messages-list div.date {\\n color: #565c62; }\\n.theme-white app-typing-message .messages-content .messages-list div.date {\\n color: #a0a5ab; }\\n.theme-dark app-typing-message .messages-content .messages-list div.my {\\n background-color: #2a3544; }\\n.theme-gray app-typing-message .messages-content .messages-list div.my {\\n background-color: #30363c; }\\n.theme-white app-typing-message .messages-content .messages-list div.my {\\n background-color: #fff; }\\napp-typing-message .messages-content .messages-list div.my:before {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n top: 0;\\n left: -1.1rem;\\n border: 1.2rem solid transparent; }\\n.theme-dark app-typing-message .messages-content .messages-list div.my:before {\\n border-top-color: #2a3544; }\\n.theme-gray app-typing-message .messages-content .messages-list div.my:before {\\n border-top-color: #30363c; }\\n.theme-white app-typing-message .messages-content .messages-list div.my:before {\\n border-top-color: #fff; }\\n.theme-dark app-typing-message .messages-content .messages-list div.buddy {\\n background-color: #18202a; }\\n.theme-gray app-typing-message .messages-content .messages-list div.buddy {\\n background-color: #25292d; }\\n.theme-white app-typing-message .messages-content .messages-list div.buddy {\\n background-color: #ededed; }\\napp-typing-message .messages-content .messages-list div.buddy:after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n right: -1.1rem;\\n top: 0;\\n border: 1.2rem solid transparent; }\\n.theme-dark app-typing-message .messages-content .messages-list div.buddy:after {\\n border-top-color: #18202a; }\\n.theme-gray app-typing-message .messages-content .messages-list div.buddy:after {\\n border-top-color: #25292d; }\\n.theme-white app-typing-message .messages-content .messages-list div.buddy:after {\\n border-top-color: #ededed; }\\n.theme-dark app-staking .chart-header .general .label {\\n color: #556576; }\\n.theme-gray app-staking .chart-header .general .label {\\n color: #565c62; }\\n.theme-white app-staking .chart-header .general .label {\\n color: #a0a5ab; }\\n.theme-dark app-staking .chart-header .general .options {\\n color: #e0e0e0; }\\n.theme-gray app-staking .chart-header .general .options {\\n color: #e0e0e0; }\\n.theme-white app-staking .chart-header .general .options {\\n color: #43454b; }\\napp-staking .chart-header .selected {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n flex-grow: 1;\\n font-size: 1.6rem; }\\n.theme-dark app-staking .chart-options .title {\\n color: #556576; }\\n.theme-gray app-staking .chart-options .title {\\n color: #565c62; }\\n.theme-white app-staking .chart-options .title {\\n color: #a0a5ab; }\\n.theme-dark app-staking .chart-options .options button {\\n color: #e0e0e0;\\n background-color: #2b3644; }\\n.theme-gray app-staking .chart-options .options button {\\n color: #e0e0e0;\\n background-color: #292d31; }\\n.theme-white app-staking .chart-options .options button {\\n color: #43454b;\\n background-color: #e0e0e0; }\\n.theme-dark app-staking .chart-options .options button.active {\\n background-color: #556576; }\\n.theme-gray app-staking .chart-options .options button.active {\\n background-color: #515960; }\\n.theme-white app-staking .chart-options .options button.active {\\n background-color: #ffffff; }\\n.head {\\n display: flex;\\n align-items: flex-end;\\n justify-content: space-between;\\n font-size: 1.3rem;\\n padding: 0 3rem;\\n width: 100%;\\n height: 3rem; }\\n.theme-dark .head {\\n color: #4db1ff; }\\n.theme-gray .head {\\n color: #42a5f5; }\\n.theme-white .head {\\n color: #2c95f1; }\\n.head .breadcrumbs > span:not(:last-child), .head .breadcrumbs a:not(:last-child) {\\n position: relative;\\n cursor: pointer;\\n margin-right: 20px; }\\n.head .breadcrumbs > span:not(:last-child):after, .head .breadcrumbs a:not(:last-child):after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n top: 0.5rem;\\n right: -1.5rem;\\n width: 0.9rem;\\n height: 0.9rem;\\n -webkit-mask: url('arrow-right.svg') no-repeat center;\\n mask: url('arrow-right.svg') no-repeat center;\\n -webkit-mask-size: cover;\\n mask-size: cover; }\\n.theme-dark .head .breadcrumbs > span:not(:last-child):after, .theme-dark .head .breadcrumbs a:not(:last-child):after {\\n background-color: #4db1ff; }\\n.theme-gray .head .breadcrumbs > span:not(:last-child):after, .theme-gray .head .breadcrumbs a:not(:last-child):after {\\n background-color: #42a5f5; }\\n.theme-white .head .breadcrumbs > span:not(:last-child):after, .theme-white .head .breadcrumbs a:not(:last-child):after {\\n background-color: #2c95f1; }\\n.head .back-btn {\\n display: flex;\\n align-items: center;\\n background-color: transparent;\\n color: #4db1ff;\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.3rem;\\n padding: 0;\\n height: auto; }\\n.head .back-btn .icon {\\n margin-right: 0.7rem;\\n -webkit-mask: url('back.svg') no-repeat center;\\n mask: url('back.svg') no-repeat center;\\n width: 0.9rem;\\n height: 0.9rem; }\\n.theme-dark .head .back-btn .icon {\\n background-color: #4db1ff; }\\n.theme-gray .head .back-btn .icon {\\n background-color: #42a5f5; }\\n.theme-white .head .back-btn .icon {\\n background-color: #2c95f1; }\\n.scrolled-content::-webkit-scrollbar {\\n background-color: transparent;\\n cursor: default;\\n width: 1rem;\\n height: 1rem; }\\n.scrolled-content::-webkit-scrollbar-track {\\n background: transparent; }\\n.scrolled-content::-webkit-scrollbar-thumb {\\n background-color: #556576;\\n background-clip: padding-box;\\n border: 0.25rem solid transparent;\\n border-radius: 0.5rem; }\\n.scrolled-content::-webkit-scrollbar-thumb:hover {\\n background-color: #556576; }\\ntable {\\n font-size: 1.3rem;\\n width: 100%; }\\ntable thead {\\n text-align: left; }\\n.theme-dark table thead {\\n color: #556576; }\\n.theme-gray table thead {\\n color: #565c62; }\\n.theme-white table thead {\\n color: #a0a5ab; }\\ntable thead tr {\\n height: 4rem; }\\ntable thead tr th {\\n padding: 1rem;\\n vertical-align: bottom; }\\ntable thead tr th:first-child {\\n padding-left: 3rem; }\\ntable thead tr th:last-child {\\n padding-right: 3rem; }\\ntable tbody {\\n text-align: left; }\\n.theme-dark table tbody {\\n color: #e0e0e0; }\\n.theme-gray table tbody {\\n color: #e0e0e0; }\\n.theme-white table tbody {\\n color: #43454b; }\\ntable tbody tr {\\n height: 3.5rem; }\\n.theme-dark table tbody tr:nth-child(odd) {\\n background-color: #18202a; }\\n.theme-gray table tbody tr:nth-child(odd) {\\n background-color: #25292d; }\\n.theme-white table tbody tr:nth-child(odd) {\\n background-color: #ffffff; }\\ntable tbody tr td {\\n line-height: 1.7rem;\\n padding: 0 1rem;\\n vertical-align: middle;\\n white-space: nowrap;\\n max-width: 20rem; }\\ntable tbody tr td:first-child {\\n padding-left: 3rem; }\\ntable tbody tr td:last-child {\\n padding-right: 3rem; }\\n@font-face {\\n font-family: OpenSans;\\n src: url('OpenSans-Light.ttf');\\n font-weight: 300; }\\n@font-face {\\n font-family: OpenSans;\\n src: url('OpenSans-Regular.ttf');\\n font-weight: 400; }\\n@font-face {\\n font-family: OpenSans;\\n src: url('OpenSans-SemiBold.ttf');\\n font-weight: 600; }\\n@font-face {\\n font-family: OpenSans;\\n src: url('OpenSans-Bold.ttf');\\n font-weight: 700; }\\n@font-face {\\n font-family: OpenSans;\\n src: url('OpenSans-ExtraBold.ttf');\\n font-weight: 800; }\\nhtml {\\n font-family: OpenSans, sans-serif;\\n font-size: 10px; }\\nbody {\\n font-family: OpenSans, sans-serif;\\n font-size: 1.6rem;\\n width: 100vw;\\n height: 100vh; }\\nbody.theme-dark {\\n background: #131921 url('background-dark.png') no-repeat center;\\n background-size: cover; }\\nbody.theme-gray {\\n background: #101417 url('background-gray.png') no-repeat center;\\n background-size: cover; }\\nbody.theme-white {\\n background: #eeeeee url('background-white.png') no-repeat center;\\n background-size: cover; }\\nbody app-root {\\n display: flex;\\n width: 100%;\\n height: 100%; }\\n\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxiYXNlXFxfbWl4aW5zLnNjc3MiLCJzcmMvc3R5bGVzLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcYmFzZVxcX251bGwuc2NzcyIsInNyYy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxiYXNlXFxfYmFzZS5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGJhc2VcXF90aGVtZS5zY3NzIiwic3JjL0Q6XFxQcm9qZWN0c1xcWmFub1xcc3JjXFxndWlcXHF0LWRhZW1vblxcaHRtbF9zb3VyY2Uvc3JjXFxhc3NldHNcXHNjc3NcXGxheW91dFxcX21haW4uc2NzcyIsInNyYy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxsYXlvdXRcXF9zaWRlYmFyLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbGF5b3V0XFxfd2FsbGV0LnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbW9kdWxlc1xcX2hlYWQuc2NzcyIsInNyYy9EOlxcUHJvamVjdHNcXFphbm9cXHNyY1xcZ3VpXFxxdC1kYWVtb25cXGh0bWxfc291cmNlL3NyY1xcYXNzZXRzXFxzY3NzXFxtb2R1bGVzXFxfc2Nyb2xsLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXGFzc2V0c1xcc2Nzc1xcbW9kdWxlc1xcX3RhYmxlLnNjc3MiLCJzcmMvRDpcXFByb2plY3RzXFxaYW5vXFxzcmNcXGd1aVxccXQtZGFlbW9uXFxodG1sX3NvdXJjZS9zcmNcXHN0eWxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThFQTs7Q0M1RUM7QUNDRDtFQUNFLHNCQUFzQjtFQUN0Qiw4QkFBOEI7RUFDOUIsMkJBQTJCLEVBQUE7QUFFN0I7RUFDRSxtQkFBbUI7RUFDbkIsMkJBQTJCO0VBQzNCLHdCQUF3QjtFQUN4QixTQUFTO0VBQ1QsVUFBVTtFRjhCWCwyQkFBMkI7RUFDMUIseUJBQXlCO0VBRXpCLHNCQUFzQjtFQUN0QixxQkFBcUI7RUFDckIsaUJBQWlCLEVBQUE7QUUvQm5COzs7Ozs7Ozs7Ozs7O0VBYUksU0FBUztFQUNULGVBQWU7RUFDZixhQUFhO0VBQ2Isd0JBQXdCLEVBQUE7QUFFNUI7O0VBRUksY0FBYyxFQUFBO0FBR2xCO0VBQ0csY0FBYztFQUNkLGtCQUFrQixFQUFBO0FBRXJCO0VBQ0ksZ0JBQWdCLEVBQUE7QUFFcEI7RUFDSSxZQUFZLEVBQUE7QUFFaEI7O0VBRUksYUFBYSxFQUFBO0FBSWpCO0VBQ0kseUJBQXlCO0VBQ3pCLGlCQUFpQixFQUFBO0FBRXJCOztFQUVFLFVBQVUsRUFBQTtBQUlaO0VBQ0ksYUFBYSxFQUFBO0FBRGpCO0lBR00sNENBQTRDLEVBQUE7QUFJbEQ7Ozs7RUFJRSwwQkFBMEI7RUFDMUIsZUFBZTtFQUNmLGFBQWEsRUFBQTtBQUVmOztFQUVFLGVBQWUsRUFBQTtBQUVqQjs7RUFFRSxTQUFTO0VBQ1QsVUFBVSxFQUFBO0FBRVo7RUFDRSxtQkFBbUIsRUFBQTtBQUVyQjtFQUNFLDZCQUE2QjtFQUM3Qix1QkFBdUIsRUFBQTtBQUV6Qjs7RUFFRSx3QkFBd0IsRUFBQTtBQUsxQjtFQUNDLHFCQUFxQixFQUFBO0FBRHRCO0lBS0UsVUFBVSxFQUFBO0FBSVo7RUFBSSxrQkFBa0IsRUFBQTtBQUN0QjtFQUFZLGdCQUFnQixFQUFBO0FBRzVCO0VBQ0MsV0FBVztFQUNYLGVBQWU7RUFDZixZQUFZO0VBQ1gsbUJBQW1CO0VBQ3BCLFNBQVMsRUFBQTtBQUdWO0VBQ0Usd0JBQXdCLEVBQUE7QUM5SDFCO0VBQ0UsWUFBWTtFQUNaLGlDQUFpQztFQUNqQyxpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLGFBQWE7RUFDYixlQUFlO0VBQ2YsY0FBYyxFQUFBO0FINEVaO0lHdkVFLHlCQ0lvQztJREhwQyxjQ0oyQixFQUFBO0FKMEU3QjtJR3ZFRSx5QkNnRG9DO0lEL0NwQyxjQ3dDMkIsRUFBQTtBSjhCN0I7SUd2RUUseUJDNEZvQztJRDNGcEMsY0NvRjJCLEVBQUE7QUpkN0I7SUdoRUkseUJDRjZCLEVBQUE7QUprRWpDO0lHaEVJLHlCQzBDNkIsRUFBQTtBSnNCakM7SUdoRUkseUJDc0Y2QixFQUFBO0FKdEJqQztJR3hERSx5QkNiZ0M7SURjaEMsY0NuQjJCLEVBQUE7QUowRTdCO0lHeERFLHlCQytCZ0M7SUQ5QmhDLGNDeUIyQixFQUFBO0FKOEI3QjtJR3hERSx5QkMyRWdDO0lEMUVoQyxjQ3FFMkIsRUFBQTtBSmQ3QjtJR2pESSx5QkNuQnlCLEVBQUE7QUpvRTdCO0lHakRJLHlCQ3lCeUIsRUFBQTtBSndCN0I7SUdqREkseUJDcUV5QixFQUFBO0FKcEI3QjtJR3pDRSx5QkN4QmlDO0lEeUJqQyxjQ2xDMkIsRUFBQTtBSjBFN0I7SUd6Q0UseUJDb0JpQztJRG5CakMsY0NVMkIsRUFBQTtBSjhCN0I7SUd6Q0UseUJDZ0VpQztJRC9EakMsY0NzRDJCLEVBQUE7QUpkN0I7SUdsQ0kseUJDOUIwQixFQUFBO0FKZ0U5QjtJR2xDSSx5QkNjMEIsRUFBQTtBSm9COUI7SUdsQ0kseUJDMEQwQixFQUFBO0FKeEI5QjtJRzFCRSx5QkNyQ3FDO0lEc0NyQyxjQ2pEMkIsRUFBQTtBSjBFN0I7SUcxQkUseUJDT3FDO0lETnJDLGND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QixjQzFla0IsRUFBQTtBSitCdEI7SUcwY0kseUJDOVoyQjtJRCtaM0IsY0M5YmtCLEVBQUE7QUpidEI7RUdzZEUsc0NDL2YwRDtFRGdnQjFELGNDbGlCb0IsRUFBQTtBSjJFdEI7RUdzZEUsc0NDbmQwRDtFRG9kMUQsY0N0Zm9CLEVBQUE7QUorQnRCO0VHc2RFLHVDQ3ZhMkQ7RUR3YTNELGNDMWNvQixFQUFBO0FKYnRCO0VHK2RNLHlCQ3JpQmUsRUFBQTtBSnNFckI7RUcrZE0seUJDemZlLEVBQUE7QUowQnJCO0VHK2RNLHlCQzdjZSxFQUFBO0FKbEJyQjtFR3NlTSx5QkM3aUJpQixFQUFBO0FKdUV2QjtFR3NlTSx5QkNqZ0JpQixFQUFBO0FKMkJ2QjtFR3NlTSx5QkNyZGlCLEVBQUE7QUpqQnZCO0VHNmVNLHlCQ3JqQmdCLEVBQUE7QUp3RXRCO0VHNmVNLHlCQ3pnQmdCLEVBQUE7QUo0QnRCO0VHNmVNLHlCQzdkZ0IsRUFBQTtBSmhCdEI7RUdxZkkseUJDN2pCa0I7RUQ4akJsQixjQ2hrQnlCLEVBQUE7QUowRTdCO0VHcWZJLHlCQ2poQmtCO0VEa2hCbEIsY0NwaEJ5QixFQUFBO0FKOEI3QjtFR3FmSSx5QkNyZWtCO0VEc2VsQixjQ3hleUIsRUFBQTtBSmQ3QjtFRytmTSx5QkN2aUJtQixFQUFBO0FKd0N6QjtFRytmTSx5QkMzZm1CLEVBQUE7QUpKekI7RUcrZk0seUJDL2NtQixFQUFBO0FKaER6QjtFRzJnQkUsZ0NDeGtCbUMsRUFBQTtBSjZEckM7RUcyZ0JFLGdDQzVoQm1DLEVBQUE7QUppQnJDO0VHMmdCRSxnQ0NoZm1DLEVBQUE7QUozQnJDO0VHcWhCUSxjQzlsQmtCLEVBQUE7QUp5RTFCO0VHcWhCUSxjQ2xqQmtCLEVBQUE7QUo2QjFCO0VHcWhCUSxjQ3RnQmtCLEVBQUE7QUpmMUI7RUc0aEJRLGNDdm1CYyxFQUFBO0FKMkV0QjtFRzRoQlEsY0MzakJjLEVBQUE7QUorQnRCO0VHNGhCUSxjQy9nQmMsRUFBQTtBSmJ0QjtFR21pQlEsY0MzbUJjLEVBQUE7QUp3RXRCO0VHbWlCUSxjQy9qQmMsRUFBQTtBSjRCdEI7RUdtaUJRLGNDbmhCYyxFQUFBO0FDbkcxQjtFQUNFLGNBQWM7RUFDZCxhQUFhO0VBQ2IsZ0JBQWdCLEVBQUE7QUFIbEI7SUFNSSxrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLGdCQUFnQixFQUFBO0FMMkVoQjtNS3hFRSx1Q0RKMkM7TUNLM0MsY0RKb0IsRUFBQTtBSjJFdEI7TUt4RUUsdUNEd0MyQztNQ3ZDM0MsY0R3Q29CLEVBQUE7QUorQnRCO01LeEVFLDBDRG9GOEM7TUNuRjlDLGNEb0ZvQixFQUFBO0FDaEcxQjtNQWdCTSxrQkFBa0I7TUFDbEIsTUFBTTtNQUNOLE9BQU8sRUFBQTtBTGlFVDtFS25ETSxjRHJCZ0IsRUFBQTtBSndFdEI7RUtuRE0sY0R1QmdCLEVBQUE7QUo0QnRCO0VLbkRNLGNEbUVnQixFQUFBO0FKaEJ0QjtFSzdDUSx5QkQzQmMsRUFBQTtBSndFdEI7RUs3Q1EseUJEaUJjLEVBQUE7QUo0QnRCO0VLN0NRLHlCRDZEYyxFQUFBO0FKaEJ0QjtFS2hDRSx5QkQ1QjJCO0VDNkIzQixjRDVDb0IsRUFBQTtBSjJFdEI7RUtoQ0UseUJEZ0IyQjtFQ2YzQixjREFvQixFQUFBO0FKK0J0QjtFS2hDRSx5QkQ0RDJCO0VDM0QzQixjRDRDb0IsRUFBQTtBSmJ0QjtFS3JCRSx5QkR2QzJCLEVBQUE7QUo0RDdCO0VLckJFLHlCREsyQixFQUFBO0FKZ0I3QjtFS3JCRSx5QkRpRDJCLEVBQUE7QUo1QjdCO0VLVEksY0RoRXNCLEVBQUE7QUp5RTFCO0VLVEksY0RwQnNCLEVBQUE7QUo2QjFCO0VLVEksY0R3QnNCLEVBQUE7QUNsQjlCO0VBQ0Usa0JBQWtCLEVBQUE7QUxFaEI7RU1oRkEsdUNGQTZDLEVBQUE7QUpnRjdDO0VNaEZBLHVDRjRDNkMsRUFBQTtBSm9DN0M7RU1oRkEsMENGd0ZnRCxFQUFBO0FKUmhEO0VNdEVNLGNGTGdCLEVBQUE7QUoyRXRCO0VNdEVNLGNGdUNnQixFQUFBO0FKK0J0QjtFTXRFTSxjRm1GZ0IsRUFBQTtBSmJ0QjtFTS9ETSxjRlRnQixFQUFBO0FKd0V0QjtFTS9ETSxjRm1DZ0IsRUFBQTtBSjRCdEI7RU0vRE0sY0YrRWdCLEVBQUE7QUpoQnRCO0VNckRNLDZCQUE2QjtFQUM3QixjRnZCZ0IsRUFBQTtBSjJFdEI7RU1yRE0sNkJBQTZCO0VBQzdCLGNGcUJnQixFQUFBO0FKK0J0QjtFTXJETSw2QkFBNkI7RUFDN0IsY0ZpRWdCLEVBQUE7QUpidEI7RU01Q1UsY0Y3QmdCLEVBQUE7QUp5RTFCO0VNNUNVLGNGZWdCLEVBQUE7QUo2QjFCO0VNNUNVLGNGMkRnQixFQUFBO0FKZjFCO0VNckNVLHlCRm5DWSxFQUFBO0FKd0V0QjtFTXJDVSx5QkZTWSxFQUFBO0FKNEJ0QjtFTXJDVSx5QkZxRFksRUFBQTtBSmhCdEI7RU05QlUseUJGdkN3QjtFRXdDeEIsY0Y3Q21CLEVBQUE7QUowRTdCO0VNOUJVLHlCRkt3QjtFRUp4QixjRkRtQixFQUFBO0FKOEI3QjtFTTlCVSx5QkZpRHdCO0VFaER4QixjRjJDbUIsRUFBQTtBSmQ3QjtFTXBCWSx5QkYzQnVCLEVBQUE7QUorQ25DO0VNcEJZLHlCRmlCdUIsRUFBQTtBSkduQztFTXBCWSx5QkY2RHVCLEVBQUE7QUp6Q25DO0VNZGMseUJGaEN5QixFQUFBO0FKOEN2QztFTWRjLHlCRll5QixFQUFBO0FKRXZDO0VNZGMseUJGd0R5QixFQUFBO0FKMUN2QztFTUxVLGNGcEVnQixFQUFBO0FKeUUxQjtFTUxVLGNGeEJnQixFQUFBO0FKNkIxQjtFTUxVLGNGb0JnQixFQUFBO0FKZjFCO0VNR1EsdUNGN0RxQztFRThEckMsY0Y1RHFCLEVBQUE7QUp3RDdCO0VNR1EsdUNGakJxQztFRWtCckMsY0ZoQnFCLEVBQUE7QUpZN0I7RU1HUSx5QkYyQnFDO0VFMUJyQyxjRjRCcUIsRUFBQTtBSmhDN0I7RU1ZWSxjRm5FcUIsRUFBQTtBSnVEakM7RU1ZWSxjRnZCcUIsRUFBQTtBSldqQztFTVlZLGNGcUJxQixFQUFBO0FKakNqQztFTW1CWSx5QkZ2RTRCO0VFd0U1QixjRjFFc0IsRUFBQTtBSnNEbEM7RU1tQlkseUJGM0I0QjtFRTRCNUIsY0Y5QnNCLEVBQUE7QUpVbEM7RU1tQlkseUJGaUI0QjtFRWhCNUIsY0Zjc0IsRUFBQTtBSmxDbEM7RU0yQlkseUJGaEZ5QjtFRWlGekIsY0Z2R1UsRUFBQTtBSjJFdEI7RU0yQlkseUJGcEN5QjtFRXFDekIsY0YzRFUsRUFBQTtBSitCdEI7RU0yQlkseUJGUXlCO0VFUHpCLGNGZlUsRUFBQTtBSmJ0QjtFTW1DWSxjRjFGcUIsRUFBQTtBSnVEakM7RU1tQ1ksY0Y5Q3FCLEVBQUE7QUpXakM7RU1tQ1ksY0ZGcUIsRUFBQTtBSmpDakM7RU00Q1EsdUNGckcwQyxFQUFBO0FKeURsRDtFTTRDUSx1Q0Z6RDBDLEVBQUE7QUphbEQ7RU00Q1EsMENGYjZDLEVBQUE7QUovQnJEO0VNc0RFLG1DRnJJeUIsRUFBQTtBSitFM0I7RU1zREUsbUNGekZ5QixFQUFBO0FKbUMzQjtFTXNERSxtQ0Y3Q3lCLEVBQUE7QUpUM0I7RU00REksY0Z2SWtCLEVBQUE7QUoyRXRCO0VNNERJLGNGM0ZrQixFQUFBO0FKK0J0QjtFTTRESSxjRi9Da0IsRUFBQTtBSmJ0QjtFTWtFTSx5QkYxSWdCLEVBQUE7QUp3RXRCO0VNa0VNLHlCRjlGZ0IsRUFBQTtBSjRCdEI7RU1rRU0seUJGbERnQixFQUFBO0FKaEJ0QjtFTTJFRSxjRnBKd0IsRUFBQTtBSnlFMUI7RU0yRUUsY0Z4R3dCLEVBQUE7QUo2QjFCO0VNMkVFLGNGNUR3QixFQUFBO0FKZjFCO0VNbUZNLHlCRmhLZSxFQUFBO0FKNkVyQjtFTW1GTSx5QkZwSGUsRUFBQTtBSmlDckI7RU1tRk0seUJGeEVlLEVBQUE7QUpYckI7RU0wRk0seUJGeEtjLEVBQUE7QUo4RXBCO0VNMEZNLHlCRjVIYyxFQUFBO0FKa0NwQjtFTTBGTSx5QkZoRmMsRUFBQTtBSlZwQjtFTWlHTSxjRjVLZ0IsRUFBQTtBSjJFdEI7RU1pR00sY0ZoSWdCLEVBQUE7QUorQnRCO0VNaUdNLGNGcEZnQixFQUFBO0FKYnRCO0VNNkdRLHlCRjVKMkIsRUFBQTtBSitDbkM7RU02R1EseUJGaEgyQixFQUFBO0FKR25DO0VNNkdRLHlCRnBFMkIsRUFBQTtBSnpDbkM7RU1tSFUseUJGaks2QixFQUFBO0FKOEN2QztFTW1IVSx5QkZySDZCLEVBQUE7QUpFdkM7RU1tSFUseUJGekU2QixFQUFBO0FKMUN2QztFTTRITSx5QkYxS2lDLEVBQUE7QUo4Q3ZDO0VNNEhNLHlCRjlIaUMsRUFBQTtBSkV2QztFTTRITSx5QkZsRmlDLEVBQUE7QUoxQ3ZDO0VPaEZBLGNIS3NCLEVBQUE7QUoyRXRCO0VPaEZBLGNIaURzQixFQUFBO0FKK0J0QjtFT2hGQSxjSDZGc0IsRUFBQTtBSmJ0QjtFT3hFSSxjSEhrQixFQUFBO0FKMkV0QjtFT3hFSSxjSHlDa0IsRUFBQTtBSitCdEI7RU94RUksY0hxRmtCLEVBQUE7QUpidEI7RU9sRU0seUJITmdCLEVBQUE7QUp3RXRCO0VPbEVNLHlCSHNDZ0IsRUFBQTtBSjRCdEI7RU9sRU0seUJIa0ZnQixFQUFBO0FKaEJ0QjtFT3hETSx5QkhoQmdCLEVBQUE7QUp3RXRCO0VPeERNLHlCSDRCZ0IsRUFBQTtBSjRCdEI7RU94RE0seUJId0VnQixFQUFBO0FKaEJ0QjtFTy9DRSxjSHpCb0IsRUFBQTtBSndFdEI7RU8vQ0UsY0htQm9CLEVBQUE7QUo0QnRCO0VPL0NFLGNIK0RvQixFQUFBO0FKaEJ0QjtFT3pDSSx5QkgvQmtCLEVBQUE7QUp3RXRCO0VPekNJLHlCSGFrQixFQUFBO0FKNEJ0QjtFT3pDSSx5Qkh5RGtCLEVBQUE7QUpoQnRCO0VPN0JNLHVDSHRCMkMsRUFBQTtBSm1EakQ7RU83Qk0sdUNIc0IyQyxFQUFBO0FKT2pEO0VPN0JNLDBDSGtFOEMsRUFBQTtBSnJDcEQ7RU92QlEseUJIakRjLEVBQUE7QUp3RXRCO0VPdkJRLHlCSExjLEVBQUE7QUo0QnRCO0VPdkJRLHlCSHVDYyxFQUFBO0FKaEJ0QjtFT2hCUSx5QkhwQ2dDO0VHcUNoQyxjSHZDMEIsRUFBQTtBSnNEbEM7RU9oQlEseUJIUWdDO0VHUGhDLGNISzBCLEVBQUE7QUpVbEM7RU9oQlEseUJIb0RnQztFR25EaEMsY0hpRDBCLEVBQUE7QUpsQ2xDO0VPUlEsdUNIcEVxQyxFQUFBO0FKNEU3QztFT1JRLHVDSHhCcUMsRUFBQTtBSmdDN0M7RU9SUSwwQ0hvQndDLEVBQUE7QUpaaEQ7RU9DSSx1Q0g3RXlDLEVBQUE7QUo0RTdDO0VPQ0ksdUNIakN5QyxFQUFBO0FKZ0M3QztFT0NJLDBDSFc0QyxFQUFBO0FKWmhEO0VPY0ksY0h6RmtCLEVBQUE7QUoyRXRCO0VPY0ksY0g3Q2tCLEVBQUE7QUorQnRCO0VPY0ksY0hEa0IsRUFBQTtBSmJ0QjtFT29CTSx5Qkg1RmdCLEVBQUE7QUp3RXRCO0VPb0JNLHlCSGhEZ0IsRUFBQTtBSjRCdEI7RU9vQk0seUJISmdCLEVBQUE7QUpoQnRCO0VPNEJJLDRCSHpGaUMsRUFBQTtBSjZEckM7RU80QkksNEJIN0NpQyxFQUFBO0FKaUJyQztFTzRCSSw0QkhEaUMsRUFBQTtBSjNCckM7RU91Q0UseUJIL0dvQixFQUFBO0FKd0V0QjtFT3VDRSx5QkhuRW9CLEVBQUE7QUo0QnRCO0VPdUNFLHlCSHZCb0IsRUFBQTtBSmhCdEI7RU91RFEseUJIekdxQixFQUFBO0FKa0Q3QjtFT3VEUSx5Qkg3RHFCLEVBQUE7QUpNN0I7RU91RFEseUJIakJxQixFQUFBO0FKdEM3QjtFTzhEUSx5QkhoSHFCLEVBQUE7QUprRDdCO0VPOERRLHlCSHBFcUIsRUFBQTtBSk03QjtFTzhEUSx5Qkh4QnFCLEVBQUE7QUp0QzdCO0VPcUVRLDZCQUE2QixFQUFBO0FQckVyQztFT3FFUSw2QkFBNkIsRUFBQTtBUHJFckM7RU9xRVEsNkJBQTZCLEVBQUE7QVByRXJDO0VPNEVRLDZCQUE2QixFQUFBO0FQNUVyQztFTzRFUSw2QkFBNkIsRUFBQTtBUDVFckM7RU80RVEsNkJBQTZCLEVBQUE7QVA1RXJDO0VPcUZVLHlCSHBJeUIsRUFBQTtBSitDbkM7RU9xRlUseUJIeEZ5QixFQUFBO0FKR25DO0VPcUZVLHlCSDVDeUIsRUFBQTtBSnpDbkM7RU8yRlkseUJIekkyQixFQUFBO0FKOEN2QztFTzJGWSx5Qkg3RjJCLEVBQUE7QUpFdkM7RU8yRlkseUJIakQyQixFQUFBO0FHRTNDO0VBd0RZLHlCQUF5QixFQUFBO0FBeERyQztFQStEWSx5QkFBeUIsRUFBQTtBUDNHakM7RU84SFEseUJIcE1hLEVBQUE7QUpzRXJCO0VPOEhRLHlCSHhKYSxFQUFBO0FKMEJyQjtFTzhIUSx5Qkg1R2EsRUFBQTtBSmxCckI7RU9xSVEseUJIN01jLEVBQUE7QUp3RXRCO0VPcUlRLHlCSGpLYyxFQUFBO0FKNEJ0QjtFT3FJUSx5QkhySGMsRUFBQTtBSmhCdEI7RU9vSkksY0gvTmtCLEVBQUE7QUoyRXRCO0VPb0pJLGNIbkxrQixFQUFBO0FKK0J0QjtFT29KSSxjSHZJa0IsRUFBQTtBSmJ0QjtFTzBKTSx5QkhsT2dCLEVBQUE7QUp3RXRCO0VPMEpNLHlCSHRMZ0IsRUFBQTtBSjRCdEI7RU8wSk0seUJIMUlnQixFQUFBO0FKaEJ0QjtFT2tLSSxjSDFPa0IsRUFBQTtBSndFdEI7RU9rS0ksY0g5TGtCLEVBQUE7QUo0QnRCO0VPa0tJLGNIbEprQixFQUFBO0FKaEJ0QjtFT3lLSSw0Qkh0T2lDLEVBQUE7QUo2RHJDO0VPeUtJLDRCSDFMaUMsRUFBQTtBSmlCckM7RU95S0ksNEJIOUlpQyxFQUFBO0FKM0JyQztFT21MSSx5QkhsTytCLEVBQUE7QUorQ25DO0VPbUxJLHlCSHRMK0IsRUFBQTtBSkduQztFT21MSSx5QkgxSStCLEVBQUE7QUp6Q25DO0VPeUxNLHlCSHZPaUMsRUFBQTtBSjhDdkM7RU95TE0seUJIM0xpQyxFQUFBO0FKRXZDO0VPeUxNLHlCSC9JaUMsRUFBQTtBR3NKM0M7RVBsUkUsZ0JBQWdCO0VBQ2hCLHVCQUF1QjtFQUN2QixtQkFBbUIsRUFBQTtBQWdGakI7RU9pTlUseUJIdlJXLEVBQUE7QUpzRXJCO0VPaU5VLHlCSDNPVyxFQUFBO0FKMEJyQjtFT2lOVSx5QkgvTFcsRUFBQTtBSmxCckI7RU9pT0ksY0h6U2tCLEVBQUE7QUp3RXRCO0VPaU9JLGNIN1BrQixFQUFBO0FKNEJ0QjtFT2lPSSxjSGpOa0IsRUFBQTtBSmhCdEI7RU8rT1EsY0h4VGtCLEVBQUE7QUp5RTFCO0VPK09RLGNINVFrQixFQUFBO0FKNkIxQjtFTytPUSxjSGhPa0IsRUFBQTtBSmYxQjtFT3NQUSx5Qkh2U3lCLEVBQUE7QUppRGpDO0VPc1BRLHlCSDNQeUIsRUFBQTtBSktqQztFT3NQUSxzQkgvTXNCLEVBQUE7QUdtTGxDO0VQcE9FLFdBRDBEO0VBRTFELGNBRjRCO0VBRzVCLGtCQUg0QztFT3VRbEMsTUFBTTtFQUNOLGFBQWE7RUFDYixnQ0FBZ0MsRUFBQTtBUDlQeEM7SU9pUVUseUJIbFR1QixFQUFBO0FKaURqQztJT2lRVSx5Qkh0UXVCLEVBQUE7QUpLakM7SU9pUVUsc0JIMU5vQixFQUFBO0FKdkM5QjtFT3lRUSx5Qkh6VDRCLEVBQUE7QUpnRHBDO0VPeVFRLHlCSDdRNEIsRUFBQTtBSklwQztFT3lRUSx5QkhqTzRCLEVBQUE7QUdrTHhDO0VQcE9FLFdBRDBEO0VBRTFELGNBRjRCO0VBRzVCLGtCQUg0QztFTzBSbEMsY0FBYztFQUNkLE1BQU07RUFDTixnQ0FBZ0MsRUFBQTtBUGpSeEM7SU9vUlUseUJIcFUwQixFQUFBO0FKZ0RwQztJT29SVSx5Qkh4UjBCLEVBQUE7QUpJcEM7SU9vUlUseUJINU8wQixFQUFBO0FKeENwQztFT3NTTSxjSC9Xb0IsRUFBQTtBSnlFMUI7RU9zU00sY0huVW9CLEVBQUE7QUo2QjFCO0VPc1NNLGNIdlJvQixFQUFBO0FKZjFCO0VPNlNNLGNIeFhnQixFQUFBO0FKMkV0QjtFTzZTTSxjSDVVZ0IsRUFBQTtBSitCdEI7RU82U00sY0hoU2dCLEVBQUE7QUdnUjFCO0VBc0JNLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIseUJBQXlCO0VBQ3pCLFlBQVk7RUFDWixpQkFBaUIsRUFBQTtBUHZUbkI7RU9nVUksY0h6WXNCLEVBQUE7QUp5RTFCO0VPZ1VJLGNIN1ZzQixFQUFBO0FKNkIxQjtFT2dVSSxjSGpUc0IsRUFBQTtBSmYxQjtFT3lVTSxjSHBaZ0I7RUdxWmhCLHlCSHZYOEIsRUFBQTtBSjZDcEM7RU95VU0sY0h4V2dCO0VHeVdoQix5QkgzVThCLEVBQUE7QUpDcEM7RU95VU0sY0g1VGdCO0VHNlRoQix5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aUNBQWlDO0VBQ2pDLGlCQUFpQjtFQUNqQixZQUFZO0VBQ1osYUFBYSxFQUFBO0FBSmY7SUFPSSwrREFBNkU7SUFDN0Usc0JBQXNCLEVBQUE7QUFSMUI7SUFZSSwrREFBNkU7SUFDN0Usc0JBQXNCLEVBQUE7QUFiMUI7SUFpQkksZ0VBQThFO0lBQzlFLHNCQUFzQixFQUFBO0FBbEIxQjtJQXNCSSxhQUFhO0lBQ2IsV0FBVztJQUNYLFlBQVksRUFBQSIsImZpbGUiOiJzcmMvc3R5bGVzLnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAbWl4aW4gdGV4dC10cnVuY2F0ZSB7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcbkBtaXhpbiB0ZXh0V3JhcCB7XHJcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgbGluZS1icmVhazogc3RyaWN0O1xyXG4gIC13ZWJraXQtaHlwaGVuczogYXV0bztcclxuICAtbXMtaHlwaGVuczogYXV0bztcclxuICBoeXBoZW5zOiBhdXRvO1xyXG59XHJcbkBtaXhpbiBjb3ZlckJveCB7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdHRvcDogMDtcclxuXHRsZWZ0OiAwO1xyXG5cdHdpZHRoOiAxMDAlO1xyXG5cdGhlaWdodDogMTAwJTtcclxufVxyXG5AbWl4aW4gYWJzICgkdG9wOiBhdXRvLCAkcmlnaHQ6IGF1dG8sICRib3R0b206IGF1dG8sICRsZWZ0OiBhdXRvKSB7XHJcbiAgdG9wOiAkdG9wO1xyXG4gIHJpZ2h0OiAkcmlnaHQ7XHJcbiAgYm90dG9tOiAkYm90dG9tO1xyXG4gIGxlZnQ6ICRsZWZ0O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxufVxyXG5AbWl4aW4gY292ZXJJbWcge1xyXG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcblx0LXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG5cdC1vLWJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcblx0YmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcclxuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlO1xyXG59XHJcbkBtaXhpbiB2YWxpbmdCb3gge1xyXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR0b3A6ICA1MCU7XHJcblx0bGVmdDogNTAlO1xyXG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG59XHJcbkBtaXhpbiB1blNlbGVjdCB7XHJcblx0LXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xyXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xyXG4gIHVzZXItc2VsZWN0OiBub25lO1xyXG59XHJcbkBtaXhpbiBtYXgxMTk5IHsgLy8gbWFrZXQgMTE3MVxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4MTE3MCB7IC8vIG1ha2V0cyA5OTJcclxuICBAbWVkaWEgKG1heC13aWR0aDogMTE3MHB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1heDk5MSB7IC8vIG1ha2V0cyA3NjJcclxuICBAbWVkaWEgKG1heC13aWR0aDogOTkxcHgpIHsgQGNvbnRlbnQ7IH1cclxufVxyXG5AbWl4aW4gbWF4NzYxIHsgLy8gbWFrZXRzIDU3NlxyXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjFweCkgeyBAY29udGVudDsgfVxyXG59XHJcbkBtaXhpbiBtYXg1NzUgeyAvLyBtYWtldHMgNDAwXHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIG1vYmlsZSB7XHJcbiAgQG1lZGlhIChtYXgtd2lkdGg6IDM5OXB4KSB7IEBjb250ZW50OyB9XHJcbn1cclxuQG1peGluIGljb0NlbnRlciB7XHJcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcclxufVxyXG5AbWl4aW4gcHNldWRvICgkZGlzcGxheTogYmxvY2ssICRwb3M6IGFic29sdXRlLCAkY29udGVudDogJycpe1xyXG4gIGNvbnRlbnQ6ICRjb250ZW50O1xyXG4gIGRpc3BsYXk6ICRkaXNwbGF5O1xyXG4gIHBvc2l0aW9uOiAkcG9zO1xyXG59XHJcblxyXG4vKlxyXG4qIEltcGxlbWVudGF0aW9uIG9mIHRoZW1lc1xyXG4qL1xyXG5AbWl4aW4gdGhlbWlmeSgkdGhlbWVzOiAkdGhlbWVzKSB7XHJcbiAgQGVhY2ggJHRoZW1lLCAkbWFwIGluICR0aGVtZXMge1xyXG4gICAgLnRoZW1lLSN7JHRoZW1lfSAmIHtcclxuICAgICAgJHRoZW1lLW1hcDogKCkgIWdsb2JhbDtcclxuICAgICAgQGVhY2ggJGtleSwgJHN1Ym1hcCBpbiAkbWFwIHtcclxuICAgICAgICAkdmFsdWU6IG1hcC1nZXQobWFwLWdldCgkdGhlbWVzLCAkdGhlbWUpLCAnI3ska2V5fScpO1xyXG4gICAgICAgICR0aGVtZS1tYXA6IG1hcC1tZXJnZSgkdGhlbWUtbWFwLCAoJGtleTogJHZhbHVlKSkgIWdsb2JhbDtcclxuICAgICAgfVxyXG4gICAgICBAY29udGVudDtcclxuICAgICAgJHRoZW1lLW1hcDogbnVsbCAhZ2xvYmFsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGZ1bmN0aW9uIHRoZW1lZCgka2V5KSB7XHJcbiAgQHJldHVybiBtYXAtZ2V0KCR0aGVtZS1tYXAsICRrZXkpO1xyXG59XHJcbiIsIi8qXHJcbiogSW1wbGVtZW50YXRpb24gb2YgdGhlbWVzXHJcbiovXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGluaGVyaXQ7XG4gIC1tb3otYm94LXNpemluZzogaW5oZXJpdDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICAtd2Via2l0LXRvdWNoLWNvbGxvdXQ6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuXG5odG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG5hLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG5kZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG5zbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuYiwgdSwgaSwgY2VudGVyLFxuZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbmZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxudGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG5hcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbmZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcbm1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxudGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgYm9yZGVyOiAwO1xuICBmb250LXNpemU6IDEwMCU7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG5hcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLFxuZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxub2wsIHVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG5ibG9ja3F1b3RlLCBxIHtcbiAgcXVvdGVzOiBub25lOyB9XG5cbmJsb2NrcXVvdGU6YmVmb3JlLCBibG9ja3F1b3RlOmFmdGVyLFxucTpiZWZvcmUsIHE6YWZ0ZXIge1xuICBjb250ZW50OiBub25lOyB9XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7IH1cblxuaW5wdXQge1xuICBvdXRsaW5lOiBub25lOyB9XG4gIGlucHV0Oi13ZWJraXQtYXV0b2ZpbGwge1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDAgMTAwMHB4IHdoaXRlIGluc2V0OyB9XG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdXRsaW5lOiBub25lOyB9XG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7IH1cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfVxuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfVxuXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIGE6YWN0aXZlLCBhOmhvdmVyLCBhOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwOyB9XG5cbmkge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuYiwgc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG5pbWcge1xuICB3aWR0aDogYXV0bztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGJvcmRlcjogMDsgfVxuXG4uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XG5cbmJ1dHRvbiB7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogMCAxcmVtO1xuICBoZWlnaHQ6IDQuMnJlbTsgfVxuICAudGhlbWUtZGFyayBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBhNGFlO1xuICAgIGNvbG9yOiAjMTExOTIxOyB9XG4gIC50aGVtZS1ncmF5IGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbikge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM3OTg0OGY7XG4gICAgY29sb3I6ICMxYTFhMWE7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbjpkaXNhYmxlZDpub3QoLnRyYW5zcGFyZW50LWJ1dHRvbikge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM5MGE0YWU7XG4gICAgY29sb3I6ICNmZWZlZmU7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uOmRpc2FibGVkOm5vdCgudHJhbnNwYXJlbnQtYnV0dG9uKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzliYjBiYTsgfVxuICAudGhlbWUtZ3JheSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjODU5MDliOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b246ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWJhZWI3OyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7XG4gICAgY29sb3I6ICMxYTFhMWE7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTtcbiAgICBjb2xvcjogI2ZlZmVmZTsgfVxuICAudGhlbWUtZGFyayBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM2MGI5ZmY7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmJsdWUtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRhZmZmOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uYmx1ZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNzlmZmE7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDtcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkO1xuICAgIGNvbG9yOiAjMWExYTFhOyB9XG4gIC50aGVtZS13aGl0ZSBidXR0b24uZ3JlZW4tYnV0dG9uOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDZjMTcyO1xuICAgIGNvbG9yOiAjZmVmZWZlOyB9XG4gIC50aGVtZS1kYXJrIGJ1dHRvbi5ncmVlbi1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1Y2UyYTE7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQ5ZDk5MzsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQ2Y2E3NTsgfVxuICAudGhlbWUtZGFyayBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzRkZDBlMTtcbiAgICBjb2xvcjogIzExMTkyMTsgfVxuICAudGhlbWUtZ3JheSBidXR0b24udHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzNlYzVkNztcbiAgICBjb2xvcjogIzFhMWExYTsgfVxuICAudGhlbWUtd2hpdGUgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyNmI2Yzc7XG4gICAgY29sb3I6ICNmZWZlZmU7IH1cbiAgLnRoZW1lLWRhcmsgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1MmQ5ZWE7IH1cbiAgLnRoZW1lLWdyYXkgYnV0dG9uLnR1cnF1b2lzZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0M2NlZTA7IH1cbiAgLnRoZW1lLXdoaXRlIGJ1dHRvbi50dXJxdW9pc2UtYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmJiZGNmOyB9XG4gIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfVxuICAgIC50aGVtZS1kYXJrIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmIzNjQ0O1xuICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAudGhlbWUtZ3JheSBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJmMzQzODtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjZWJlYmViO1xuICAgICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgICBidXR0b24udHJhbnNwYXJlbnQtYnV0dG9uIC5pY29uIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcbiAgICAgIHdpZHRoOiAxLjdyZW07XG4gICAgICBoZWlnaHQ6IDEuN3JlbTsgfVxuICAgICAgLnRoZW1lLWRhcmsgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS1ncmF5IGJ1dHRvbi50cmFuc3BhcmVudC1idXR0b24gLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwOyB9XG4gICAgICAudGhlbWUtd2hpdGUgYnV0dG9uLnRyYW5zcGFyZW50LWJ1dHRvbiAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MzQ1NGI7IH1cblxuLmlucHV0LWJsb2NrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIG1hcmdpbi1ib3R0b206IDAuNHJlbTsgfVxuICAuaW5wdXQtYmxvY2sgLndyYXAtbGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgbWluLWhlaWdodDogMi40cmVtOyB9XG4gIC5pbnB1dC1ibG9jayBsYWJlbCB7XG4gICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgbGluZS1oZWlnaHQ6IDIuNHJlbTsgfVxuICAgIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayBsYWJlbCB7XG4gICAgICBjb2xvcjogIzU1NjU3NjsgfVxuICAgIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jayBsYWJlbCB7XG4gICAgICBjb2xvcjogIzU2NWM2MjsgfVxuICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sgbGFiZWwge1xuICAgICAgY29sb3I6ICNhMGE1YWI7IH1cbiAgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3RleHQnXSwgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIC5pbnB1dC1ibG9jayBzZWxlY3Qge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDQuMnJlbTsgfVxuICAgIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSd0ZXh0J10sIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSdwYXNzd29yZCddLCAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2sgc2VsZWN0IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSd0ZXh0J10sIC50aGVtZS1ncmF5IC5pbnB1dC1ibG9jayBpbnB1dFt0eXBlPSdwYXNzd29yZCddLCAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sgc2VsZWN0IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyOTJkMzE7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sgaW5wdXRbdHlwZT0ndGV4dCddLCAudGhlbWUtd2hpdGUgLmlucHV0LWJsb2NrIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10sIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sgc2VsZWN0IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7XG4gICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAuaW5wdXQtYmxvY2sudGV4dGFyZWEge1xuICAgIGhlaWdodDogYXV0bzsgfVxuICAgIC5pbnB1dC1ibG9jay50ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgICBmb250LWZhbWlseTogT3BlblNhbnMsIHNhbnMtc2VyaWY7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBwYWRkaW5nOiAxcmVtO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBtaW4taGVpZ2h0OiA3LjVyZW07XG4gICAgICBtYXgtaGVpZ2h0OiA3LjVyZW07XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgcmVzaXplOiBub25lOyB9XG4gICAgICAudGhlbWUtZGFyayAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICAgICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmlucHV0LWJsb2NrLnRleHRhcmVhIHRleHRhcmVhIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICAgICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaW5wdXQtYmxvY2sudGV4dGFyZWEgdGV4dGFyZWEge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2O1xuICAgICAgICBjb2xvcjogIzQzNDU0YjsgfVxuICAuaW5wdXQtYmxvY2sgLmVycm9yLWJsb2NrIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNHJlbTtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAgIC50aGVtZS1kYXJrIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZTUyNTI7IH1cbiAgICAudGhlbWUtZ3JheSAuaW5wdXQtYmxvY2sgLmVycm9yLWJsb2NrIHtcbiAgICAgIGNvbG9yOiAjZmU1MjUyOyB9XG4gICAgLnRoZW1lLXdoaXRlIC5pbnB1dC1ibG9jayAuZXJyb3ItYmxvY2sge1xuICAgICAgY29sb3I6ICNmZjUyNTI7IH1cblxuaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXdlaWdodDogNDAwO1xuICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcbiAgLXdlYmtpdC10b3VjaC1jb2xsb3V0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7IH1cbiAgLnRoZW1lLWRhcmsgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbyArIGxhYmVsIHtcbiAgICBjb2xvcjogIzU1NjU3NjsgfVxuICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvICsgbGFiZWwge1xuICAgIGNvbG9yOiAjNTY1YzYyOyB9XG4gIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvICsgbGFiZWwge1xuICAgIGNvbG9yOiAjYTBhNWFiOyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvcGFjaXR5OiAwOyB9XG4gIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMC43cmVtO1xuICAgIGxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHdpZHRoOiAxLjRyZW07XG4gICAgaGVpZ2h0OiAxLjRyZW07IH1cbiAgICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDpiZWZvcmUge1xuICAgICAgYm9yZGVyOiAwLjFyZW0gc29saWQgIzQyYTVmNTsgfVxuICAgIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjMmM5NWYxOyB9XG4gIGlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86bm90KGNoZWNrZWQpICsgbGFiZWw6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDFyZW07XG4gICAgbGVmdDogMC4zcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHdpZHRoOiAwLjhyZW07XG4gICAgaGVpZ2h0OiAwLjhyZW07IH1cbiAgICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdyYWRpbyddLnN0eWxlLXJhZGlvOm5vdChjaGVja2VkKSArIGxhYmVsOmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cbiAgICAudGhlbWUtd2hpdGUgaW5wdXRbdHlwZT0ncmFkaW8nXS5zdHlsZS1yYWRpbzpub3QoY2hlY2tlZCkgKyBsYWJlbDphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW86Y2hlY2tlZCArIGxhYmVsOmFmdGVyIHtcbiAgb3BhY2l0eTogMTsgfVxuXG5pbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIHBhZGRpbmctbGVmdDogMy42cmVtO1xuICAtd2Via2l0LXRvdWNoLWNvbGxvdXQ6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94ICsgbGFiZWwge1xuICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gIC50aGVtZS1ncmF5IGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3ggKyBsYWJlbCB7XG4gICAgY29sb3I6ICM1NjVjNjI7IH1cbiAgLnRoZW1lLXdoaXRlIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3ggKyBsYWJlbCB7XG4gICAgY29sb3I6ICNhMGE1YWI7IH1cblxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpub3QoY2hlY2tlZCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiAxLjZyZW07XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XG4gIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpICsgbGFiZWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDEuNnJlbTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgd2lkdGg6IDEuNHJlbTtcbiAgICBoZWlnaHQ6IDEuNHJlbTsgfVxuICAgIC50aGVtZS1kYXJrIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpICsgbGFiZWw6YmVmb3JlIHtcbiAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkICM0ZGIxZmY7IH1cbiAgICAudGhlbWUtZ3JheSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94Om5vdChjaGVja2VkKSArIGxhYmVsOmJlZm9yZSB7XG4gICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCAjNDJhNWY1OyB9XG4gICAgLnRoZW1lLXdoaXRlIGlucHV0W3R5cGU9J2NoZWNrYm94J10uc3R5bGUtY2hlY2tib3g6bm90KGNoZWNrZWQpICsgbGFiZWw6YmVmb3JlIHtcbiAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkICMyYzk1ZjE7IH1cblxuaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKTsgfVxuICAudGhlbWUtZGFyayBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94OmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgLnRoZW1lLWdyYXkgaW5wdXRbdHlwZT0nY2hlY2tib3gnXS5zdHlsZS1jaGVja2JveDpjaGVja2VkICsgbGFiZWw6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG4gIC50aGVtZS13aGl0ZSBpbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94OmNoZWNrZWQgKyBsYWJlbDpiZWZvcmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IH1cblxuLnRoZW1lLWdyYXkgLnN3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IH1cblxuLnRoZW1lLXdoaXRlIC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1kYXJrIC5zd2l0Y2ggLmNpcmNsZS5vbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgLnN3aXRjaCAuY2lyY2xlLm9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgLnN3aXRjaCAuY2lyY2xlLm9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayAuc3dpdGNoIC5jaXJjbGUub2ZmIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSAuc3dpdGNoIC5jaXJjbGUub2ZmIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgLnN3aXRjaCAuY2lyY2xlLm9mZiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhMGE1YWI7IH1cblxuLnRhYmxlLXRvb2x0aXAge1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgcGFkZGluZzogMXJlbSAycmVtO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IH1cbiAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICM0MjUwNWY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjM2U0NjRjO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpO1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wIHtcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAtMnJlbTtcbiAgICAgIGxlZnQ6IGNhbGMoNTAlIC0gMXJlbSk7XG4gICAgICBib3JkZXItd2lkdGg6IDFyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wOmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXRvcC1sZWZ0IHtcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLWxlZnQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IC0xcmVtO1xuICAgICAgbGVmdDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtIDFyZW0gMCAwO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLWxlZnQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQge1xuICAgIG1hcmdpbi10b3A6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IC0xcmVtO1xuICAgICAgcmlnaHQ6IDAuN3JlbTtcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjNDI1MDVmICM0MjUwNWYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS1ncmF5IC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtdG9wLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyAjM2U0NjRjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC10b3AtcmlnaHQ6YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjZmZmZmZmICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20ge1xuICAgIG1hcmdpbi10b3A6IDFyZW07IH1cbiAgICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogLTJyZW07XG4gICAgICBsZWZ0OiBjYWxjKDUwJSAtIDFyZW0pO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b206YmVmb3JlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICMzZTQ2NGMgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbTpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLWxlZnQ6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IC0xcmVtO1xuICAgICAgbGVmdDogMC43cmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmOyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzNlNDY0YyAjM2U0NjRjOyB9XG4gICAgICAudGhlbWUtd2hpdGUgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1ib3R0b20tbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICNmZmZmZmYgI2ZmZmZmZjsgfVxuICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodCB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAgIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAtMXJlbTtcbiAgICAgIHJpZ2h0OiAwLjdyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDAuNXJlbTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7IH1cbiAgICAgIC50aGVtZS1kYXJrIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIzQyNTA1ZiAjNDI1MDVmIHRyYW5zcGFyZW50OyB9XG4gICAgICAudGhlbWUtZ3JheSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbS1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50ICMzZTQ2NGMgIzNlNDY0YyB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgI2ZmZmZmZiAjZmZmZmZmIHRyYW5zcGFyZW50OyB9XG4gIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gICAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgcmlnaHQ6IC0xcmVtO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtIDFyZW0gMCAwO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfVxuICAgICAgLnRoZW1lLWRhcmsgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1sZWZ0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzNlNDY0YyB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC50YWJsZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZmZmZmYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cbiAgICAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLTFyZW07XG4gICAgICBib3JkZXItd2lkdGg6IDFyZW0gMCAwIDFyZW07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkOyB9XG4gICAgICAudGhlbWUtZGFyayAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogIzQyNTA1ZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuICAgICAgLnRoZW1lLWdyYXkgLnRhYmxlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodDpiZWZvcmUge1xuICAgICAgICBib3JkZXItY29sb3I6ICMzZTQ2NGMgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAudGFibGUtdG9vbHRpcC5uZy10b29sdGlwLXJpZ2h0OmJlZm9yZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2ZmZmZmZiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDsgfVxuXG4uYmFsYW5jZS10b29sdGlwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIHBhZGRpbmc6IDEuM3JlbTsgfVxuICAudGhlbWUtZGFyayAuYmFsYW5jZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjNDI1MDVmO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAuYmFsYW5jZS10b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiAjM2U0NjRjO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcmVtIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtd2hpdGUgLmJhbGFuY2UtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDEyMCwgMTIwLCAxMjAsIDAuNSk7XG4gICAgY29sb3I6ICM0MzQ1NGI7IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLXRvcCB7XG4gICAgbWFyZ2luLXRvcDogLTFyZW07IH1cbiAgLmJhbGFuY2UtdG9vbHRpcC5uZy10b29sdGlwLWJvdHRvbSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTsgfVxuICAuYmFsYW5jZS10b29sdGlwLm5nLXRvb2x0aXAtbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xcmVtOyB9XG4gIC5iYWxhbmNlLXRvb2x0aXAubmctdG9vbHRpcC1yaWdodCB7XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07IH1cbiAgLmJhbGFuY2UtdG9vbHRpcCAuYXZhaWxhYmxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjdyZW07IH1cbiAgICAuYmFsYW5jZS10b29sdGlwIC5hdmFpbGFibGUgYiB7XG4gICAgICBmb250LXdlaWdodDogNjAwOyB9XG4gIC5iYWxhbmNlLXRvb2x0aXAgLmxvY2tlZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC43cmVtOyB9XG4gICAgLmJhbGFuY2UtdG9vbHRpcCAubG9ja2VkIGIge1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDsgfVxuICAuYmFsYW5jZS10b29sdGlwIC5saW5rIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7IH1cbiAgICAudGhlbWUtZGFyayAuYmFsYW5jZS10b29sdGlwIC5saW5rIHtcbiAgICAgIGNvbG9yOiAjNGRiMWZmOyB9XG4gICAgLnRoZW1lLWdyYXkgLmJhbGFuY2UtdG9vbHRpcCAubGluayB7XG4gICAgICBjb2xvcjogIzQyYTVmNTsgfVxuICAgIC50aGVtZS13aGl0ZSAuYmFsYW5jZS10b29sdGlwIC5saW5rIHtcbiAgICAgIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDA7IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJiMzY0NDtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLWdyYXkgLm5neC1jb250ZXh0bWVudSAuZHJvcGRvd24tbWVudSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzI5MmQzMTtcbiAgICBib3gtc2hhZG93OiAwIDAgMXJlbSByZ2JhKDAsIDAsIDAsIDAuNSk7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgLmRyb3Bkb3duLW1lbnUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7XG4gICAgYm94LXNoYWRvdzogMCAwIDFyZW0gcmdiYSgxMjAsIDEyMCwgMTIwLCAwLjUpOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgbGkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi5uZ3gtY29udGV4dG1lbnUgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwLjVlbSAxZW07IH1cbiAgLnRoZW1lLWRhcmsgLm5neC1jb250ZXh0bWVudSBhIHtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gIC50aGVtZS13aGl0ZSAubmd4LWNvbnRleHRtZW51IGEge1xuICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gIC50aGVtZS1kYXJrIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAudGhlbWUtZ3JheSAubmd4LWNvbnRleHRtZW51IGE6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1MTU5NjA7XG4gICAgY29sb3I6ICNlMGUwZTA7IH1cbiAgLnRoZW1lLXdoaXRlIC5uZ3gtY29udGV4dG1lbnUgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCB7XG4gIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1kYXJrLnBuZyk7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nKTtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIHtcbiAgYmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLXdoaXRlLnBuZyk7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlNTI1MjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZTUyNTI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmVycm9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY29udGVudCAuaWNvbi5zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNvbnRlbnQgLmljb24uaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5jb250ZW50IC5pY29uLmluZm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tb2RhbC1jb250YWluZXIgLm1vZGFsIC5hY3Rpb24tYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjtcbiAgY29sb3I6ICMxMTE5MjE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmFjdGlvbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmFjdGlvbi1idXR0b24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxO1xuICBjb2xvcjogI2ZlZmVmZTsgfVxuXG4udGhlbWUtZGFyayBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY2xvc2UtYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtbW9kYWwtY29udGFpbmVyIC5tb2RhbCAuY2xvc2UtYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxNTk2MDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1vZGFsLWNvbnRhaW5lciAubW9kYWwgLmNsb3NlLWJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIHtcbiAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIHtcbiAgYm9yZGVyLXRvcDogMC4ycmVtIHNvbGlkICMyZjM0Mzg7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSB7XG4gIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCAjZWJlYmViOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmxhYmVsIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwubGFiZWwge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwubGFiZWwge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHJhbnNhY3Rpb24tZGV0YWlscyAudGFibGUgLnJvdyAuY2VsbC52YWx1ZSB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLnZhbHVlIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLnZhbHVlIHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwua2V5LXZhbHVlIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXRyYW5zYWN0aW9uLWRldGFpbHMgLnRhYmxlIC5yb3cgLmNlbGwua2V5LXZhbHVlIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC10cmFuc2FjdGlvbi1kZXRhaWxzIC50YWJsZSAucm93IC5jZWxsLmtleS12YWx1ZSB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbmFwcC1tYWluLCBhcHAtY3JlYXRlLXdhbGxldCwgYXBwLW9wZW4td2FsbGV0LCBhcHAtcmVzdG9yZS13YWxsZXQsIGFwcC1zZWVkLXBocmFzZSwgYXBwLXdhbGxldC1kZXRhaWxzLCBhcHAtYXNzaWduLWFsaWFzLCBhcHAtZWRpdC1hbGlhcywgYXBwLXRyYW5zZmVyLWFsaWFzLCBhcHAtc2V0dGluZ3MsIGFwcC1sb2dpbiB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICBwYWRkaW5nOiAzcmVtO1xuICBtaW4td2lkdGg6IDg1cmVtOyB9XG4gIGFwcC1tYWluIC5jb250ZW50LCBhcHAtY3JlYXRlLXdhbGxldCAuY29udGVudCwgYXBwLW9wZW4td2FsbGV0IC5jb250ZW50LCBhcHAtcmVzdG9yZS13YWxsZXQgLmNvbnRlbnQsIGFwcC1zZWVkLXBocmFzZSAuY29udGVudCwgYXBwLXdhbGxldC1kZXRhaWxzIC5jb250ZW50LCBhcHAtYXNzaWduLWFsaWFzIC5jb250ZW50LCBhcHAtZWRpdC1hbGlhcyAuY29udGVudCwgYXBwLXRyYW5zZmVyLWFsaWFzIC5jb250ZW50LCBhcHAtc2V0dGluZ3MgLmNvbnRlbnQsIGFwcC1sb2dpbiAuY29udGVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmc6IDNyZW07XG4gICAgbWluLWhlaWdodDogMTAwJTsgfVxuICAgIC50aGVtZS1kYXJrIGFwcC1tYWluIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtY3JlYXRlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLW9wZW4td2FsbGV0IC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtcmVzdG9yZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1zZWVkLXBocmFzZSAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLXdhbGxldC1kZXRhaWxzIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtYXNzaWduLWFsaWFzIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtZWRpdC1hbGlhcyAuY29udGVudCwgLnRoZW1lLWRhcmsgYXBwLXRyYW5zZmVyLWFsaWFzIC5jb250ZW50LCAudGhlbWUtZGFyayBhcHAtc2V0dGluZ3MgLmNvbnRlbnQsIC50aGVtZS1kYXJrIGFwcC1sb2dpbiAuY29udGVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSk7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IGFwcC1tYWluIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtY3JlYXRlLXdhbGxldCAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLW9wZW4td2FsbGV0IC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtcmVzdG9yZS13YWxsZXQgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1zZWVkLXBocmFzZSAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLXdhbGxldC1kZXRhaWxzIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtYXNzaWduLWFsaWFzIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtZWRpdC1hbGlhcyAuY29udGVudCwgLnRoZW1lLWdyYXkgYXBwLXRyYW5zZmVyLWFsaWFzIC5jb250ZW50LCAudGhlbWUtZ3JheSBhcHAtc2V0dGluZ3MgLmNvbnRlbnQsIC50aGVtZS1ncmF5IGFwcC1sb2dpbiAuY29udGVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS13aGl0ZSBhcHAtbWFpbiAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLW9wZW4td2FsbGV0IC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLXJlc3RvcmUtd2FsbGV0IC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLXdhbGxldC1kZXRhaWxzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLWFzc2lnbi1hbGlhcyAuY29udGVudCwgLnRoZW1lLXdoaXRlIGFwcC1lZGl0LWFsaWFzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLXRyYW5zZmVyLWFsaWFzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50LCAudGhlbWUtd2hpdGUgYXBwLWxvZ2luIC5jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgYXBwLW1haW4gLmNvbnRlbnQgLmhlYWQsIGFwcC1jcmVhdGUtd2FsbGV0IC5jb250ZW50IC5oZWFkLCBhcHAtb3Blbi13YWxsZXQgLmNvbnRlbnQgLmhlYWQsIGFwcC1yZXN0b3JlLXdhbGxldCAuY29udGVudCAuaGVhZCwgYXBwLXNlZWQtcGhyYXNlIC5jb250ZW50IC5oZWFkLCBhcHAtd2FsbGV0LWRldGFpbHMgLmNvbnRlbnQgLmhlYWQsIGFwcC1hc3NpZ24tYWxpYXMgLmNvbnRlbnQgLmhlYWQsIGFwcC1lZGl0LWFsaWFzIC5jb250ZW50IC5oZWFkLCBhcHAtdHJhbnNmZXItYWxpYXMgLmNvbnRlbnQgLmhlYWQsIGFwcC1zZXR0aW5ncyAuY29udGVudCAuaGVhZCwgYXBwLWxvZ2luIC5jb250ZW50IC5oZWFkIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7IH1cblxuLnRoZW1lLWRhcmsgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAge1xuICBjb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLW1haW4gLmNvbnRlbnQgLmFkZC13YWxsZXQgLmFkZC13YWxsZXQtaGVscCB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tYWluIC5jb250ZW50IC5hZGQtd2FsbGV0IC5hZGQtd2FsbGV0LWhlbHAgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtbWFpbiAuY29udGVudCAuYWRkLXdhbGxldCAuYWRkLXdhbGxldC1oZWxwIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2VlZC1waHJhc2UgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxZTI3O1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2VlZC1waHJhc2UgLnNlZWQtcGhyYXNlLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjkyZDMxO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlZWQtcGhyYXNlIC5zZWVkLXBocmFzZS1jb250ZW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldC1kZXRhaWxzIC5zZWVkLXBocmFzZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxNzFlMjc7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldC1kZXRhaWxzIC5zZWVkLXBocmFzZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTJkMzE7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQtZGV0YWlscyAuc2VlZC1waHJhc2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlNmU2OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZXR0aW5ncyAuY29udGVudCAudGhlbWUtc2VsZWN0aW9uIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNldHRpbmdzIC5jb250ZW50IC50aGVtZS1zZWxlY3Rpb24ge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG5hcHAtbG9naW4ge1xuICBtaW4td2lkdGg6IGluaGVyaXQ7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzLCAzMSwgMzksIDAuNSk7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzLCAyNSwgMjcsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciBoMyB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWhlYWRlciBoMyB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgaDMge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtaGVhZGVyIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAudGV4dCB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAudGV4dCB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmO1xuICBjb2xvcjogIzExMTkyMTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7XG4gIGNvbG9yOiAjMWExYTFhOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7XG4gIGNvbG9yOiAjZmVmZWZlOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2Y0YTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZGNkYzsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93IC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5wcm9ncmVzcy1iYXIgLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQgLnNpZGViYXItYWNjb3VudC1yb3cgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93LmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50IC5zaWRlYmFyLWFjY291bnQtcm93LmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudCAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjYTBhNWFiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSk7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFlODhlNTtcbiAgY29sb3I6ICNmZmZmZmY7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAudGV4dCB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLnRleHQge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAudGV4dCB7XG4gIGNvbG9yOiAjOTFiYWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7XG4gIGNvbG9yOiAjMTExOTIxOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cgLmluZGljYXRvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7XG4gIGNvbG9yOiAjMWExYTFhOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1hY2NvdW50cyAuc2lkZWJhci1hY2NvdW50cy1saXN0IC5zaWRlYmFyLWFjY291bnQuYWN0aXZlIC5zaWRlYmFyLWFjY291bnQtcm93IC5zd2l0Y2gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdyAuc3dpdGNoIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudC5hY3RpdmUgLnNpZGViYXItYWNjb3VudC1yb3cuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50LmFjdGl2ZSAuc2lkZWJhci1hY2NvdW50LXJvdy5hY2NvdW50LXN5bmNocm9uaXphdGlvbiB7XG4gIGNvbG9yOiAjOTFiYWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLWFjY291bnRzIC5zaWRlYmFyLWFjY291bnRzLWxpc3QgLnNpZGViYXItYWNjb3VudDpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU4LCA3MiwgOTAsIDAuNSk7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50OmhvdmVyOm5vdCguYWN0aXZlKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzAsIDc2LCA4MSwgMC41KTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItYWNjb3VudHMgLnNpZGViYXItYWNjb3VudHMtbGlzdCAuc2lkZWJhci1hY2NvdW50OmhvdmVyOm5vdCguYWN0aXZlKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zZXR0aW5ncyB7XG4gIGJvcmRlci1ib3R0b206IDAuMnJlbSBzb2xpZCAjMWYyODMzOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICMyZTMzMzc7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4ycmVtIHNvbGlkICNlYmViZWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXNldHRpbmdzIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc2V0dGluZ3MgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICM1NTY1NzY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmU1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9mZmxpbmU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAub2ZmbGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnN0YXR1cy1jb250YWluZXIgLm9ubGluZTpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDdjZjhkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC5vbmxpbmU6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC50ZXN0bmV0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAuc3RhdHVzLWNvbnRhaW5lciAudGVzdG5ldCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5zdGF0dXMtY29udGFpbmVyIC50ZXN0bmV0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAuc3luY2luZyAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2Y0YTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzYzYTNlOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5zeW5jaW5nIC5wcm9ncmVzcy1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGNkY2RjOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zaWRlYmFyIC5zaWRlYmFyLXN5bmNocm9uaXphdGlvbi1zdGF0dXMgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnN5bmNpbmcgLnByb2dyZXNzLWJhciAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Y2RhOWQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAuc3luY2luZyAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAuc3luY2luZyAucHJvZ3Jlc3MtYmFyIC5maWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ2YzE3MjsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5sb2FkaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVjZGE5ZDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc2lkZWJhciAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIC5sb2FkaW5nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQ3Y2Y4ZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNpZGViYXIgLnNpZGViYXItc3luY2hyb25pemF0aW9uLXN0YXR1cyAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAubG9hZGluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLmhlYWRlciBidXR0b24ge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmhlYWRlciBidXR0b24ge1xuICBjb2xvcjogIzQzNDU0YjsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC5oZWFkZXIgYnV0dG9uIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAuaGVhZGVyIGJ1dHRvbiAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAuaGVhZGVyIC5hbGlhcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAuaGVhZGVyIC5hbGlhcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmhlYWRlciAuYWxpYXMgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLmFkZHJlc3Mge1xuICBjb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC5hZGRyZXNzIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLmFkZHJlc3Mge1xuICBjb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC5hZGRyZXNzIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC5hZGRyZXNzIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAuYWRkcmVzcyAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMywgMjUsIDI3LCAwLjUpOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjQsIDIyNCwgMjI0LCAwLjUpOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmO1xuICBjb2xvcjogIzExMTkyMTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWhlYWRlciAudGFiIC5pbmRpY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1O1xuICBjb2xvcjogIzFhMWExYTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYiAuaW5kaWNhdG9yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQzLCA1NCwgNjgsIDAuNSk7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXdhbGxldCAudGFicyAudGFicy1oZWFkZXIgLnRhYi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtaGVhZGVyIC50YWIuYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9XG5cbi50aGVtZS1kYXJrIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtd2FsbGV0IC50YWJzIC50YWJzLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDM3LCA0MCwgNDMsIDAuNSk7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC13YWxsZXQgLnRhYnMgLnRhYnMtY29udGVudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc2VuZCAuZm9ybS1zZW5kIC5zZW5kLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICNlMGUwZTA7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IHtcbiAgY29sb3I6ICM0MzQ1NGI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zZW5kIC5mb3JtLXNlbmQgLnNlbmQtc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuc2VuZC1zZWxlY3QgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zZW5kIC5mb3JtLXNlbmQgLmFkZGl0aW9uYWwtZGV0YWlscyB7XG4gIGJvcmRlcjogMC4ycmVtIHNvbGlkICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJmMzQzODsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXNlbmQgLmZvcm0tc2VuZCAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgI2ViZWJlYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXJlY2VpdmUgLmJ0bi1jb3B5LWFkZHJlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcmVjZWl2ZSAuYnRuLWNvcHktYWRkcmVzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzEpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4MjAyYTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjUyOTJkOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMSkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bisyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxODIwMmE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI1MjkyZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzIpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoNG4rMykge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzMpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLWRhcmsgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKDRuKzQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZCg0bis0KSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi50aGVtZS1kYXJrIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNDNmNGE7IH1cblxuLnRoZW1lLWdyYXkgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cyAuY29uZmlybWF0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM2M2EzZTsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cyAuY29uZmlybWF0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZGNkYzsgfVxuXG4udGhlbWUtZGFyayBhcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzIC5jb25maXJtYXRpb24gLmZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0N2NmOGQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1oaXN0b3J5IHRhYmxlIHRib2R5IHRyIC5zdGF0dXMgLmNvbmZpcm1hdGlvbiAuZmlsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuYXBwLWhpc3RvcnkgdGFibGUgdGJvZHkgdHIgLnN0YXR1cy5zZW5kIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjsgfVxuXG5hcHAtaGlzdG9yeSB0YWJsZSB0Ym9keSB0ciAuc3RhdHVzLnJlY2VpdmVkIC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYzg1MzsgfVxuXG4udGhlbWUtZGFyayBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5uZXcsIC50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLmFsZXJ0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlNTI1MjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5uZXcsIC50aGVtZS1ncmF5IGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLmFsZXJ0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlNTI1MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24ubmV3LCAudGhlbWUtd2hpdGUgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uYWxlcnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnB1cmNoYXNlLCAudGhlbWUtZGFyayBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5zZWxsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtY29udHJhY3RzIC53cmFwLXRhYmxlIC5jb250cmFjdCAuaWNvbi5wdXJjaGFzZSwgLnRoZW1lLWdyYXkgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uc2VsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1jb250cmFjdHMgLndyYXAtdGFibGUgLmNvbnRyYWN0IC5pY29uLnB1cmNoYXNlLCAudGhlbWUtd2hpdGUgYXBwLWNvbnRyYWN0cyAud3JhcC10YWJsZSAuY29udHJhY3QgLmljb24uc2VsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5wdXJjaGFzZS1zZWxlY3Qge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXNlbGVjdCB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXNlbGVjdCB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXNlbGVjdCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc2VsZWN0IC5pY29uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjOTVmMTsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLmZvcm0tcHVyY2hhc2UgLnB1cmNoYXNlLXN0YXRlcyB7XG4gIGNvbG9yOiAjNGRiMWZmOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc3RhdGVzIHtcbiAgY29sb3I6ICM0MmE1ZjU7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAucHVyY2hhc2Utc3RhdGVzIHtcbiAgY29sb3I6ICMyYzk1ZjE7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5hZGRpdGlvbmFsLWRldGFpbHMge1xuICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjMmIzNjQ0OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAuZm9ybS1wdXJjaGFzZSAuYWRkaXRpb25hbC1kZXRhaWxzIHtcbiAgYm9yZGVyOiAwLjJyZW0gc29saWQgIzJmMzQzODsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXB1cmNoYXNlIC5mb3JtLXB1cmNoYXNlIC5hZGRpdGlvbmFsLWRldGFpbHMge1xuICBib3JkZXI6IDAuMnJlbSBzb2xpZCAjZWJlYmViOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2Y0YTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtcHVyY2hhc2UgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjNhM2U7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RjZGNkYzsgfVxuXG4udGhlbWUtZGFyayBhcHAtcHVyY2hhc2UgLnByb2dyZXNzLWJhci1jb250YWluZXIgLnByb2dyZXNzLWJhciAucHJvZ3Jlc3MtYmFyLWZ1bGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWNkYTlkOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0N2NmOGQ7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1wdXJjaGFzZSAucHJvZ3Jlc3MtYmFyLWNvbnRhaW5lciAucHJvZ3Jlc3MtYmFyIC5wcm9ncmVzcy1iYXItZnVsbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NmMxNzI7IH1cblxuYXBwLW1lc3NhZ2VzIHRhYmxlIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIHNwYW4ge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG4udGhlbWUtZGFyayBhcHAtbWVzc2FnZXMgdGFibGUgdGJvZHkgdHIgdGQ6Zmlyc3QtY2hpbGQgLmljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmU1MjUyOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1tZXNzYWdlcyB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZTUyNTI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1tZXNzYWdlcyB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCAuaWNvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjUyNTI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXR5cGluZy1tZXNzYWdlIC5oZWFkIC5pbnRlcmxvY3V0b3Ige1xuICBjb2xvcjogIzRkYjFmZjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtdHlwaW5nLW1lc3NhZ2UgLmhlYWQgLmludGVybG9jdXRvciB7XG4gIGNvbG9yOiAjNDJhNWY1OyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLmhlYWQgLmludGVybG9jdXRvciB7XG4gIGNvbG9yOiAjMmM5NWYxOyB9XG5cbi50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuZGF0ZSB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuZGF0ZSB7XG4gIGNvbG9yOiAjNTY1YzYyOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmRhdGUge1xuICBjb2xvcjogI2EwYTVhYjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJhMzU0NDsgfVxuXG4udGhlbWUtZ3JheSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzYzYzsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH1cblxuYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5teTpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IC0xLjFyZW07XG4gIGJvcmRlcjogMS4ycmVtIHNvbGlkIHRyYW5zcGFyZW50OyB9XG4gIC50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXk6YmVmb3JlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjMmEzNTQ0OyB9XG4gIC50aGVtZS1ncmF5IGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYubXk6YmVmb3JlIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjMzAzNjNjOyB9XG4gIC50aGVtZS13aGl0ZSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2Lm15OmJlZm9yZSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZjsgfVxuXG4udGhlbWUtZGFyayBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4MjAyYTsgfVxuXG4udGhlbWUtZ3JheSBhcHAtdHlwaW5nLW1lc3NhZ2UgLm1lc3NhZ2VzLWNvbnRlbnQgLm1lc3NhZ2VzLWxpc3QgZGl2LmJ1ZGR5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI1MjkyZDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZGVkZWQ7IH1cblxuYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAtMS4xcmVtO1xuICB0b3A6IDA7XG4gIGJvcmRlcjogMS4ycmVtIHNvbGlkIHRyYW5zcGFyZW50OyB9XG4gIC50aGVtZS1kYXJrIGFwcC10eXBpbmctbWVzc2FnZSAubWVzc2FnZXMtY29udGVudCAubWVzc2FnZXMtbGlzdCBkaXYuYnVkZHk6YWZ0ZXIge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICMxODIwMmE7IH1cbiAgLnRoZW1lLWdyYXkgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeTphZnRlciB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogIzI1MjkyZDsgfVxuICAudGhlbWUtd2hpdGUgYXBwLXR5cGluZy1tZXNzYWdlIC5tZXNzYWdlcy1jb250ZW50IC5tZXNzYWdlcy1saXN0IGRpdi5idWRkeTphZnRlciB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogI2VkZWRlZDsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtaGVhZGVyIC5nZW5lcmFsIC5sYWJlbCB7XG4gIGNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLmdlbmVyYWwgLmxhYmVsIHtcbiAgY29sb3I6ICM1NjVjNjI7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLmdlbmVyYWwgLmxhYmVsIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAub3B0aW9ucyB7XG4gIGNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLmdlbmVyYWwgLm9wdGlvbnMge1xuICBjb2xvcjogI2UwZTBlMDsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LWhlYWRlciAuZ2VuZXJhbCAub3B0aW9ucyB7XG4gIGNvbG9yOiAjNDM0NTRiOyB9XG5cbmFwcC1zdGFraW5nIC5jaGFydC1oZWFkZXIgLnNlbGVjdGVkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgZmxleC1ncm93OiAxO1xuICBmb250LXNpemU6IDEuNnJlbTsgfVxuXG4udGhlbWUtZGFyayBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAudGl0bGUge1xuICBjb2xvcjogIzU1NjU3NjsgfVxuXG4udGhlbWUtZ3JheSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAudGl0bGUge1xuICBjb2xvcjogIzU2NWM2MjsgfVxuXG4udGhlbWUtd2hpdGUgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLnRpdGxlIHtcbiAgY29sb3I6ICNhMGE1YWI7IH1cblxuLnRoZW1lLWRhcmsgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyYjM2NDQ7IH1cblxuLnRoZW1lLWdyYXkgYXBwLXN0YWtpbmcgLmNoYXJ0LW9wdGlvbnMgLm9wdGlvbnMgYnV0dG9uIHtcbiAgY29sb3I6ICNlMGUwZTA7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTJkMzE7IH1cblxuLnRoZW1lLXdoaXRlIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC5vcHRpb25zIGJ1dHRvbiB7XG4gIGNvbG9yOiAjNDM0NTRiO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwOyB9XG5cbi50aGVtZS1kYXJrIGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC5vcHRpb25zIGJ1dHRvbi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2OyB9XG5cbi50aGVtZS1ncmF5IGFwcC1zdGFraW5nIC5jaGFydC1vcHRpb25zIC5vcHRpb25zIGJ1dHRvbi5hY3RpdmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTE1OTYwOyB9XG5cbi50aGVtZS13aGl0ZSBhcHAtc3Rha2luZyAuY2hhcnQtb3B0aW9ucyAub3B0aW9ucyBidXR0b24uYWN0aXZlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuXG4uaGVhZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmb250LXNpemU6IDEuM3JlbTtcbiAgcGFkZGluZzogMCAzcmVtO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAzcmVtOyB9XG4gIC50aGVtZS1kYXJrIC5oZWFkIHtcbiAgICBjb2xvcjogIzRkYjFmZjsgfVxuICAudGhlbWUtZ3JheSAuaGVhZCB7XG4gICAgY29sb3I6ICM0MmE1ZjU7IH1cbiAgLnRoZW1lLXdoaXRlIC5oZWFkIHtcbiAgICBjb2xvcjogIzJjOTVmMTsgfVxuICAuaGVhZCAuYnJlYWRjcnVtYnMgPiBzcGFuOm5vdCg6bGFzdC1jaGlsZCksIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luLXJpZ2h0OiAyMHB4OyB9XG4gICAgLmhlYWQgLmJyZWFkY3J1bWJzID4gc3Bhbjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyLCAuaGVhZCAuYnJlYWRjcnVtYnMgYTpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMC41cmVtO1xuICAgICAgcmlnaHQ6IC0xLjVyZW07XG4gICAgICB3aWR0aDogMC45cmVtO1xuICAgICAgaGVpZ2h0OiAwLjlyZW07XG4gICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xuICAgICAgbWFzay1zaXplOiBjb3ZlcjsgfVxuICAgICAgLnRoZW1lLWRhcmsgLmhlYWQgLmJyZWFkY3J1bWJzID4gc3Bhbjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyLCAudGhlbWUtZGFyayAuaGVhZCAuYnJlYWRjcnVtYnMgYTpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzRkYjFmZjsgfVxuICAgICAgLnRoZW1lLWdyYXkgLmhlYWQgLmJyZWFkY3J1bWJzID4gc3Bhbjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyLCAudGhlbWUtZ3JheSAuaGVhZCAuYnJlYWRjcnVtYnMgYTpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzQyYTVmNTsgfVxuICAgICAgLnRoZW1lLXdoaXRlIC5oZWFkIC5icmVhZGNydW1icyA+IHNwYW46bm90KDpsYXN0LWNoaWxkKTphZnRlciwgLnRoZW1lLXdoaXRlIC5oZWFkIC5icmVhZGNydW1icyBhOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG4gIC5oZWFkIC5iYWNrLWJ0biB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjNGRiMWZmO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjNyZW07XG4gICAgcGFkZGluZzogMDtcbiAgICBoZWlnaHQ6IGF1dG87IH1cbiAgICAuaGVhZCAuYmFjay1idG4gLmljb24ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjdyZW07XG4gICAgICBtYXNrOiB1cmwofnNyYy9hc3NldHMvaWNvbnMvYmFjay5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgICB3aWR0aDogMC45cmVtO1xuICAgICAgaGVpZ2h0OiAwLjlyZW07IH1cbiAgICAgIC50aGVtZS1kYXJrIC5oZWFkIC5iYWNrLWJ0biAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0ZGIxZmY7IH1cbiAgICAgIC50aGVtZS1ncmF5IC5oZWFkIC5iYWNrLWJ0biAuaWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0MmE1ZjU7IH1cbiAgICAgIC50aGVtZS13aGl0ZSAuaGVhZCAuYmFjay1idG4gLmljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmM5NWYxOyB9XG5cbi5zY3JvbGxlZC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07IH1cblxuLnNjcm9sbGVkLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cblxuLnNjcm9sbGVkLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm9yZGVyOiAwLjI1cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07IH1cblxuLnNjcm9sbGVkLWNvbnRlbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1NjU3NjsgfVxuXG50YWJsZSB7XG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xuICB3aWR0aDogMTAwJTsgfVxuICB0YWJsZSB0aGVhZCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgfVxuICAgIC50aGVtZS1kYXJrIHRhYmxlIHRoZWFkIHtcbiAgICAgIGNvbG9yOiAjNTU2NTc2OyB9XG4gICAgLnRoZW1lLWdyYXkgdGFibGUgdGhlYWQge1xuICAgICAgY29sb3I6ICM1NjVjNjI7IH1cbiAgICAudGhlbWUtd2hpdGUgdGFibGUgdGhlYWQge1xuICAgICAgY29sb3I6ICNhMGE1YWI7IH1cbiAgICB0YWJsZSB0aGVhZCB0ciB7XG4gICAgICBoZWlnaHQ6IDRyZW07IH1cbiAgICAgIHRhYmxlIHRoZWFkIHRyIHRoIHtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsgfVxuICAgICAgICB0YWJsZSB0aGVhZCB0ciB0aDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtOyB9XG4gICAgICAgIHRhYmxlIHRoZWFkIHRyIHRoOmxhc3QtY2hpbGQge1xuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07IH1cbiAgdGFibGUgdGJvZHkge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgICAudGhlbWUtZGFyayB0YWJsZSB0Ym9keSB7XG4gICAgICBjb2xvcjogI2UwZTBlMDsgfVxuICAgIC50aGVtZS1ncmF5IHRhYmxlIHRib2R5IHtcbiAgICAgIGNvbG9yOiAjZTBlMGUwOyB9XG4gICAgLnRoZW1lLXdoaXRlIHRhYmxlIHRib2R5IHtcbiAgICAgIGNvbG9yOiAjNDM0NTRiOyB9XG4gICAgdGFibGUgdGJvZHkgdHIge1xuICAgICAgaGVpZ2h0OiAzLjVyZW07IH1cbiAgICAgIC50aGVtZS1kYXJrIHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzE4MjAyYTsgfVxuICAgICAgLnRoZW1lLWdyYXkgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjUyOTJkOyB9XG4gICAgICAudGhlbWUtd2hpdGUgdGFibGUgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG4gICAgICB0YWJsZSB0Ym9keSB0ciB0ZCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjdyZW07XG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgbWF4LXdpZHRoOiAyMHJlbTsgfVxuICAgICAgICB0YWJsZSB0Ym9keSB0ciB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAzcmVtOyB9XG4gICAgICAgIHRhYmxlIHRib2R5IHRyIHRkOmxhc3QtY2hpbGQge1xuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtTGlnaHQudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDMwMDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1SZWd1bGFyLnR0Zik7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtU2VtaUJvbGQudHRmKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1Cb2xkLnR0Zik7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7IH1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtRXh0cmFCb2xkLnR0Zik7XG4gIGZvbnQtd2VpZ2h0OiA4MDA7IH1cblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMHB4OyB9XG5cbmJvZHkge1xuICBmb250LWZhbWlseTogT3BlblNhbnMsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMS42cmVtO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogMTAwdmg7IH1cbiAgYm9keS50aGVtZS1kYXJrIHtcbiAgICBiYWNrZ3JvdW5kOiAjMTMxOTIxIHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1kYXJrLnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7IH1cbiAgYm9keS50aGVtZS1ncmF5IHtcbiAgICBiYWNrZ3JvdW5kOiAjMTAxNDE3IHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC1ncmF5LnBuZ1wiKSBuby1yZXBlYXQgY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7IH1cbiAgYm9keS50aGVtZS13aGl0ZSB7XG4gICAgYmFja2dyb3VuZDogI2VlZWVlZSB1cmwoXCJhc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtd2hpdGUucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsgfVxuICBib2R5IGFwcC1yb290IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTsgfVxuIiwiLy8qICoqKioqKiogcmVzZXQgJiBub3JtYWxpemUgKioqKioqKiAgKi8vXHJcblxyXG4vLyBib3gtc2l6aW5nIHRoZSBzYW1lIGZvciBhbGwgZWxlbWVudHNcclxuaHRtbCB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcbiosICo6YmVmb3JlLCAqOmFmdGVyIHtcclxuICBib3gtc2l6aW5nOiBpbmhlcml0O1xyXG4gIC13ZWJraXQtYm94LXNpemluZzogaW5oZXJpdDtcclxuICAtbW96LWJveC1zaXppbmc6IGluaGVyaXQ7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgQGluY2x1ZGUgdW5TZWxlY3Q7XHJcbn1cclxuXHJcbmh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcclxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxyXG5hLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXHJcbmRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcclxuc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcclxuYiwgdSwgaSwgY2VudGVyLFxyXG5kbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxyXG5maWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcclxudGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXHJcbmFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxyXG5maWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXHJcbm1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxyXG50aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xyXG4gICAgYm9yZGVyOiAwO1xyXG4gICAgZm9udC1zaXplOiAxMDAlO1xyXG4gICAgZm9udDogaW5oZXJpdDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcclxufVxyXG5hcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLFxyXG5mb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtZW51LCBuYXYsIHNlY3Rpb24ge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbmJvZHkge1xyXG4gICBsaW5lLWhlaWdodDogMTtcclxuICAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG59XHJcbm9sLCB1bCB7XHJcbiAgICBsaXN0LXN0eWxlOiBub25lO1xyXG59XHJcbmJsb2NrcXVvdGUsIHEge1xyXG4gICAgcXVvdGVzOiBub25lO1xyXG59XHJcbmJsb2NrcXVvdGU6YmVmb3JlLCBibG9ja3F1b3RlOmFmdGVyLFxyXG5xOmJlZm9yZSwgcTphZnRlciB7XHJcbiAgICBjb250ZW50OiBub25lO1xyXG59XHJcblxyXG4vL3RhYmxlXHJcbnRhYmxlIHtcclxuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XHJcbiAgICBib3JkZXItc3BhY2luZzogMDtcclxufVxyXG50ZCxcclxudGgge1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbi8vZm9ybXMgZWxlbWVudFxyXG5pbnB1dCB7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgJjotd2Via2l0LWF1dG9maWxsIHtcclxuICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMCAxMDAwcHggd2hpdGUgaW5zZXQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbmJ1dHRvbixcclxuaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLFxyXG5pbnB1dFt0eXBlPVwicmVzZXRcIl0sXHJcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xyXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBvdXRsaW5lOiBub25lO1xyXG59XHJcbmJ1dHRvbltkaXNhYmxlZF0sXHJcbmh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcclxuICBjdXJzb3I6IGRlZmF1bHQ7XHJcbn1cclxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxyXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XHJcbiAgYm9yZGVyOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbn1cclxuaW5wdXQge1xyXG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XHJcbn1cclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XHJcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbn1cclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcclxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XHJcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG59XHJcblxyXG5cclxuLy9saW5rXHJcbmEge1xyXG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHQmOmFjdGl2ZSxcclxuXHQmOmhvdmVyLFxyXG5cdCY6Zm9jdXMge1xyXG5cdFx0b3V0bGluZTogMDtcclxuXHR9XHJcbn1cclxuXHJcbmkgeyBmb250LXN0eWxlOiBpdGFsaWM7IH1cclxuYiwgc3Ryb25nIHsgZm9udC13ZWlnaHQ6IDcwMDsgICB9XHJcblxyXG4vLyBpbWFnZXNcclxuaW1nIHtcclxuXHR3aWR0aDogYXV0bztcclxuXHRtYXgtd2lkdGg6IDEwMCU7XHJcblx0aGVpZ2h0OiBhdXRvO1xyXG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcblx0Ym9yZGVyOiAwO1xyXG59XHJcblxyXG4uaGlkZGVuIHtcclxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuIiwiYnV0dG9uIHtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gIGZvbnQtc2l6ZTogMS41cmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBwYWRkaW5nOiAwIDFyZW07XHJcbiAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICY6ZGlzYWJsZWQ6bm90KC50cmFuc3BhcmVudC1idXR0b24pIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGRpc2FibGVkQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoZGlzYWJsZWRCdXR0b25Ib3ZlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5ibHVlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZUJ1dHRvbkhvdmVyQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmdyZWVuLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYWx0ZXJuYXRpdmVUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGdyZWVuQnV0dG9uSG92ZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYudHVycXVvaXNlLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0dXJxdW9pc2VCdXR0b25CYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0dXJxdW9pc2VCdXR0b25Ib3ZlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi50cmFuc3BhcmVudC1idXR0b24ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAuaWNvbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcclxuICAgICAgbWFzazogdXJsKH5zcmMvYXNzZXRzL2ljb25zL2NvbXBsZXRlLXRlc3R3YWxsZXQuc3ZnKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgICB3aWR0aDogMS43cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuN3JlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG4uaW5wdXQtYmxvY2sge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBtYXJnaW4tYm90dG9tOiAwLjRyZW07XHJcblxyXG4gIC53cmFwLWxhYmVsIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgbWluLWhlaWdodDogMi40cmVtO1xyXG4gIH1cclxuXHJcbiAgbGFiZWwge1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlucHV0W3R5cGU9J3RleHQnXSwgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXSwgc2VsZWN0IHtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiA0LjJyZW07XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLnRleHRhcmVhIHtcclxuICAgIGhlaWdodDogYXV0bztcclxuXHJcbiAgICB0ZXh0YXJlYSB7XHJcbiAgICAgIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICBmb250LXNpemU6IDEuNHJlbTtcclxuICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgcGFkZGluZzogMXJlbTtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1pbi13aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICBtaW4taGVpZ2h0OiA3LjVyZW07XHJcbiAgICAgIG1heC1oZWlnaHQ6IDcuNXJlbTtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgcmVzaXplOiBub25lO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGlucHV0QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZXJyb3ItYmxvY2sge1xyXG4gICAgZm9udC1zaXplOiAxcmVtO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNHJlbTtcclxuICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmlucHV0W3R5cGU9J3JhZGlvJ10uc3R5bGUtcmFkaW8ge1xyXG5cclxuICAmICsgbGFiZWwge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgcGFkZGluZy1sZWZ0OiAyLjRyZW07XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIEBpbmNsdWRlIHVuU2VsZWN0O1xyXG4gIH1cclxuXHJcbiAgJjpub3QoY2hlY2tlZCkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgb3BhY2l0eTogMDtcclxuXHJcbiAgICAmICsgbGFiZWwge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB9XHJcblxyXG4gICAgJiArIGxhYmVsOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMC43cmVtO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICB3aWR0aDogMS40cmVtO1xyXG4gICAgICBoZWlnaHQ6IDEuNHJlbTtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4xcmVtIHNvbGlkIHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYgKyBsYWJlbDphZnRlciB7XHJcbiAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMXJlbTtcclxuICAgICAgbGVmdDogMC4zcmVtO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgIHdpZHRoOiAwLjhyZW07XHJcbiAgICAgIGhlaWdodDogMC44cmVtO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmOmNoZWNrZWQge1xyXG5cclxuICAgICYgKyBsYWJlbDphZnRlciB7XHJcbiAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5pbnB1dFt0eXBlPSdjaGVja2JveCddLnN0eWxlLWNoZWNrYm94IHtcclxuXHJcbiAgJiArIGxhYmVsIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIHBhZGRpbmctbGVmdDogMy42cmVtO1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSB1blNlbGVjdDtcclxuICB9XHJcblxyXG4gICY6bm90KGNoZWNrZWQpIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgbGVmdDogMS42cmVtO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG5cclxuICAgICYgKyBsYWJlbCB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICAmICsgbGFiZWw6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogJyc7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiA1MCU7XHJcbiAgICAgIGxlZnQ6IDEuNnJlbTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgICAgd2lkdGg6IDEuNHJlbTtcclxuICAgICAgaGVpZ2h0OiAxLjRyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXI6IDAuMXJlbSBzb2xpZCB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICY6Y2hlY2tlZCB7XHJcblxyXG4gICAgJiArIGxhYmVsOmJlZm9yZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9jb21wbGV0ZS10ZXN0d2FsbGV0LnN2Zyk7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5zd2l0Y2gge1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzd2l0Y2hCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmNpcmNsZSB7XHJcblxyXG4gICAgJi5vbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLm9mZiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQob3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4udGFibGUtdG9vbHRpcCB7XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgcGFkZGluZzogMXJlbSAycmVtO1xyXG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcik7XHJcbiAgICBib3gtc2hhZG93OiB0aGVtZWQodG9vbHRpcFNoYWRvdyk7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXRvcCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMnJlbTtcclxuICAgICAgbGVmdDogY2FsYyg1MCUgLSAxcmVtKTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC10b3AtbGVmdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgbGVmdDogMC43cmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDFyZW0gMXJlbSAwIDA7XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXRvcC1yaWdodCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAtMXJlbTtcclxuICAgICAgcmlnaHQ6IDAuN3JlbTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAwLjVyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1ib3R0b20ge1xyXG4gICAgbWFyZ2luLXRvcDogMXJlbTtcclxuXHJcbiAgICAmOmJlZm9yZSB7XHJcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgdG9wOiAtMnJlbTtcclxuICAgICAgbGVmdDogY2FsYyg1MCUgLSAxcmVtKTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAxcmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdHJhbnNwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1ib3R0b20tbGVmdCB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IC0xcmVtO1xyXG4gICAgICBsZWZ0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtYm90dG9tLXJpZ2h0IHtcclxuICAgIG1hcmdpbi10b3A6IDFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogLTFyZW07XHJcbiAgICAgIHJpZ2h0OiAwLjdyZW07XHJcbiAgICAgIGJvcmRlci13aWR0aDogMC41cmVtO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcikgdGhlbWVkKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IpIHRyYW5zcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLm5nLXRvb2x0aXAtbGVmdCB7XHJcbiAgICBtYXJnaW4tbGVmdDogLTFyZW07XHJcblxyXG4gICAgJjpiZWZvcmUge1xyXG4gICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgIHRvcDogMDtcclxuICAgICAgcmlnaHQ6IC0xcmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDFyZW0gMXJlbSAwIDA7XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXJpZ2h0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IC0xcmVtO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDFyZW0gMCAwIDFyZW07XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1lZCh0b29sdGlwQmFja2dyb3VuZENvbG9yKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLmJhbGFuY2UtdG9vbHRpcCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGZvbnQtc2l6ZTogMS4zcmVtO1xyXG4gIHBhZGRpbmc6IDEuM3JlbTtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBiYWNrZ3JvdW5kOiB0aGVtZWQodG9vbHRpcEJhY2tncm91bmRDb2xvcik7XHJcbiAgICBib3gtc2hhZG93OiB0aGVtZWQodG9vbHRpcFNoYWRvdyk7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgJi5uZy10b29sdGlwLXRvcCB7XHJcbiAgICBtYXJnaW4tdG9wOiAtMXJlbTtcclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1ib3R0b20ge1xyXG4gICAgbWFyZ2luLXRvcDogMXJlbTtcclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1sZWZ0IHtcclxuICAgIG1hcmdpbi1sZWZ0OiAtMXJlbTtcclxuICB9XHJcblxyXG4gICYubmctdG9vbHRpcC1yaWdodCB7XHJcbiAgICBtYXJnaW4tbGVmdDogMXJlbTtcclxuICB9XHJcblxyXG4gIC5hdmFpbGFibGUge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMS43cmVtO1xyXG5cclxuICAgIGIge1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmxvY2tlZCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjdyZW07XHJcblxyXG4gICAgYiB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubGluayB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ubmd4LWNvbnRleHRtZW51IHtcclxuXHJcbiAgLmRyb3Bkb3duLW1lbnUge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgcGFkZGluZzogMDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGJveC1zaGFkb3c6IHRoZW1lZCh0b29sdGlwU2hhZG93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxpIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgZm9udC1mYW1pbHk6IE9wZW5TYW5zLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgYSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNIb3ZlckNvbG9yKTtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbW9kYWwtY29udGFpbmVyIHtcclxuXHJcbiAgLm1vZGFsIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZDogdGhlbWVkKG1vZGFsQmFja2dyb3VuZCk7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmNvbnRlbnQge1xyXG5cclxuICAgICAgLmljb24uZXJyb3Ige1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChyZWRUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24uc3VjY2VzcyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGdyZWVuVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uLmluZm8ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWN0aW9uLWJ1dHRvbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChhbHRlcm5hdGl2ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuY2xvc2UtYnV0dG9uIHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2xvc2VCdXR0b25Db2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtdHJhbnNhY3Rpb24tZGV0YWlscyB7XHJcblxyXG4gIC50YWJsZSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJvcmRlci10b3A6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnJvdyB7XHJcblxyXG4gICAgICAuY2VsbCB7XHJcblxyXG4gICAgICAgICYubGFiZWwge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYudmFsdWUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5rZXktdmFsdWUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCIkdGhlbWVzOiAoXHJcbiAgZGFyazogKFxyXG4gICAgYm9keUJhY2tncm91bmRDb2xvcjogIzEzMTkyMSxcclxuICAgIHNpZGViYXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjMsIDMxLCAzOSwgMC41KSxcclxuICAgIHNpZGViYXJCb3JkZXJDb2xvcjogIzFmMjgzMyxcclxuICAgIG9ubGluZUNvbG9yOiAjNWNkYTlkLFxyXG4gICAgb2ZmbGluZUNvbG9yOiAjZmU1MjUyLFxyXG4gICAgY29udGVudEJhY2tncm91bmRDb2xvcjogcmdiYSg0MywgNTQsIDY4LCAwLjUpLFxyXG4gICAgbWFpblRleHRDb2xvcjogI2UwZTBlMCxcclxuICAgIGFsdGVybmF0aXZlVGV4dENvbG9yOiAjMTExOTIxLFxyXG4gICAgb3B0aW9uYWxUZXh0Q29sb3I6ICM1NTY1NzYsXHJcbiAgICBibHVlVGV4dENvbG9yOiAjNGRiMWZmLFxyXG4gICAgZ3JlZW5UZXh0Q29sb3I6ICM1Y2RhOWQsXHJcbiAgICByZWRUZXh0Q29sb3I6ICNmZTUyNTIsXHJcbiAgICBibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNGRiMWZmLFxyXG4gICAgYmx1ZUJ1dHRvbkhvdmVyQ29sb3I6ICM2MGI5ZmYsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzkwYTRhZSxcclxuICAgIGRpc2FibGVkQnV0dG9uSG92ZXJDb2xvcjogIzliYjBiYSxcclxuICAgIGdyZWVuQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNWNkYTlkLFxyXG4gICAgZ3JlZW5CdXR0b25Ib3ZlckNvbG9yOiAjNWNlMmExLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNGRkMGUxLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uSG92ZXJDb2xvcjogIzUyZDllYSxcclxuICAgIHRyYW5zcGFyZW50QnV0dG9uQm9yZGVyQ29sb3I6ICMyYjM2NDQsXHJcbiAgICBpbnB1dEJhY2tncm91bmRDb2xvcjogIzE3MWUyNyxcclxuICAgIHN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoNDMsIDU0LCA2OCwgMC41KSxcclxuICAgIGFjY291bnRIb3ZlckJhY2tncm91bmRDb2xvcjogcmdiYSg1OCwgNzIsIDkwLCAwLjUpLFxyXG4gICAgYWNjb3VudE1haW5UZXh0Q29sb3I6ICNlMGUwZTAsXHJcbiAgICBhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3I6ICM1NTY1NzYsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yVGV4dENvbG9yOiAjMTExOTIxLFxyXG4gICAgYWNjb3VudFN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRJbmRpY2F0b3JCYWNrZ3JvdW5kQ29sb3I6ICM0ZGIxZmYsXHJcbiAgICB0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcjogcmdiYSgyMywgMzEsIDM5LCAwLjUpLFxyXG4gICAgdGFibGVCYWNrZ3JvdW5kQ29sb3I6ICMxODIwMmEsXHJcbiAgICBtZXNzYWdlTXlCYWNrZ3JvdW5kQ29sb3I6ICMyYTM1NDQsXHJcbiAgICBtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3I6ICMxODIwMmEsXHJcbiAgICBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcjogIzM0M2Y0YSxcclxuICAgIHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcjogIzVjZGE5ZCxcclxuICAgIGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcjogIzJiMzY0NCxcclxuICAgIGNoYXJ0T3B0aW9uc0hvdmVyQ29sb3I6ICM1NTY1NzYsXHJcbiAgICB0b29sdGlwQmFja2dyb3VuZENvbG9yOiAjNDI1MDVmLFxyXG4gICAgdG9vbHRpcFNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpLFxyXG4gICAgbW9kYWxCYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZGFyay5wbmcpLFxyXG4gICAgY2xvc2VCdXR0b25Db2xvcjogIzU1NjU3NlxyXG4gICksXHJcbiAgZ3JheTogKFxyXG4gICAgYm9keUJhY2tncm91bmRDb2xvcjogIzEwMTQxNyxcclxuICAgIHNpZGViYXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjMsIDI1LCAyNywgMC41KSxcclxuICAgIHNpZGViYXJCb3JkZXJDb2xvcjogIzJlMzMzNyxcclxuICAgIG9ubGluZUNvbG9yOiAjNDdjZjhkLFxyXG4gICAgb2ZmbGluZUNvbG9yOiAjZmY1MjUyLFxyXG4gICAgY29udGVudEJhY2tncm91bmRDb2xvcjogcmdiYSgzNywgNDAsIDQzLCAwLjUpLFxyXG4gICAgbWFpblRleHRDb2xvcjogI2UwZTBlMCxcclxuICAgIGFsdGVybmF0aXZlVGV4dENvbG9yOiAjMWExYTFhLFxyXG4gICAgb3B0aW9uYWxUZXh0Q29sb3I6ICM1NjVjNjIsXHJcbiAgICBibHVlVGV4dENvbG9yOiAjNDJhNWY1LFxyXG4gICAgZ3JlZW5UZXh0Q29sb3I6ICM0N2NmOGQsXHJcbiAgICByZWRUZXh0Q29sb3I6ICNmZTUyNTIsXHJcbiAgICBibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNDJhNWY1LFxyXG4gICAgYmx1ZUJ1dHRvbkhvdmVyQ29sb3I6ICM0ZGFmZmYsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzc5ODQ4ZixcclxuICAgIGRpc2FibGVkQnV0dG9uSG92ZXJDb2xvcjogIzg1OTA5YixcclxuICAgIGdyZWVuQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjNDdjZjhkLFxyXG4gICAgZ3JlZW5CdXR0b25Ib3ZlckNvbG9yOiAjNDlkOTkzLFxyXG4gICAgdHVycXVvaXNlQnV0dG9uQmFja2dyb3VuZENvbG9yOiAjM2VjNWQ3LFxyXG4gICAgdHVycXVvaXNlQnV0dG9uSG92ZXJDb2xvcjogIzQzY2VlMCxcclxuICAgIHRyYW5zcGFyZW50QnV0dG9uQm9yZGVyQ29sb3I6ICMyZjM0MzgsXHJcbiAgICBpbnB1dEJhY2tncm91bmRDb2xvcjogIzI5MmQzMSxcclxuICAgIHN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMzcsIDQwLCA0MywgMC41KSxcclxuICAgIGFjY291bnRIb3ZlckJhY2tncm91bmRDb2xvcjogcmdiYSg3MCwgNzYsIDgxLCAwLjUpLFxyXG4gICAgYWNjb3VudE1haW5UZXh0Q29sb3I6ICNlMGUwZTAsXHJcbiAgICBhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3I6ICM1NjVjNjIsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yVGV4dENvbG9yOiAjMWExYTFhLFxyXG4gICAgYWNjb3VudFN3aXRjaEJhY2tncm91bmRDb2xvcjogIzAwMDAwMCxcclxuICAgIGFjY291bnRJbmRpY2F0b3JCYWNrZ3JvdW5kQ29sb3I6ICM0MmE1ZjUsXHJcbiAgICB0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcjogcmdiYSgyMywgMjUsIDI3LCAwLjUpLFxyXG4gICAgdGFibGVCYWNrZ3JvdW5kQ29sb3I6ICMyNTI5MmQsXHJcbiAgICBtZXNzYWdlTXlCYWNrZ3JvdW5kQ29sb3I6ICMzMDM2M2MsXHJcbiAgICBtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3I6ICMyNTI5MmQsXHJcbiAgICBwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcjogIzM2M2EzZSxcclxuICAgIHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcjogIzQ3Y2Y4ZCxcclxuICAgIGNoYXJ0T3B0aW9uc0JhY2tncm91bmRDb2xvcjogIzI5MmQzMSxcclxuICAgIGNoYXJ0T3B0aW9uc0hvdmVyQ29sb3I6ICM1MTU5NjAsXHJcbiAgICB0b29sdGlwQmFja2dyb3VuZENvbG9yOiAjM2U0NjRjLFxyXG4gICAgdG9vbHRpcFNoYWRvdzogMCAwIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjUpLFxyXG4gICAgbW9kYWxCYWNrZ3JvdW5kOiB1cmwofnNyYy9hc3NldHMvaW1hZ2VzL2JhY2tncm91bmQtZ3JheS5wbmcpLFxyXG4gICAgY2xvc2VCdXR0b25Db2xvcjogIzUxNTk2MFxyXG4gICksXHJcbiAgd2hpdGU6IChcclxuICAgIGJvZHlCYWNrZ3JvdW5kQ29sb3I6ICNlZWVlZWUsXHJcbiAgICBzaWRlYmFyQmFja2dyb3VuZENvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSksXHJcbiAgICBzaWRlYmFyQm9yZGVyQ29sb3I6ICNlYmViZWIsXHJcbiAgICBvbmxpbmVDb2xvcjogIzQ2YzE3MixcclxuICAgIG9mZmxpbmVDb2xvcjogI2ZmNTI1MixcclxuICAgIGNvbnRlbnRCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSxcclxuICAgIG1haW5UZXh0Q29sb3I6ICM0MzQ1NGIsXHJcbiAgICBhbHRlcm5hdGl2ZVRleHRDb2xvcjogI2ZlZmVmZSxcclxuICAgIG9wdGlvbmFsVGV4dENvbG9yOiAjYTBhNWFiLFxyXG4gICAgYmx1ZVRleHRDb2xvcjogIzJjOTVmMSxcclxuICAgIGdyZWVuVGV4dENvbG9yOiAjNDZjMTcyLFxyXG4gICAgcmVkVGV4dENvbG9yOiAjZmY1MjUyLFxyXG4gICAgYmx1ZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzJjOTVmMSxcclxuICAgIGJsdWVCdXR0b25Ib3ZlckNvbG9yOiAjMzc5ZmZhLFxyXG4gICAgZGlzYWJsZWRCdXR0b25CYWNrZ3JvdW5kQ29sb3I6ICM5MGE0YWUsXHJcbiAgICBkaXNhYmxlZEJ1dHRvbkhvdmVyQ29sb3I6ICM5YmFlYjcsXHJcbiAgICBncmVlbkJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzQ2YzE3MixcclxuICAgIGdyZWVuQnV0dG9uSG92ZXJDb2xvcjogIzQ2Y2E3NSxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkJhY2tncm91bmRDb2xvcjogIzI2YjZjNyxcclxuICAgIHR1cnF1b2lzZUJ1dHRvbkhvdmVyQ29sb3I6ICMyYmJkY2YsXHJcbiAgICB0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yOiAjZWJlYmViLFxyXG4gICAgaW5wdXRCYWNrZ3JvdW5kQ29sb3I6ICNlNmU2ZTYsXHJcbiAgICBzd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICNlMGUwZTAsXHJcbiAgICBhY2NvdW50QmFja2dyb3VuZENvbG9yOiByZ2JhKDMwLCAxMzYsIDIyOSwgMSksXHJcbiAgICBhY2NvdW50SG92ZXJCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjQwLCAyNDAsIDI0MCwgMC41KSxcclxuICAgIGFjY291bnRNYWluVGV4dENvbG9yOiAjZmZmZmZmLFxyXG4gICAgYWNjb3VudE9wdGlvbmFsVGV4dENvbG9yOiAjOTFiYWYxLFxyXG4gICAgYWNjb3VudEluZGljYXRvclRleHRDb2xvcjogIzQzNDU0YixcclxuICAgIGFjY291bnRTd2l0Y2hCYWNrZ3JvdW5kQ29sb3I6ICNmZmZmZmYsXHJcbiAgICBhY2NvdW50SW5kaWNhdG9yQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgdGFiSW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3I6IHJnYmEoMjI0LCAyMjQsIDIyNCwgMC41KSxcclxuICAgIHRhYmxlQmFja2dyb3VuZENvbG9yOiAjZmZmZmZmLFxyXG4gICAgbWVzc2FnZU15QmFja2dyb3VuZENvbG9yOiAjZmZmLFxyXG4gICAgbWVzc2FnZUJ1ZGR5QmFja2dyb3VuZENvbG9yOiAjZWRlZGVkLFxyXG4gICAgcHJvZ3Jlc3NCYXJCYWNrZ3JvdW5kQ29sb3I6ICNkY2RjZGMsXHJcbiAgICBwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3I6ICM0NmMxNzIsXHJcbiAgICBjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3I6ICNlMGUwZTAsXHJcbiAgICBjaGFydE9wdGlvbnNIb3ZlckNvbG9yOiAjZmZmZmZmLFxyXG4gICAgdG9vbHRpcEJhY2tncm91bmRDb2xvcjogI2ZmZmZmZixcclxuICAgIHRvb2x0aXBTaGFkb3c6IDAgMCAxcmVtIHJnYmEoMTIwLCAxMjAsIDEyMCwgMC41KSxcclxuICAgIG1vZGFsQmFja2dyb3VuZDogdXJsKH5zcmMvYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLXdoaXRlLnBuZyksXHJcbiAgICBjbG9zZUJ1dHRvbkNvbG9yOiAjNDM0NTRiXHJcbiAgKVxyXG4pO1xyXG5cclxuXHJcblxyXG5cclxuXHJcbiIsImFwcC1tYWluLCBhcHAtY3JlYXRlLXdhbGxldCwgYXBwLW9wZW4td2FsbGV0LCBhcHAtcmVzdG9yZS13YWxsZXQsIGFwcC1zZWVkLXBocmFzZSwgYXBwLXdhbGxldC1kZXRhaWxzLCBhcHAtYXNzaWduLWFsaWFzLCBhcHAtZWRpdC1hbGlhcywgYXBwLXRyYW5zZmVyLWFsaWFzLCBhcHAtc2V0dGluZ3MsIGFwcC1sb2dpbiB7XHJcbiAgZmxleDogMSAxIGF1dG87XHJcbiAgcGFkZGluZzogM3JlbTtcclxuICBtaW4td2lkdGg6IDg1cmVtO1xyXG5cclxuICAuY29udGVudCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBwYWRkaW5nOiAzcmVtO1xyXG4gICAgbWluLWhlaWdodDogMTAwJTtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGNvbnRlbnRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC5oZWFkIHtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbWFpbiB7XHJcblxyXG4gIC5jb250ZW50IHtcclxuXHJcbiAgICAuYWRkLXdhbGxldCB7XHJcblxyXG4gICAgICAuYWRkLXdhbGxldC1oZWxwIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtc2VlZC1waHJhc2Uge1xyXG5cclxuICAuc2VlZC1waHJhc2UtY29udGVudCB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcilcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC13YWxsZXQtZGV0YWlscyB7XHJcblxyXG4gIC5zZWVkLXBocmFzZSB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChpbnB1dEJhY2tncm91bmRDb2xvcik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtc2V0dGluZ3Mge1xyXG5cclxuICAuY29udGVudCB7XHJcblxyXG4gICAgLnRoZW1lLXNlbGVjdGlvbiB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLWxvZ2luIHtcclxuICBtaW4td2lkdGg6IGluaGVyaXQ7XHJcbn1cclxuIiwiYXBwLXNpZGViYXIge1xyXG5cclxuICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChzaWRlYmFyQmFja2dyb3VuZENvbG9yKTtcclxuICB9XHJcblxyXG4gIC5zaWRlYmFyLWFjY291bnRzIHtcclxuXHJcbiAgICAuc2lkZWJhci1hY2NvdW50cy1oZWFkZXIge1xyXG5cclxuICAgICAgaDMge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBidXR0b24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnNpZGViYXItYWNjb3VudHMtbGlzdCB7XHJcblxyXG4gICAgICAuc2lkZWJhci1hY2NvdW50IHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc2lkZWJhci1hY2NvdW50LXJvdyB7XHJcblxyXG4gICAgICAgICAgLnRleHQge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuaW5kaWNhdG9yIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlQnV0dG9uQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFsdGVybmF0aXZlVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICAgICAgICAgIC5wcm9ncmVzcy1iYXIge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAuZmlsbCB7XHJcblxyXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICYuYWNjb3VudC1zeW5jaHJvbml6YXRpb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuYWN0aXZlIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFjY291bnRNYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuc2lkZWJhci1hY2NvdW50LXJvdyB7XHJcblxyXG4gICAgICAgICAgICAudGV4dCB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50T3B0aW9uYWxUZXh0Q29sb3IpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLmluZGljYXRvciB7XHJcblxyXG4gICAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGFjY291bnRJbmRpY2F0b3JCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoZW1lZChhY2NvdW50SW5kaWNhdG9yVGV4dENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5zd2l0Y2gge1xyXG5cclxuICAgICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50U3dpdGNoQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAmLmFjY291bnQtc3luY2hyb25pemF0aW9uIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWVkKGFjY291bnRPcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmhvdmVyOm5vdCguYWN0aXZlKSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChhY2NvdW50SG92ZXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnNpZGViYXItc2V0dGluZ3Mge1xyXG5cclxuICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICBib3JkZXItYm90dG9tOiAwLjJyZW0gc29saWQgdGhlbWVkKHNpZGViYXJCb3JkZXJDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgYnV0dG9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuc2lkZWJhci1zeW5jaHJvbml6YXRpb24tc3RhdHVzIHtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLnN0YXR1cy1jb250YWluZXIge1xyXG5cclxuICAgICAgLm9mZmxpbmU6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQob2ZmbGluZUNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5vbmxpbmU6YmVmb3JlIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQob25saW5lQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLnRlc3RuZXQge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnByb2dyZXNzLWJhci1jb250YWluZXIge1xyXG5cclxuICAgICAgLnN5bmNpbmcge1xyXG5cclxuICAgICAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuZmlsbCB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmxvYWRpbmcge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckZ1bGxCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJhcHAtd2FsbGV0IHtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKG1haW5UZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmhlYWRlciB7XHJcblxyXG4gICAgYnV0dG9uIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmFsaWFzIHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWRkcmVzcyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLmljb24ge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAudGFicyB7XHJcblxyXG4gICAgLnRhYnMtaGVhZGVyIHtcclxuXHJcbiAgICAgIC50YWIge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZCh0YWJJbmFjdGl2ZUJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaWNvbiB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pbmRpY2F0b3Ige1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZWQoYWNjb3VudEluZGljYXRvclRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmFjdGl2ZSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudGFicy1jb250ZW50IHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjb250ZW50QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXNlbmQge1xyXG5cclxuICAuZm9ybS1zZW5kIHtcclxuXHJcbiAgICAuc2VuZC1zZWxlY3Qge1xyXG5cclxuICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuYWRkaXRpb25hbC1kZXRhaWxzIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJvcmRlcjogMC4ycmVtIHNvbGlkIHRoZW1lZCh0cmFuc3BhcmVudEJ1dHRvbkJvcmRlckNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuYXBwLXJlY2VpdmUge1xyXG5cclxuICAuYnRuLWNvcHktYWRkcmVzcyB7XHJcblxyXG4gICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1oaXN0b3J5IHtcclxuXHJcbiAgdGFibGUge1xyXG5cclxuICAgIHRib2R5IHtcclxuXHJcbiAgICAgIHRyIHtcclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMSkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMikge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQodGFibGVCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpudGgtY2hpbGQoNG4rMykge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bnRoLWNoaWxkKDRuKzQpIHtcclxuXHJcbiAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuc3RhdHVzIHtcclxuXHJcbiAgICAgICAgICAuY29uZmlybWF0aW9uIHtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC5maWxsIHtcclxuXHJcbiAgICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocHJvZ3Jlc3NCYXJGdWxsQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMuc2VuZCAge1xyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNTI1MjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5zdGF0dXMucmVjZWl2ZWQge1xyXG5cclxuICAgICAgICAgIC5pY29uIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwYzg1MztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1jb250cmFjdHMge1xyXG5cclxuICAud3JhcC10YWJsZSB7XHJcblxyXG4gICAgLmNvbnRyYWN0IHtcclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgJi5uZXcsICYuYWxlcnQge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQocmVkVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYucHVyY2hhc2UsICYuc2VsbCB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChibHVlVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC1wdXJjaGFzZSB7XHJcblxyXG4gIC5mb3JtLXB1cmNoYXNlIHtcclxuXHJcbiAgICAucHVyY2hhc2Utc2VsZWN0IHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQobWFpblRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5pY29uIHtcclxuXHJcbiAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLnB1cmNoYXNlLXN0YXRlcyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmFkZGl0aW9uYWwtZGV0YWlscyB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBib3JkZXI6IDAuMnJlbSBzb2xpZCB0aGVtZWQodHJhbnNwYXJlbnRCdXR0b25Cb3JkZXJDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcm9ncmVzcy1iYXItY29udGFpbmVyIHtcclxuXHJcbiAgICAucHJvZ3Jlc3MtYmFyIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChwcm9ncmVzc0JhckJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5wcm9ncmVzcy1iYXItZnVsbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHByb2dyZXNzQmFyRnVsbEJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtbWVzc2FnZXMge1xyXG5cclxuICB0YWJsZSB7XHJcblxyXG4gICAgdGJvZHkge1xyXG5cclxuICAgICAgdHIge1xyXG5cclxuICAgICAgICB0ZDpmaXJzdC1jaGlsZCB7XHJcblxyXG4gICAgICAgICAgc3BhbiB7XHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtdHJ1bmNhdGU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmljb24ge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHJlZFRleHRDb2xvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmFwcC10eXBpbmctbWVzc2FnZSB7XHJcblxyXG4gIC5oZWFkIHtcclxuXHJcbiAgICAuaW50ZXJsb2N1dG9yIHtcclxuXHJcbiAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgIGNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5tZXNzYWdlcy1jb250ZW50IHtcclxuXHJcbiAgICAubWVzc2FnZXMtbGlzdCB7XHJcblxyXG4gICAgICBkaXYge1xyXG5cclxuICAgICAgICAmLmRhdGUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYubXkge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQobWVzc2FnZU15QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSBwc2V1ZG87XHJcbiAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgbGVmdDogLTEuMXJlbTtcclxuICAgICAgICAgICAgYm9yZGVyOiAxLjJyZW0gc29saWQgdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgICAgICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtZWQobWVzc2FnZU15QmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5idWRkeSB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICY6YWZ0ZXIge1xyXG5cclxuICAgICAgICAgICAgQGluY2x1ZGUgcHNldWRvO1xyXG4gICAgICAgICAgICByaWdodDogLTEuMXJlbTtcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICBib3JkZXI6IDEuMnJlbSBzb2xpZCB0cmFuc3BhcmVudDtcclxuXHJcbiAgICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6IHRoZW1lZChtZXNzYWdlQnVkZHlCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5hcHAtc3Rha2luZyB7XHJcblxyXG4gIC5jaGFydC1oZWFkZXIge1xyXG5cclxuICAgIC5nZW5lcmFsIHtcclxuXHJcbiAgICAgIC5sYWJlbCB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAub3B0aW9ucyB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuc2VsZWN0ZWQge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICAgIGZvbnQtc2l6ZTogMS42cmVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmNoYXJ0LW9wdGlvbnMge1xyXG5cclxuICAgIC50aXRsZSB7XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBjb2xvcjogdGhlbWVkKG9wdGlvbmFsVGV4dENvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5vcHRpb25zIHtcclxuXHJcbiAgICAgIGJ1dHRvbiB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1lZChjaGFydE9wdGlvbnNCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5hY3RpdmUge1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoY2hhcnRPcHRpb25zSG92ZXJDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIi5oZWFkIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgZm9udC1zaXplOiAxLjNyZW07XHJcbiAgcGFkZGluZzogMCAzcmVtO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogM3JlbTtcclxuXHJcbiAgQGluY2x1ZGUgdGhlbWlmeSgkdGhlbWVzKSB7XHJcbiAgICBjb2xvcjogdGhlbWVkKGJsdWVUZXh0Q29sb3IpO1xyXG4gIH1cclxuXHJcbiAgLmJyZWFkY3J1bWJzIHtcclxuXHJcbiAgICA+IHNwYW4sIGEge1xyXG5cclxuICAgICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxuXHJcbiAgICAgICAgJjphZnRlciB7XHJcblxyXG4gICAgICAgICAgQGluY2x1ZGUgcHNldWRvO1xyXG4gICAgICAgICAgdG9wOiAwLjVyZW07XHJcbiAgICAgICAgICByaWdodDogLTEuNXJlbTtcclxuICAgICAgICAgIHdpZHRoOiAwLjlyZW07XHJcbiAgICAgICAgICBoZWlnaHQ6IDAuOXJlbTtcclxuICAgICAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9hcnJvdy1yaWdodC5zdmcpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICAgICAgICBtYXNrLXNpemU6IGNvdmVyO1xyXG5cclxuICAgICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYmFjay1idG4ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGNvbG9yOiAjNGRiMWZmO1xyXG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjNyZW07XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG5cclxuICAgIC5pY29uIHtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjdyZW07XHJcbiAgICAgIG1hc2s6IHVybCh+c3JjL2Fzc2V0cy9pY29ucy9iYWNrLnN2Zykgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgICAgd2lkdGg6IDAuOXJlbTtcclxuICAgICAgaGVpZ2h0OiAwLjlyZW07XHJcblxyXG4gICAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtZWQoYmx1ZVRleHRDb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLnNjcm9sbGVkLWNvbnRlbnQge1xyXG5cclxuICAmOjotd2Via2l0LXNjcm9sbGJhciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGN1cnNvcjogZGVmYXVsdDtcclxuICAgIHdpZHRoOiAxcmVtO1xyXG4gICAgaGVpZ2h0OiAxcmVtO1xyXG4gIH1cclxuXHJcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgfVxyXG5cclxuICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU2NTc2O1xyXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuICAgIGJvcmRlcjogMC4yNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcclxuICB9XHJcblxyXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTY1NzY7XHJcbiAgfVxyXG59XHJcbiIsInRhYmxlIHtcclxuICBmb250LXNpemU6IDEuM3JlbTtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgdGhlYWQge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChvcHRpb25hbFRleHRDb2xvcik7XHJcbiAgICB9XHJcblxyXG4gICAgdHIge1xyXG4gICAgICBoZWlnaHQ6IDRyZW07XHJcblxyXG4gICAgICB0aCB7XHJcbiAgICAgICAgcGFkZGluZzogMXJlbTtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xyXG5cclxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogM3JlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdGJvZHkge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuXHJcbiAgICBAaW5jbHVkZSB0aGVtaWZ5KCR0aGVtZXMpIHtcclxuICAgICAgY29sb3I6IHRoZW1lZChtYWluVGV4dENvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICB0ciB7XHJcbiAgICAgIGhlaWdodDogMy41cmVtO1xyXG5cclxuICAgICAgJjpudGgtY2hpbGQob2RkKSB7XHJcblxyXG4gICAgICAgIEBpbmNsdWRlIHRoZW1pZnkoJHRoZW1lcykge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWVkKHRhYmxlQmFja2dyb3VuZENvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRkIHtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS43cmVtO1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAyMHJlbTtcclxuXHJcbiAgICAgICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICAgICAgcGFkZGluZy1yaWdodDogM3JlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLy8gQkFTRVxyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9iYXNlL21peGlucyc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2Jhc2UvbnVsbCc7XHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2Jhc2UvdGhlbWUnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9iYXNlL2Jhc2UnO1xyXG5cclxuLy8gTEFZT1VUXHJcbkBpbXBvcnQgJ2Fzc2V0cy9zY3NzL2xheW91dC9tYWluJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbGF5b3V0L3NldHRpbmdzJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbGF5b3V0L3NpZGViYXInO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9sYXlvdXQvd2FsbGV0JztcclxuXHJcbi8vIE1PRFVMRVNcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbW9kdWxlcy9oZWFkJztcclxuQGltcG9ydCAnYXNzZXRzL3Njc3MvbW9kdWxlcy9zY3JvbGwnO1xyXG5AaW1wb3J0ICdhc3NldHMvc2Nzcy9tb2R1bGVzL3RhYmxlJztcclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1MaWdodC50dGYpO1xyXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XHJcbn1cclxuXHJcbkBmb250LWZhY2Uge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2FucztcclxuICBzcmM6IHVybCh+c3JjL2Fzc2V0cy9mb250cy9PcGVuU2Fucy1SZWd1bGFyLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLVNlbWlCb2xkLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IE9wZW5TYW5zO1xyXG4gIHNyYzogdXJsKH5zcmMvYXNzZXRzL2ZvbnRzL09wZW5TYW5zLUJvbGQudHRmKTtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG59XHJcblxyXG5AZm9udC1mYWNlIHtcclxuICBmb250LWZhbWlseTogT3BlblNhbnM7XHJcbiAgc3JjOiB1cmwofnNyYy9hc3NldHMvZm9udHMvT3BlblNhbnMtRXh0cmFCb2xkLnR0Zik7XHJcbiAgZm9udC13ZWlnaHQ6IDgwMDtcclxufVxyXG5cclxuXHJcbmh0bWwge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbn1cclxuXHJcbmJvZHkge1xyXG4gIGZvbnQtZmFtaWx5OiBPcGVuU2Fucywgc2Fucy1zZXJpZjtcclxuICBmb250LXNpemU6IDEuNnJlbTtcclxuICB3aWR0aDogMTAwdnc7XHJcbiAgaGVpZ2h0OiAxMDB2aDtcclxuXHJcbiAgJi50aGVtZS1kYXJrIHtcclxuICAgIGJhY2tncm91bmQ6ICMxMzE5MjEgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWRhcmsucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIH1cclxuXHJcbiAgJi50aGVtZS1ncmF5IHtcclxuICAgIGJhY2tncm91bmQ6ICMxMDE0MTcgdXJsKFwiYXNzZXRzL2ltYWdlcy9iYWNrZ3JvdW5kLWdyYXkucG5nXCIpIG5vLXJlcGVhdCBjZW50ZXI7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xyXG4gIH1cclxuXHJcbiAgJi50aGVtZS13aGl0ZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlIHVybChcImFzc2V0cy9pbWFnZXMvYmFja2dyb3VuZC13aGl0ZS5wbmdcIikgbm8tcmVwZWF0IGNlbnRlcjtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XHJcbiAgfVxyXG5cclxuICBhcHAtcm9vdCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgfVxyXG59XHJcbiJdfQ== */\", '', '']]","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of \n \n\n could become:\n\n \n
\n \n
\n\n Note the use of @polyfill in the comment above a ShadowDOM specific style\n declaration. This is a directive to the styling shim to use the selector\n in comments in lieu of the next selector when running under polyfill.\n*/\nvar ShadowCss = /** @class */ (function () {\n function ShadowCss() {\n this.strictStyling = true;\n }\n /*\n * Shim some cssText with the given selector. Returns cssText that can\n * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css).\n *\n * When strictStyling is true:\n * - selector is the attribute added to all elements inside the host,\n * - hostSelector is the attribute added to the host itself.\n */\n ShadowCss.prototype.shimCssText = function (cssText, selector, hostSelector) {\n if (hostSelector === void 0) { hostSelector = ''; }\n var commentsWithHash = extractCommentsWithHash(cssText);\n cssText = stripComments(cssText);\n cssText = this._insertDirectives(cssText);\n var scopedCssText = this._scopeCssText(cssText, selector, hostSelector);\n return __spread([scopedCssText], commentsWithHash).join('\\n');\n };\n ShadowCss.prototype._insertDirectives = function (cssText) {\n cssText = this._insertPolyfillDirectivesInCssText(cssText);\n return this._insertPolyfillRulesInCssText(cssText);\n };\n /*\n * Process styles to convert native ShadowDOM rules that will trip\n * up the css parser; we rely on decorating the stylesheet with inert rules.\n *\n * For example, we convert this rule:\n *\n * polyfill-next-selector { content: ':host menu-item'; }\n * ::content menu-item {\n *\n * to this:\n *\n * scopeName menu-item {\n *\n **/\n ShadowCss.prototype._insertPolyfillDirectivesInCssText = function (cssText) {\n // Difference with webcomponents.js: does not handle comments\n return cssText.replace(_cssContentNextSelectorRe, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n return m[2] + '{';\n });\n };\n /*\n * Process styles to add rules which will only apply under the polyfill\n *\n * For example, we convert this rule:\n *\n * polyfill-rule {\n * content: ':host menu-item';\n * ...\n * }\n *\n * to this:\n *\n * scopeName menu-item {...}\n *\n **/\n ShadowCss.prototype._insertPolyfillRulesInCssText = function (cssText) {\n // Difference with webcomponents.js: does not handle comments\n return cssText.replace(_cssContentRuleRe, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n var rule = m[0].replace(m[1], '').replace(m[2], '');\n return m[4] + rule;\n });\n };\n /* Ensure styles are scoped. Pseudo-scoping takes a rule like:\n *\n * .foo {... }\n *\n * and converts this to\n *\n * scopeName .foo { ... }\n */\n ShadowCss.prototype._scopeCssText = function (cssText, scopeSelector, hostSelector) {\n var unscopedRules = this._extractUnscopedRulesFromCssText(cssText);\n // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively\n cssText = this._insertPolyfillHostInCssText(cssText);\n cssText = this._convertColonHost(cssText);\n cssText = this._convertColonHostContext(cssText);\n cssText = this._convertShadowDOMSelectors(cssText);\n if (scopeSelector) {\n cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector);\n }\n cssText = cssText + '\\n' + unscopedRules;\n return cssText.trim();\n };\n /*\n * Process styles to add rules which will only apply under the polyfill\n * and do not process via CSSOM. (CSSOM is destructive to rules on rare\n * occasions, e.g. -webkit-calc on Safari.)\n * For example, we convert this rule:\n *\n * @polyfill-unscoped-rule {\n * content: 'menu-item';\n * ... }\n *\n * to this:\n *\n * menu-item {...}\n *\n **/\n ShadowCss.prototype._extractUnscopedRulesFromCssText = function (cssText) {\n // Difference with webcomponents.js: does not handle comments\n var r = '';\n var m;\n _cssContentUnscopedRuleRe.lastIndex = 0;\n while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) {\n var rule = m[0].replace(m[2], '').replace(m[1], m[4]);\n r += rule + '\\n\\n';\n }\n return r;\n };\n /*\n * convert a rule like :host(.foo) > .bar { }\n *\n * to\n *\n * .foo > .bar\n */\n ShadowCss.prototype._convertColonHost = function (cssText) {\n return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer);\n };\n /*\n * convert a rule like :host-context(.foo) > .bar { }\n *\n * to\n *\n * .foo > .bar, .foo scopeName > .bar { }\n *\n * and\n *\n * :host-context(.foo:host) .bar { ... }\n *\n * to\n *\n * .foo .bar { ... }\n */\n ShadowCss.prototype._convertColonHostContext = function (cssText) {\n return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer);\n };\n ShadowCss.prototype._convertColonRule = function (cssText, regExp, partReplacer) {\n // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule\n return cssText.replace(regExp, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n if (m[2]) {\n var parts = m[2].split(',');\n var r = [];\n for (var i = 0; i < parts.length; i++) {\n var p = parts[i].trim();\n if (!p)\n break;\n r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));\n }\n return r.join(',');\n }\n else {\n return _polyfillHostNoCombinator + m[3];\n }\n });\n };\n ShadowCss.prototype._colonHostContextPartReplacer = function (host, part, suffix) {\n if (part.indexOf(_polyfillHost) > -1) {\n return this._colonHostPartReplacer(host, part, suffix);\n }\n else {\n return host + part + suffix + ', ' + part + ' ' + host + suffix;\n }\n };\n ShadowCss.prototype._colonHostPartReplacer = function (host, part, suffix) {\n return host + part.replace(_polyfillHost, '') + suffix;\n };\n /*\n * Convert combinators like ::shadow and pseudo-elements like ::content\n * by replacing with space.\n */\n ShadowCss.prototype._convertShadowDOMSelectors = function (cssText) {\n return _shadowDOMSelectorsRe.reduce(function (result, pattern) { return result.replace(pattern, ' '); }, cssText);\n };\n // change a selector like 'div' to 'name div'\n ShadowCss.prototype._scopeSelectors = function (cssText, scopeSelector, hostSelector) {\n var _this = this;\n return processRules(cssText, function (rule) {\n var selector = rule.selector;\n var content = rule.content;\n if (rule.selector[0] != '@') {\n selector =\n _this._scopeSelector(rule.selector, scopeSelector, hostSelector, _this.strictStyling);\n }\n else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') ||\n rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) {\n content = _this._scopeSelectors(rule.content, scopeSelector, hostSelector);\n }\n return new CssRule(selector, content);\n });\n };\n ShadowCss.prototype._scopeSelector = function (selector, scopeSelector, hostSelector, strict) {\n var _this = this;\n return selector.split(',')\n .map(function (part) { return part.trim().split(_shadowDeepSelectors); })\n .map(function (deepParts) {\n var _a = __read(deepParts), shallowPart = _a[0], otherParts = _a.slice(1);\n var applyScope = function (shallowPart) {\n if (_this._selectorNeedsScoping(shallowPart, scopeSelector)) {\n return strict ?\n _this._applyStrictSelectorScope(shallowPart, scopeSelector, hostSelector) :\n _this._applySelectorScope(shallowPart, scopeSelector, hostSelector);\n }\n else {\n return shallowPart;\n }\n };\n return __spread([applyScope(shallowPart)], otherParts).join(' ');\n })\n .join(', ');\n };\n ShadowCss.prototype._selectorNeedsScoping = function (selector, scopeSelector) {\n var re = this._makeScopeMatcher(scopeSelector);\n return !re.test(selector);\n };\n ShadowCss.prototype._makeScopeMatcher = function (scopeSelector) {\n var lre = /\\[/g;\n var rre = /\\]/g;\n scopeSelector = scopeSelector.replace(lre, '\\\\[').replace(rre, '\\\\]');\n return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');\n };\n ShadowCss.prototype._applySelectorScope = function (selector, scopeSelector, hostSelector) {\n // Difference from webcomponents.js: scopeSelector could not be an array\n return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector);\n };\n // scope via name and [is=name]\n ShadowCss.prototype._applySimpleSelectorScope = function (selector, scopeSelector, hostSelector) {\n // In Android browser, the lastIndex is not reset when the regex is used in String.replace()\n _polyfillHostRe.lastIndex = 0;\n if (_polyfillHostRe.test(selector)) {\n var replaceBy_1 = this.strictStyling ? \"[\" + hostSelector + \"]\" : scopeSelector;\n return selector\n .replace(_polyfillHostNoCombinatorRe, function (hnc, selector) {\n return selector.replace(/([^:]*)(:*)(.*)/, function (_, before, colon, after) {\n return before + replaceBy_1 + colon + after;\n });\n })\n .replace(_polyfillHostRe, replaceBy_1 + ' ');\n }\n return scopeSelector + ' ' + selector;\n };\n // return a selector with [name] suffix on each simple selector\n // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name] /** @internal */\n ShadowCss.prototype._applyStrictSelectorScope = function (selector, scopeSelector, hostSelector) {\n var _this = this;\n var isRe = /\\[is=([^\\]]*)\\]/g;\n scopeSelector = scopeSelector.replace(isRe, function (_) {\n var parts = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n parts[_i - 1] = arguments[_i];\n }\n return parts[0];\n });\n var attrName = '[' + scopeSelector + ']';\n var _scopeSelectorPart = function (p) {\n var scopedP = p.trim();\n if (!scopedP) {\n return '';\n }\n if (p.indexOf(_polyfillHostNoCombinator) > -1) {\n scopedP = _this._applySimpleSelectorScope(p, scopeSelector, hostSelector);\n }\n else {\n // remove :host since it should be unnecessary\n var t = p.replace(_polyfillHostRe, '');\n if (t.length > 0) {\n var matches = t.match(/([^:]*)(:*)(.*)/);\n if (matches) {\n scopedP = matches[1] + attrName + matches[2] + matches[3];\n }\n }\n }\n return scopedP;\n };\n var safeContent = new SafeSelector(selector);\n selector = safeContent.content();\n var scopedSelector = '';\n var startIndex = 0;\n var res;\n var sep = /( |>|\\+|~(?!=))\\s*/g;\n // If a selector appears before :host it should not be shimmed as it\n // matches on ancestor elements and not on elements in the host's shadow\n // `:host-context(div)` is transformed to\n // `-shadowcsshost-no-combinatordiv, div -shadowcsshost-no-combinator`\n // the `div` is not part of the component in the 2nd selectors and should not be scoped.\n // Historically `component-tag:host` was matching the component so we also want to preserve\n // this behavior to avoid breaking legacy apps (it should not match).\n // The behavior should be:\n // - `tag:host` -> `tag[h]` (this is to avoid breaking legacy apps, should not match anything)\n // - `tag :host` -> `tag [h]` (`tag` is not scoped because it's considered part of a\n // `:host-context(tag)`)\n var hasHost = selector.indexOf(_polyfillHostNoCombinator) > -1;\n // Only scope parts after the first `-shadowcsshost-no-combinator` when it is present\n var shouldScope = !hasHost;\n while ((res = sep.exec(selector)) !== null) {\n var separator = res[1];\n var part_1 = selector.slice(startIndex, res.index).trim();\n shouldScope = shouldScope || part_1.indexOf(_polyfillHostNoCombinator) > -1;\n var scopedPart = shouldScope ? _scopeSelectorPart(part_1) : part_1;\n scopedSelector += scopedPart + \" \" + separator + \" \";\n startIndex = sep.lastIndex;\n }\n var part = selector.substring(startIndex);\n shouldScope = shouldScope || part.indexOf(_polyfillHostNoCombinator) > -1;\n scopedSelector += shouldScope ? _scopeSelectorPart(part) : part;\n // replace the placeholders with their original values\n return safeContent.restore(scopedSelector);\n };\n ShadowCss.prototype._insertPolyfillHostInCssText = function (selector) {\n return selector.replace(_colonHostContextRe, _polyfillHostContext)\n .replace(_colonHostRe, _polyfillHost);\n };\n return ShadowCss;\n}());\nvar SafeSelector = /** @class */ (function () {\n function SafeSelector(selector) {\n var _this = this;\n this.placeholders = [];\n this.index = 0;\n // Replaces attribute selectors with placeholders.\n // The WS in [attr=\"va lue\"] would otherwise be interpreted as a selector separator.\n selector = selector.replace(/(\\[[^\\]]*\\])/g, function (_, keep) {\n var replaceBy = \"__ph-\" + _this.index + \"__\";\n _this.placeholders.push(keep);\n _this.index++;\n return replaceBy;\n });\n // Replaces the expression in `:nth-child(2n + 1)` with a placeholder.\n // WS and \"+\" would otherwise be interpreted as selector separators.\n this._content = selector.replace(/(:nth-[-\\w]+)(\\([^)]+\\))/g, function (_, pseudo, exp) {\n var replaceBy = \"__ph-\" + _this.index + \"__\";\n _this.placeholders.push(exp);\n _this.index++;\n return pseudo + replaceBy;\n });\n }\n SafeSelector.prototype.restore = function (content) {\n var _this = this;\n return content.replace(/__ph-(\\d+)__/g, function (ph, index) { return _this.placeholders[+index]; });\n };\n SafeSelector.prototype.content = function () { return this._content; };\n return SafeSelector;\n}());\nvar _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\\s]*?(['\"])(.*?)\\1[;\\s]*}([^{]*?){/gim;\nvar _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nvar _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nvar _polyfillHost = '-shadowcsshost';\n// note: :host-context pre-processed to -shadowcsshostcontext.\nvar _polyfillHostContext = '-shadowcsscontext';\nvar _parenSuffix = ')(?:\\\\((' +\n '(?:\\\\([^)(]*\\\\)|[^)(]*)+?' +\n ')\\\\))?([^,{]*)';\nvar _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim');\nvar _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim');\nvar _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';\nvar _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\\s]*)/;\nvar _shadowDOMSelectorsRe = [\n /::shadow/g,\n /::content/g,\n // Deprecated selectors\n /\\/shadow-deep\\//g,\n /\\/shadow\\//g,\n];\n// The deep combinator is deprecated in the CSS spec\n// Support for `>>>`, `deep`, `::ng-deep` is then also deprecated and will be removed in the future.\n// see https://github.com/angular/angular/pull/17677\nvar _shadowDeepSelectors = /(?:>>>)|(?:\\/deep\\/)|(?:::ng-deep)/g;\nvar _selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$';\nvar _polyfillHostRe = /-shadowcsshost/gim;\nvar _colonHostRe = /:host/gim;\nvar _colonHostContextRe = /:host-context/gim;\nvar _commentRe = /\\/\\*\\s*[\\s\\S]*?\\*\\//g;\nfunction stripComments(input) {\n return input.replace(_commentRe, '');\n}\nvar _commentWithHashRe = /\\/\\*\\s*#\\s*source(Mapping)?URL=[\\s\\S]+?\\*\\//g;\nfunction extractCommentsWithHash(input) {\n return input.match(_commentWithHashRe) || [];\n}\nvar _ruleRe = /(\\s*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))/g;\nvar _curlyRe = /([{}])/g;\nvar OPEN_CURLY = '{';\nvar CLOSE_CURLY = '}';\nvar BLOCK_PLACEHOLDER = '%BLOCK%';\nvar CssRule = /** @class */ (function () {\n function CssRule(selector, content) {\n this.selector = selector;\n this.content = content;\n }\n return CssRule;\n}());\nfunction processRules(input, ruleCallback) {\n var inputWithEscapedBlocks = escapeBlocks(input);\n var nextBlockIndex = 0;\n return inputWithEscapedBlocks.escapedString.replace(_ruleRe, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n var selector = m[2];\n var content = '';\n var suffix = m[4];\n var contentPrefix = '';\n if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) {\n content = inputWithEscapedBlocks.blocks[nextBlockIndex++];\n suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1);\n contentPrefix = '{';\n }\n var rule = ruleCallback(new CssRule(selector, content));\n return \"\" + m[1] + rule.selector + m[3] + contentPrefix + rule.content + suffix;\n });\n}\nvar StringWithEscapedBlocks = /** @class */ (function () {\n function StringWithEscapedBlocks(escapedString, blocks) {\n this.escapedString = escapedString;\n this.blocks = blocks;\n }\n return StringWithEscapedBlocks;\n}());\nfunction escapeBlocks(input) {\n var inputParts = input.split(_curlyRe);\n var resultParts = [];\n var escapedBlocks = [];\n var bracketCount = 0;\n var currentBlockParts = [];\n for (var partIndex = 0; partIndex < inputParts.length; partIndex++) {\n var part = inputParts[partIndex];\n if (part == CLOSE_CURLY) {\n bracketCount--;\n }\n if (bracketCount > 0) {\n currentBlockParts.push(part);\n }\n else {\n if (currentBlockParts.length > 0) {\n escapedBlocks.push(currentBlockParts.join(''));\n resultParts.push(BLOCK_PLACEHOLDER);\n currentBlockParts = [];\n }\n resultParts.push(part);\n }\n if (part == OPEN_CURLY) {\n bracketCount++;\n }\n }\n if (currentBlockParts.length > 0) {\n escapedBlocks.push(currentBlockParts.join(''));\n resultParts.push(BLOCK_PLACEHOLDER);\n }\n return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar COMPONENT_VARIABLE = '%COMP%';\nvar HOST_ATTR = \"_nghost-\" + COMPONENT_VARIABLE;\nvar CONTENT_ATTR = \"_ngcontent-\" + COMPONENT_VARIABLE;\nvar StylesCompileDependency = /** @class */ (function () {\n function StylesCompileDependency(name, moduleUrl, setValue) {\n this.name = name;\n this.moduleUrl = moduleUrl;\n this.setValue = setValue;\n }\n return StylesCompileDependency;\n}());\nvar CompiledStylesheet = /** @class */ (function () {\n function CompiledStylesheet(outputCtx, stylesVar, dependencies, isShimmed, meta) {\n this.outputCtx = outputCtx;\n this.stylesVar = stylesVar;\n this.dependencies = dependencies;\n this.isShimmed = isShimmed;\n this.meta = meta;\n }\n return CompiledStylesheet;\n}());\nvar StyleCompiler = /** @class */ (function () {\n function StyleCompiler(_urlResolver) {\n this._urlResolver = _urlResolver;\n this._shadowCss = new ShadowCss();\n }\n StyleCompiler.prototype.compileComponent = function (outputCtx, comp) {\n var template = comp.template;\n return this._compileStyles(outputCtx, comp, new CompileStylesheetMetadata({\n styles: template.styles,\n styleUrls: template.styleUrls,\n moduleUrl: identifierModuleUrl(comp.type)\n }), this.needsStyleShim(comp), true);\n };\n StyleCompiler.prototype.compileStyles = function (outputCtx, comp, stylesheet, shim) {\n if (shim === void 0) { shim = this.needsStyleShim(comp); }\n return this._compileStyles(outputCtx, comp, stylesheet, shim, false);\n };\n StyleCompiler.prototype.needsStyleShim = function (comp) {\n return comp.template.encapsulation === ViewEncapsulation.Emulated;\n };\n StyleCompiler.prototype._compileStyles = function (outputCtx, comp, stylesheet, shim, isComponentStylesheet) {\n var _this = this;\n var styleExpressions = stylesheet.styles.map(function (plainStyle) { return literal(_this._shimIfNeeded(plainStyle, shim)); });\n var dependencies = [];\n stylesheet.styleUrls.forEach(function (styleUrl) {\n var exprIndex = styleExpressions.length;\n // Note: This placeholder will be filled later.\n styleExpressions.push(null);\n dependencies.push(new StylesCompileDependency(getStylesVarName(null), styleUrl, function (value) { return styleExpressions[exprIndex] = outputCtx.importExpr(value); }));\n });\n // styles variable contains plain strings and arrays of other styles arrays (recursive),\n // so we set its type to dynamic.\n var stylesVar = getStylesVarName(isComponentStylesheet ? comp : null);\n var stmt = variable(stylesVar)\n .set(literalArr(styleExpressions, new ArrayType(DYNAMIC_TYPE, [TypeModifier.Const])))\n .toDeclStmt(null, isComponentStylesheet ? [StmtModifier.Final] : [\n StmtModifier.Final, StmtModifier.Exported\n ]);\n outputCtx.statements.push(stmt);\n return new CompiledStylesheet(outputCtx, stylesVar, dependencies, shim, stylesheet);\n };\n StyleCompiler.prototype._shimIfNeeded = function (style, shim) {\n return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style;\n };\n return StyleCompiler;\n}());\nfunction getStylesVarName(component) {\n var result = \"styles\";\n if (component) {\n result += \"_\" + identifierName(component.type);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"Character\"] = 0] = \"Character\";\n TokenType[TokenType[\"Identifier\"] = 1] = \"Identifier\";\n TokenType[TokenType[\"Keyword\"] = 2] = \"Keyword\";\n TokenType[TokenType[\"String\"] = 3] = \"String\";\n TokenType[TokenType[\"Operator\"] = 4] = \"Operator\";\n TokenType[TokenType[\"Number\"] = 5] = \"Number\";\n TokenType[TokenType[\"Error\"] = 6] = \"Error\";\n})(TokenType || (TokenType = {}));\nvar KEYWORDS = ['var', 'let', 'as', 'null', 'undefined', 'true', 'false', 'if', 'else', 'this'];\nvar Lexer = /** @class */ (function () {\n function Lexer() {\n }\n Lexer.prototype.tokenize = function (text) {\n var scanner = new _Scanner(text);\n var tokens = [];\n var token = scanner.scanToken();\n while (token != null) {\n tokens.push(token);\n token = scanner.scanToken();\n }\n return tokens;\n };\n return Lexer;\n}());\nvar Token = /** @class */ (function () {\n function Token(index, type, numValue, strValue) {\n this.index = index;\n this.type = type;\n this.numValue = numValue;\n this.strValue = strValue;\n }\n Token.prototype.isCharacter = function (code) {\n return this.type == TokenType.Character && this.numValue == code;\n };\n Token.prototype.isNumber = function () { return this.type == TokenType.Number; };\n Token.prototype.isString = function () { return this.type == TokenType.String; };\n Token.prototype.isOperator = function (operator) {\n return this.type == TokenType.Operator && this.strValue == operator;\n };\n Token.prototype.isIdentifier = function () { return this.type == TokenType.Identifier; };\n Token.prototype.isKeyword = function () { return this.type == TokenType.Keyword; };\n Token.prototype.isKeywordLet = function () { return this.type == TokenType.Keyword && this.strValue == 'let'; };\n Token.prototype.isKeywordAs = function () { return this.type == TokenType.Keyword && this.strValue == 'as'; };\n Token.prototype.isKeywordNull = function () { return this.type == TokenType.Keyword && this.strValue == 'null'; };\n Token.prototype.isKeywordUndefined = function () {\n return this.type == TokenType.Keyword && this.strValue == 'undefined';\n };\n Token.prototype.isKeywordTrue = function () { return this.type == TokenType.Keyword && this.strValue == 'true'; };\n Token.prototype.isKeywordFalse = function () { return this.type == TokenType.Keyword && this.strValue == 'false'; };\n Token.prototype.isKeywordThis = function () { return this.type == TokenType.Keyword && this.strValue == 'this'; };\n Token.prototype.isError = function () { return this.type == TokenType.Error; };\n Token.prototype.toNumber = function () { return this.type == TokenType.Number ? this.numValue : -1; };\n Token.prototype.toString = function () {\n switch (this.type) {\n case TokenType.Character:\n case TokenType.Identifier:\n case TokenType.Keyword:\n case TokenType.Operator:\n case TokenType.String:\n case TokenType.Error:\n return this.strValue;\n case TokenType.Number:\n return this.numValue.toString();\n default:\n return null;\n }\n };\n return Token;\n}());\nfunction newCharacterToken(index, code) {\n return new Token(index, TokenType.Character, code, String.fromCharCode(code));\n}\nfunction newIdentifierToken(index, text) {\n return new Token(index, TokenType.Identifier, 0, text);\n}\nfunction newKeywordToken(index, text) {\n return new Token(index, TokenType.Keyword, 0, text);\n}\nfunction newOperatorToken(index, text) {\n return new Token(index, TokenType.Operator, 0, text);\n}\nfunction newStringToken(index, text) {\n return new Token(index, TokenType.String, 0, text);\n}\nfunction newNumberToken(index, n) {\n return new Token(index, TokenType.Number, n, '');\n}\nfunction newErrorToken(index, message) {\n return new Token(index, TokenType.Error, 0, message);\n}\nvar EOF = new Token(-1, TokenType.Character, 0, '');\nvar _Scanner = /** @class */ (function () {\n function _Scanner(input) {\n this.input = input;\n this.peek = 0;\n this.index = -1;\n this.length = input.length;\n this.advance();\n }\n _Scanner.prototype.advance = function () {\n this.peek = ++this.index >= this.length ? $EOF : this.input.charCodeAt(this.index);\n };\n _Scanner.prototype.scanToken = function () {\n var input = this.input, length = this.length;\n var peek = this.peek, index = this.index;\n // Skip whitespace.\n while (peek <= $SPACE) {\n if (++index >= length) {\n peek = $EOF;\n break;\n }\n else {\n peek = input.charCodeAt(index);\n }\n }\n this.peek = peek;\n this.index = index;\n if (index >= length) {\n return null;\n }\n // Handle identifiers and numbers.\n if (isIdentifierStart(peek))\n return this.scanIdentifier();\n if (isDigit(peek))\n return this.scanNumber(index);\n var start = index;\n switch (peek) {\n case $PERIOD:\n this.advance();\n return isDigit(this.peek) ? this.scanNumber(start) :\n newCharacterToken(start, $PERIOD);\n case $LPAREN:\n case $RPAREN:\n case $LBRACE:\n case $RBRACE:\n case $LBRACKET:\n case $RBRACKET:\n case $COMMA:\n case $COLON:\n case $SEMICOLON:\n return this.scanCharacter(start, peek);\n case $SQ:\n case $DQ:\n return this.scanString();\n case $HASH:\n case $PLUS:\n case $MINUS:\n case $STAR:\n case $SLASH:\n case $PERCENT:\n case $CARET:\n return this.scanOperator(start, String.fromCharCode(peek));\n case $QUESTION:\n return this.scanComplexOperator(start, '?', $PERIOD, '.');\n case $LT:\n case $GT:\n return this.scanComplexOperator(start, String.fromCharCode(peek), $EQ, '=');\n case $BANG:\n case $EQ:\n return this.scanComplexOperator(start, String.fromCharCode(peek), $EQ, '=', $EQ, '=');\n case $AMPERSAND:\n return this.scanComplexOperator(start, '&', $AMPERSAND, '&');\n case $BAR:\n return this.scanComplexOperator(start, '|', $BAR, '|');\n case $NBSP:\n while (isWhitespace(this.peek))\n this.advance();\n return this.scanToken();\n }\n this.advance();\n return this.error(\"Unexpected character [\" + String.fromCharCode(peek) + \"]\", 0);\n };\n _Scanner.prototype.scanCharacter = function (start, code) {\n this.advance();\n return newCharacterToken(start, code);\n };\n _Scanner.prototype.scanOperator = function (start, str) {\n this.advance();\n return newOperatorToken(start, str);\n };\n /**\n * Tokenize a 2/3 char long operator\n *\n * @param start start index in the expression\n * @param one first symbol (always part of the operator)\n * @param twoCode code point for the second symbol\n * @param two second symbol (part of the operator when the second code point matches)\n * @param threeCode code point for the third symbol\n * @param three third symbol (part of the operator when provided and matches source expression)\n */\n _Scanner.prototype.scanComplexOperator = function (start, one, twoCode, two, threeCode, three) {\n this.advance();\n var str = one;\n if (this.peek == twoCode) {\n this.advance();\n str += two;\n }\n if (threeCode != null && this.peek == threeCode) {\n this.advance();\n str += three;\n }\n return newOperatorToken(start, str);\n };\n _Scanner.prototype.scanIdentifier = function () {\n var start = this.index;\n this.advance();\n while (isIdentifierPart(this.peek))\n this.advance();\n var str = this.input.substring(start, this.index);\n return KEYWORDS.indexOf(str) > -1 ? newKeywordToken(start, str) :\n newIdentifierToken(start, str);\n };\n _Scanner.prototype.scanNumber = function (start) {\n var simple = (this.index === start);\n this.advance(); // Skip initial digit.\n while (true) {\n if (isDigit(this.peek)) ;\n else if (this.peek == $PERIOD) {\n simple = false;\n }\n else if (isExponentStart(this.peek)) {\n this.advance();\n if (isExponentSign(this.peek))\n this.advance();\n if (!isDigit(this.peek))\n return this.error('Invalid exponent', -1);\n simple = false;\n }\n else {\n break;\n }\n this.advance();\n }\n var str = this.input.substring(start, this.index);\n var value = simple ? parseIntAutoRadix(str) : parseFloat(str);\n return newNumberToken(start, value);\n };\n _Scanner.prototype.scanString = function () {\n var start = this.index;\n var quote = this.peek;\n this.advance(); // Skip initial quote.\n var buffer = '';\n var marker = this.index;\n var input = this.input;\n while (this.peek != quote) {\n if (this.peek == $BACKSLASH) {\n buffer += input.substring(marker, this.index);\n this.advance();\n var unescapedCode = void 0;\n // Workaround for TS2.1-introduced type strictness\n this.peek = this.peek;\n if (this.peek == $u) {\n // 4 character hex code for unicode character.\n var hex = input.substring(this.index + 1, this.index + 5);\n if (/^[0-9a-f]+$/i.test(hex)) {\n unescapedCode = parseInt(hex, 16);\n }\n else {\n return this.error(\"Invalid unicode escape [\\\\u\" + hex + \"]\", 0);\n }\n for (var i = 0; i < 5; i++) {\n this.advance();\n }\n }\n else {\n unescapedCode = unescape(this.peek);\n this.advance();\n }\n buffer += String.fromCharCode(unescapedCode);\n marker = this.index;\n }\n else if (this.peek == $EOF) {\n return this.error('Unterminated quote', 0);\n }\n else {\n this.advance();\n }\n }\n var last = input.substring(marker, this.index);\n this.advance(); // Skip terminating quote.\n return newStringToken(start, buffer + last);\n };\n _Scanner.prototype.error = function (message, offset) {\n var position = this.index + offset;\n return newErrorToken(position, \"Lexer Error: \" + message + \" at column \" + position + \" in expression [\" + this.input + \"]\");\n };\n return _Scanner;\n}());\nfunction isIdentifierStart(code) {\n return ($a <= code && code <= $z) || ($A <= code && code <= $Z) ||\n (code == $_) || (code == $$);\n}\nfunction isIdentifier(input) {\n if (input.length == 0)\n return false;\n var scanner = new _Scanner(input);\n if (!isIdentifierStart(scanner.peek))\n return false;\n scanner.advance();\n while (scanner.peek !== $EOF) {\n if (!isIdentifierPart(scanner.peek))\n return false;\n scanner.advance();\n }\n return true;\n}\nfunction isIdentifierPart(code) {\n return isAsciiLetter(code) || isDigit(code) || (code == $_) ||\n (code == $$);\n}\nfunction isExponentStart(code) {\n return code == $e || code == $E;\n}\nfunction isExponentSign(code) {\n return code == $MINUS || code == $PLUS;\n}\nfunction isQuote(code) {\n return code === $SQ || code === $DQ || code === $BT;\n}\nfunction unescape(code) {\n switch (code) {\n case $n:\n return $LF;\n case $f:\n return $FF;\n case $r:\n return $CR;\n case $t:\n return $TAB;\n case $v:\n return $VTAB;\n default:\n return code;\n }\n}\nfunction parseIntAutoRadix(text) {\n var result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction assertArrayOfStrings(identifier, value) {\n if (value == null) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new Error(\"Expected '\" + identifier + \"' to be an array of strings.\");\n }\n for (var i = 0; i < value.length; i += 1) {\n if (typeof value[i] !== 'string') {\n throw new Error(\"Expected '\" + identifier + \"' to be an array of strings.\");\n }\n }\n}\nvar INTERPOLATION_BLACKLIST_REGEXPS = [\n /^\\s*$/,\n /[<>]/,\n /^[{}]$/,\n /&(#|[a-z])/i,\n /^\\/\\//,\n];\nfunction assertInterpolationSymbols(identifier, value) {\n if (value != null && !(Array.isArray(value) && value.length == 2)) {\n throw new Error(\"Expected '\" + identifier + \"' to be an array, [start, end].\");\n }\n else if (value != null) {\n var start_1 = value[0];\n var end_1 = value[1];\n // black list checking\n INTERPOLATION_BLACKLIST_REGEXPS.forEach(function (regexp) {\n if (regexp.test(start_1) || regexp.test(end_1)) {\n throw new Error(\"['\" + start_1 + \"', '\" + end_1 + \"'] contains unusable interpolation symbol.\");\n }\n });\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar InterpolationConfig = /** @class */ (function () {\n function InterpolationConfig(start, end) {\n this.start = start;\n this.end = end;\n }\n InterpolationConfig.fromArray = function (markers) {\n if (!markers) {\n return DEFAULT_INTERPOLATION_CONFIG;\n }\n assertInterpolationSymbols('interpolation', markers);\n return new InterpolationConfig(markers[0], markers[1]);\n };\n return InterpolationConfig;\n}());\nvar DEFAULT_INTERPOLATION_CONFIG = new InterpolationConfig('{{', '}}');\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar SplitInterpolation = /** @class */ (function () {\n function SplitInterpolation(strings, expressions, offsets) {\n this.strings = strings;\n this.expressions = expressions;\n this.offsets = offsets;\n }\n return SplitInterpolation;\n}());\nvar TemplateBindingParseResult = /** @class */ (function () {\n function TemplateBindingParseResult(templateBindings, warnings, errors) {\n this.templateBindings = templateBindings;\n this.warnings = warnings;\n this.errors = errors;\n }\n return TemplateBindingParseResult;\n}());\nfunction _createInterpolateRegExp(config) {\n var pattern = escapeRegExp(config.start) + '([\\\\s\\\\S]*?)' + escapeRegExp(config.end);\n return new RegExp(pattern, 'g');\n}\nvar Parser = /** @class */ (function () {\n function Parser(_lexer) {\n this._lexer = _lexer;\n this.errors = [];\n }\n Parser.prototype.parseAction = function (input, location, interpolationConfig) {\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n this._checkNoInterpolation(input, location, interpolationConfig);\n var sourceToLex = this._stripComments(input);\n var tokens = this._lexer.tokenize(this._stripComments(input));\n var ast = new _ParseAST(input, location, tokens, sourceToLex.length, true, this.errors, input.length - sourceToLex.length)\n .parseChain();\n return new ASTWithSource(ast, input, location, this.errors);\n };\n Parser.prototype.parseBinding = function (input, location, interpolationConfig) {\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var ast = this._parseBindingAst(input, location, interpolationConfig);\n return new ASTWithSource(ast, input, location, this.errors);\n };\n Parser.prototype.parseSimpleBinding = function (input, location, interpolationConfig) {\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var ast = this._parseBindingAst(input, location, interpolationConfig);\n var errors = SimpleExpressionChecker.check(ast);\n if (errors.length > 0) {\n this._reportError(\"Host binding expression cannot contain \" + errors.join(' '), input, location);\n }\n return new ASTWithSource(ast, input, location, this.errors);\n };\n Parser.prototype._reportError = function (message, input, errLocation, ctxLocation) {\n this.errors.push(new ParserError(message, input, errLocation, ctxLocation));\n };\n Parser.prototype._parseBindingAst = function (input, location, interpolationConfig) {\n // Quotes expressions use 3rd-party expression language. We don't want to use\n // our lexer or parser for that, so we check for that ahead of time.\n var quote = this._parseQuote(input, location);\n if (quote != null) {\n return quote;\n }\n this._checkNoInterpolation(input, location, interpolationConfig);\n var sourceToLex = this._stripComments(input);\n var tokens = this._lexer.tokenize(sourceToLex);\n return new _ParseAST(input, location, tokens, sourceToLex.length, false, this.errors, input.length - sourceToLex.length)\n .parseChain();\n };\n Parser.prototype._parseQuote = function (input, location) {\n if (input == null)\n return null;\n var prefixSeparatorIndex = input.indexOf(':');\n if (prefixSeparatorIndex == -1)\n return null;\n var prefix = input.substring(0, prefixSeparatorIndex).trim();\n if (!isIdentifier(prefix))\n return null;\n var uninterpretedExpression = input.substring(prefixSeparatorIndex + 1);\n return new Quote(new ParseSpan(0, input.length), prefix, uninterpretedExpression, location);\n };\n Parser.prototype.parseTemplateBindings = function (tplKey, tplValue, location) {\n var tokens = this._lexer.tokenize(tplValue);\n return new _ParseAST(tplValue, location, tokens, tplValue.length, false, this.errors, 0)\n .parseTemplateBindings(tplKey);\n };\n Parser.prototype.parseInterpolation = function (input, location, interpolationConfig) {\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var split = this.splitInterpolation(input, location, interpolationConfig);\n if (split == null)\n return null;\n var expressions = [];\n for (var i = 0; i < split.expressions.length; ++i) {\n var expressionText = split.expressions[i];\n var sourceToLex = this._stripComments(expressionText);\n var tokens = this._lexer.tokenize(sourceToLex);\n var ast = new _ParseAST(input, location, tokens, sourceToLex.length, false, this.errors, split.offsets[i] + (expressionText.length - sourceToLex.length))\n .parseChain();\n expressions.push(ast);\n }\n return new ASTWithSource(new Interpolation(new ParseSpan(0, input == null ? 0 : input.length), split.strings, expressions), input, location, this.errors);\n };\n Parser.prototype.splitInterpolation = function (input, location, interpolationConfig) {\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var regexp = _createInterpolateRegExp(interpolationConfig);\n var parts = input.split(regexp);\n if (parts.length <= 1) {\n return null;\n }\n var strings = [];\n var expressions = [];\n var offsets = [];\n var offset = 0;\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n if (i % 2 === 0) {\n // fixed string\n strings.push(part);\n offset += part.length;\n }\n else if (part.trim().length > 0) {\n offset += interpolationConfig.start.length;\n expressions.push(part);\n offsets.push(offset);\n offset += part.length + interpolationConfig.end.length;\n }\n else {\n this._reportError('Blank expressions are not allowed in interpolated strings', input, \"at column \" + this._findInterpolationErrorColumn(parts, i, interpolationConfig) + \" in\", location);\n expressions.push('$implict');\n offsets.push(offset);\n }\n }\n return new SplitInterpolation(strings, expressions, offsets);\n };\n Parser.prototype.wrapLiteralPrimitive = function (input, location) {\n return new ASTWithSource(new LiteralPrimitive(new ParseSpan(0, input == null ? 0 : input.length), input), input, location, this.errors);\n };\n Parser.prototype._stripComments = function (input) {\n var i = this._commentStart(input);\n return i != null ? input.substring(0, i).trim() : input;\n };\n Parser.prototype._commentStart = function (input) {\n var outerQuote = null;\n for (var i = 0; i < input.length - 1; i++) {\n var char = input.charCodeAt(i);\n var nextChar = input.charCodeAt(i + 1);\n if (char === $SLASH && nextChar == $SLASH && outerQuote == null)\n return i;\n if (outerQuote === char) {\n outerQuote = null;\n }\n else if (outerQuote == null && isQuote(char)) {\n outerQuote = char;\n }\n }\n return null;\n };\n Parser.prototype._checkNoInterpolation = function (input, location, interpolationConfig) {\n var regexp = _createInterpolateRegExp(interpolationConfig);\n var parts = input.split(regexp);\n if (parts.length > 1) {\n this._reportError(\"Got interpolation (\" + interpolationConfig.start + interpolationConfig.end + \") where expression was expected\", input, \"at column \" + this._findInterpolationErrorColumn(parts, 1, interpolationConfig) + \" in\", location);\n }\n };\n Parser.prototype._findInterpolationErrorColumn = function (parts, partInErrIdx, interpolationConfig) {\n var errLocation = '';\n for (var j = 0; j < partInErrIdx; j++) {\n errLocation += j % 2 === 0 ?\n parts[j] :\n \"\" + interpolationConfig.start + parts[j] + interpolationConfig.end;\n }\n return errLocation.length;\n };\n return Parser;\n}());\nvar _ParseAST = /** @class */ (function () {\n function _ParseAST(input, location, tokens, inputLength, parseAction, errors, offset) {\n this.input = input;\n this.location = location;\n this.tokens = tokens;\n this.inputLength = inputLength;\n this.parseAction = parseAction;\n this.errors = errors;\n this.offset = offset;\n this.rparensExpected = 0;\n this.rbracketsExpected = 0;\n this.rbracesExpected = 0;\n this.index = 0;\n }\n _ParseAST.prototype.peek = function (offset) {\n var i = this.index + offset;\n return i < this.tokens.length ? this.tokens[i] : EOF;\n };\n Object.defineProperty(_ParseAST.prototype, \"next\", {\n get: function () { return this.peek(0); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_ParseAST.prototype, \"inputIndex\", {\n get: function () {\n return (this.index < this.tokens.length) ? this.next.index + this.offset :\n this.inputLength + this.offset;\n },\n enumerable: true,\n configurable: true\n });\n _ParseAST.prototype.span = function (start) { return new ParseSpan(start, this.inputIndex); };\n _ParseAST.prototype.advance = function () { this.index++; };\n _ParseAST.prototype.optionalCharacter = function (code) {\n if (this.next.isCharacter(code)) {\n this.advance();\n return true;\n }\n else {\n return false;\n }\n };\n _ParseAST.prototype.peekKeywordLet = function () { return this.next.isKeywordLet(); };\n _ParseAST.prototype.peekKeywordAs = function () { return this.next.isKeywordAs(); };\n _ParseAST.prototype.expectCharacter = function (code) {\n if (this.optionalCharacter(code))\n return;\n this.error(\"Missing expected \" + String.fromCharCode(code));\n };\n _ParseAST.prototype.optionalOperator = function (op) {\n if (this.next.isOperator(op)) {\n this.advance();\n return true;\n }\n else {\n return false;\n }\n };\n _ParseAST.prototype.expectOperator = function (operator) {\n if (this.optionalOperator(operator))\n return;\n this.error(\"Missing expected operator \" + operator);\n };\n _ParseAST.prototype.expectIdentifierOrKeyword = function () {\n var n = this.next;\n if (!n.isIdentifier() && !n.isKeyword()) {\n this.error(\"Unexpected token \" + n + \", expected identifier or keyword\");\n return '';\n }\n this.advance();\n return n.toString();\n };\n _ParseAST.prototype.expectIdentifierOrKeywordOrString = function () {\n var n = this.next;\n if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) {\n this.error(\"Unexpected token \" + n + \", expected identifier, keyword, or string\");\n return '';\n }\n this.advance();\n return n.toString();\n };\n _ParseAST.prototype.parseChain = function () {\n var exprs = [];\n var start = this.inputIndex;\n while (this.index < this.tokens.length) {\n var expr = this.parsePipe();\n exprs.push(expr);\n if (this.optionalCharacter($SEMICOLON)) {\n if (!this.parseAction) {\n this.error('Binding expression cannot contain chained expression');\n }\n while (this.optionalCharacter($SEMICOLON)) {\n } // read all semicolons\n }\n else if (this.index < this.tokens.length) {\n this.error(\"Unexpected token '\" + this.next + \"'\");\n }\n }\n if (exprs.length == 0)\n return new EmptyExpr(this.span(start));\n if (exprs.length == 1)\n return exprs[0];\n return new Chain(this.span(start), exprs);\n };\n _ParseAST.prototype.parsePipe = function () {\n var result = this.parseExpression();\n if (this.optionalOperator('|')) {\n if (this.parseAction) {\n this.error('Cannot have a pipe in an action expression');\n }\n do {\n var name_1 = this.expectIdentifierOrKeyword();\n var args = [];\n while (this.optionalCharacter($COLON)) {\n args.push(this.parseExpression());\n }\n result = new BindingPipe(this.span(result.span.start), result, name_1, args);\n } while (this.optionalOperator('|'));\n }\n return result;\n };\n _ParseAST.prototype.parseExpression = function () { return this.parseConditional(); };\n _ParseAST.prototype.parseConditional = function () {\n var start = this.inputIndex;\n var result = this.parseLogicalOr();\n if (this.optionalOperator('?')) {\n var yes = this.parsePipe();\n var no = void 0;\n if (!this.optionalCharacter($COLON)) {\n var end = this.inputIndex;\n var expression = this.input.substring(start, end);\n this.error(\"Conditional expression \" + expression + \" requires all 3 expressions\");\n no = new EmptyExpr(this.span(start));\n }\n else {\n no = this.parsePipe();\n }\n return new Conditional(this.span(start), result, yes, no);\n }\n else {\n return result;\n }\n };\n _ParseAST.prototype.parseLogicalOr = function () {\n // '||'\n var result = this.parseLogicalAnd();\n while (this.optionalOperator('||')) {\n var right = this.parseLogicalAnd();\n result = new Binary(this.span(result.span.start), '||', result, right);\n }\n return result;\n };\n _ParseAST.prototype.parseLogicalAnd = function () {\n // '&&'\n var result = this.parseEquality();\n while (this.optionalOperator('&&')) {\n var right = this.parseEquality();\n result = new Binary(this.span(result.span.start), '&&', result, right);\n }\n return result;\n };\n _ParseAST.prototype.parseEquality = function () {\n // '==','!=','===','!=='\n var result = this.parseRelational();\n while (this.next.type == TokenType.Operator) {\n var operator = this.next.strValue;\n switch (operator) {\n case '==':\n case '===':\n case '!=':\n case '!==':\n this.advance();\n var right = this.parseRelational();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n };\n _ParseAST.prototype.parseRelational = function () {\n // '<', '>', '<=', '>='\n var result = this.parseAdditive();\n while (this.next.type == TokenType.Operator) {\n var operator = this.next.strValue;\n switch (operator) {\n case '<':\n case '>':\n case '<=':\n case '>=':\n this.advance();\n var right = this.parseAdditive();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n };\n _ParseAST.prototype.parseAdditive = function () {\n // '+', '-'\n var result = this.parseMultiplicative();\n while (this.next.type == TokenType.Operator) {\n var operator = this.next.strValue;\n switch (operator) {\n case '+':\n case '-':\n this.advance();\n var right = this.parseMultiplicative();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n };\n _ParseAST.prototype.parseMultiplicative = function () {\n // '*', '%', '/'\n var result = this.parsePrefix();\n while (this.next.type == TokenType.Operator) {\n var operator = this.next.strValue;\n switch (operator) {\n case '*':\n case '%':\n case '/':\n this.advance();\n var right = this.parsePrefix();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n };\n _ParseAST.prototype.parsePrefix = function () {\n if (this.next.type == TokenType.Operator) {\n var start = this.inputIndex;\n var operator = this.next.strValue;\n var result = void 0;\n switch (operator) {\n case '+':\n this.advance();\n result = this.parsePrefix();\n return new Binary(this.span(start), '-', result, new LiteralPrimitive(new ParseSpan(start, start), 0));\n case '-':\n this.advance();\n result = this.parsePrefix();\n return new Binary(this.span(start), operator, new LiteralPrimitive(new ParseSpan(start, start), 0), result);\n case '!':\n this.advance();\n result = this.parsePrefix();\n return new PrefixNot(this.span(start), result);\n }\n }\n return this.parseCallChain();\n };\n _ParseAST.prototype.parseCallChain = function () {\n var result = this.parsePrimary();\n while (true) {\n if (this.optionalCharacter($PERIOD)) {\n result = this.parseAccessMemberOrMethodCall(result, false);\n }\n else if (this.optionalOperator('?.')) {\n result = this.parseAccessMemberOrMethodCall(result, true);\n }\n else if (this.optionalCharacter($LBRACKET)) {\n this.rbracketsExpected++;\n var key = this.parsePipe();\n this.rbracketsExpected--;\n this.expectCharacter($RBRACKET);\n if (this.optionalOperator('=')) {\n var value = this.parseConditional();\n result = new KeyedWrite(this.span(result.span.start), result, key, value);\n }\n else {\n result = new KeyedRead(this.span(result.span.start), result, key);\n }\n }\n else if (this.optionalCharacter($LPAREN)) {\n this.rparensExpected++;\n var args = this.parseCallArguments();\n this.rparensExpected--;\n this.expectCharacter($RPAREN);\n result = new FunctionCall(this.span(result.span.start), result, args);\n }\n else if (this.optionalOperator('!')) {\n result = new NonNullAssert(this.span(result.span.start), result);\n }\n else {\n return result;\n }\n }\n };\n _ParseAST.prototype.parsePrimary = function () {\n var start = this.inputIndex;\n if (this.optionalCharacter($LPAREN)) {\n this.rparensExpected++;\n var result = this.parsePipe();\n this.rparensExpected--;\n this.expectCharacter($RPAREN);\n return result;\n }\n else if (this.next.isKeywordNull()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), null);\n }\n else if (this.next.isKeywordUndefined()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), void 0);\n }\n else if (this.next.isKeywordTrue()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), true);\n }\n else if (this.next.isKeywordFalse()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), false);\n }\n else if (this.next.isKeywordThis()) {\n this.advance();\n return new ImplicitReceiver(this.span(start));\n }\n else if (this.optionalCharacter($LBRACKET)) {\n this.rbracketsExpected++;\n var elements = this.parseExpressionList($RBRACKET);\n this.rbracketsExpected--;\n this.expectCharacter($RBRACKET);\n return new LiteralArray(this.span(start), elements);\n }\n else if (this.next.isCharacter($LBRACE)) {\n return this.parseLiteralMap();\n }\n else if (this.next.isIdentifier()) {\n return this.parseAccessMemberOrMethodCall(new ImplicitReceiver(this.span(start)), false);\n }\n else if (this.next.isNumber()) {\n var value = this.next.toNumber();\n this.advance();\n return new LiteralPrimitive(this.span(start), value);\n }\n else if (this.next.isString()) {\n var literalValue = this.next.toString();\n this.advance();\n return new LiteralPrimitive(this.span(start), literalValue);\n }\n else if (this.index >= this.tokens.length) {\n this.error(\"Unexpected end of expression: \" + this.input);\n return new EmptyExpr(this.span(start));\n }\n else {\n this.error(\"Unexpected token \" + this.next);\n return new EmptyExpr(this.span(start));\n }\n };\n _ParseAST.prototype.parseExpressionList = function (terminator) {\n var result = [];\n if (!this.next.isCharacter(terminator)) {\n do {\n result.push(this.parsePipe());\n } while (this.optionalCharacter($COMMA));\n }\n return result;\n };\n _ParseAST.prototype.parseLiteralMap = function () {\n var keys = [];\n var values = [];\n var start = this.inputIndex;\n this.expectCharacter($LBRACE);\n if (!this.optionalCharacter($RBRACE)) {\n this.rbracesExpected++;\n do {\n var quoted = this.next.isString();\n var key = this.expectIdentifierOrKeywordOrString();\n keys.push({ key: key, quoted: quoted });\n this.expectCharacter($COLON);\n values.push(this.parsePipe());\n } while (this.optionalCharacter($COMMA));\n this.rbracesExpected--;\n this.expectCharacter($RBRACE);\n }\n return new LiteralMap(this.span(start), keys, values);\n };\n _ParseAST.prototype.parseAccessMemberOrMethodCall = function (receiver, isSafe) {\n if (isSafe === void 0) { isSafe = false; }\n var start = receiver.span.start;\n var id = this.expectIdentifierOrKeyword();\n if (this.optionalCharacter($LPAREN)) {\n this.rparensExpected++;\n var args = this.parseCallArguments();\n this.expectCharacter($RPAREN);\n this.rparensExpected--;\n var span = this.span(start);\n return isSafe ? new SafeMethodCall(span, receiver, id, args) :\n new MethodCall(span, receiver, id, args);\n }\n else {\n if (isSafe) {\n if (this.optionalOperator('=')) {\n this.error('The \\'?.\\' operator cannot be used in the assignment');\n return new EmptyExpr(this.span(start));\n }\n else {\n return new SafePropertyRead(this.span(start), receiver, id);\n }\n }\n else {\n if (this.optionalOperator('=')) {\n if (!this.parseAction) {\n this.error('Bindings cannot contain assignments');\n return new EmptyExpr(this.span(start));\n }\n var value = this.parseConditional();\n return new PropertyWrite(this.span(start), receiver, id, value);\n }\n else {\n return new PropertyRead(this.span(start), receiver, id);\n }\n }\n }\n };\n _ParseAST.prototype.parseCallArguments = function () {\n if (this.next.isCharacter($RPAREN))\n return [];\n var positionals = [];\n do {\n positionals.push(this.parsePipe());\n } while (this.optionalCharacter($COMMA));\n return positionals;\n };\n /**\n * An identifier, a keyword, a string with an optional `-` in between.\n */\n _ParseAST.prototype.expectTemplateBindingKey = function () {\n var result = '';\n var operatorFound = false;\n do {\n result += this.expectIdentifierOrKeywordOrString();\n operatorFound = this.optionalOperator('-');\n if (operatorFound) {\n result += '-';\n }\n } while (operatorFound);\n return result.toString();\n };\n // Parses the AST for ``\n _ParseAST.prototype.parseTemplateBindings = function (tplKey) {\n var firstBinding = true;\n var bindings = [];\n var warnings = [];\n do {\n var start = this.inputIndex;\n var rawKey = void 0;\n var key = void 0;\n var isVar = false;\n if (firstBinding) {\n rawKey = key = tplKey;\n firstBinding = false;\n }\n else {\n isVar = this.peekKeywordLet();\n if (isVar)\n this.advance();\n rawKey = this.expectTemplateBindingKey();\n key = isVar ? rawKey : tplKey + rawKey[0].toUpperCase() + rawKey.substring(1);\n this.optionalCharacter($COLON);\n }\n var name_2 = null;\n var expression = null;\n if (isVar) {\n if (this.optionalOperator('=')) {\n name_2 = this.expectTemplateBindingKey();\n }\n else {\n name_2 = '\\$implicit';\n }\n }\n else if (this.peekKeywordAs()) {\n this.advance(); // consume `as`\n name_2 = rawKey;\n key = this.expectTemplateBindingKey(); // read local var name\n isVar = true;\n }\n else if (this.next !== EOF && !this.peekKeywordLet()) {\n var start_1 = this.inputIndex;\n var ast = this.parsePipe();\n var source = this.input.substring(start_1 - this.offset, this.inputIndex - this.offset);\n expression = new ASTWithSource(ast, source, this.location, this.errors);\n }\n bindings.push(new TemplateBinding(this.span(start), key, isVar, name_2, expression));\n if (this.peekKeywordAs() && !isVar) {\n var letStart = this.inputIndex;\n this.advance(); // consume `as`\n var letName = this.expectTemplateBindingKey(); // read local var name\n bindings.push(new TemplateBinding(this.span(letStart), letName, true, key, null));\n }\n if (!this.optionalCharacter($SEMICOLON)) {\n this.optionalCharacter($COMMA);\n }\n } while (this.index < this.tokens.length);\n return new TemplateBindingParseResult(bindings, warnings, this.errors);\n };\n _ParseAST.prototype.error = function (message, index) {\n if (index === void 0) { index = null; }\n this.errors.push(new ParserError(message, this.input, this.locationText(index), this.location));\n this.skip();\n };\n _ParseAST.prototype.locationText = function (index) {\n if (index === void 0) { index = null; }\n if (index == null)\n index = this.index;\n return (index < this.tokens.length) ? \"at column \" + (this.tokens[index].index + 1) + \" in\" :\n \"at the end of the expression\";\n };\n // Error recovery should skip tokens until it encounters a recovery point. skip() treats\n // the end of input and a ';' as unconditionally a recovery point. It also treats ')',\n // '}' and ']' as conditional recovery points if one of calling productions is expecting\n // one of these symbols. This allows skip() to recover from errors such as '(a.) + 1' allowing\n // more of the AST to be retained (it doesn't skip any tokens as the ')' is retained because\n // of the '(' begins an '(' ')' production). The recovery points of grouping symbols\n // must be conditional as they must be skipped if none of the calling productions are not\n // expecting the closing token else we will never make progress in the case of an\n // extraneous group closing symbol (such as a stray ')'). This is not the case for ';' because\n // parseChain() is always the root production and it expects a ';'.\n // If a production expects one of these token it increments the corresponding nesting count,\n // and then decrements it just prior to checking if the token is in the input.\n _ParseAST.prototype.skip = function () {\n var n = this.next;\n while (this.index < this.tokens.length && !n.isCharacter($SEMICOLON) &&\n (this.rparensExpected <= 0 || !n.isCharacter($RPAREN)) &&\n (this.rbracesExpected <= 0 || !n.isCharacter($RBRACE)) &&\n (this.rbracketsExpected <= 0 || !n.isCharacter($RBRACKET))) {\n if (this.next.isError()) {\n this.errors.push(new ParserError(this.next.toString(), this.input, this.locationText(), this.location));\n }\n this.advance();\n n = this.next;\n }\n };\n return _ParseAST;\n}());\nvar SimpleExpressionChecker = /** @class */ (function () {\n function SimpleExpressionChecker() {\n this.errors = [];\n }\n SimpleExpressionChecker.check = function (ast) {\n var s = new SimpleExpressionChecker();\n ast.visit(s);\n return s.errors;\n };\n SimpleExpressionChecker.prototype.visitImplicitReceiver = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitInterpolation = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitLiteralPrimitive = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitPropertyRead = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitPropertyWrite = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitSafePropertyRead = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitMethodCall = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitSafeMethodCall = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitFunctionCall = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitLiteralArray = function (ast, context) { this.visitAll(ast.expressions); };\n SimpleExpressionChecker.prototype.visitLiteralMap = function (ast, context) { this.visitAll(ast.values); };\n SimpleExpressionChecker.prototype.visitBinary = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitPrefixNot = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitNonNullAssert = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitConditional = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitPipe = function (ast, context) { this.errors.push('pipes'); };\n SimpleExpressionChecker.prototype.visitKeyedRead = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitKeyedWrite = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitAll = function (asts) {\n var _this = this;\n return asts.map(function (node) { return node.visit(_this); });\n };\n SimpleExpressionChecker.prototype.visitChain = function (ast, context) { };\n SimpleExpressionChecker.prototype.visitQuote = function (ast, context) { };\n return SimpleExpressionChecker;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A path is an ordered set of elements. Typically a path is to a\n * particular offset in a source file. The head of the list is the top\n * most node. The tail is the node that contains the offset directly.\n *\n * For example, the expression `a + b + c` might have an ast that looks\n * like:\n * +\n * / \\\n * a +\n * / \\\n * b c\n *\n * The path to the node at offset 9 would be `['+' at 1-10, '+' at 7-10,\n * 'c' at 9-10]` and the path the node at offset 1 would be\n * `['+' at 1-10, 'a' at 1-2]`.\n */\nvar AstPath = /** @class */ (function () {\n function AstPath(path, position) {\n if (position === void 0) { position = -1; }\n this.path = path;\n this.position = position;\n }\n Object.defineProperty(AstPath.prototype, \"empty\", {\n get: function () { return !this.path || !this.path.length; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AstPath.prototype, \"head\", {\n get: function () { return this.path[0]; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AstPath.prototype, \"tail\", {\n get: function () { return this.path[this.path.length - 1]; },\n enumerable: true,\n configurable: true\n });\n AstPath.prototype.parentOf = function (node) {\n return node && this.path[this.path.indexOf(node) - 1];\n };\n AstPath.prototype.childOf = function (node) { return this.path[this.path.indexOf(node) + 1]; };\n AstPath.prototype.first = function (ctor) {\n for (var i = this.path.length - 1; i >= 0; i--) {\n var item = this.path[i];\n if (item instanceof ctor)\n return item;\n }\n };\n AstPath.prototype.push = function (node) { this.path.push(node); };\n AstPath.prototype.pop = function () { return this.path.pop(); };\n return AstPath;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar Text = /** @class */ (function () {\n function Text(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n Text.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\n return Text;\n}());\nvar Expansion = /** @class */ (function () {\n function Expansion(switchValue, type, cases, sourceSpan, switchValueSourceSpan) {\n this.switchValue = switchValue;\n this.type = type;\n this.cases = cases;\n this.sourceSpan = sourceSpan;\n this.switchValueSourceSpan = switchValueSourceSpan;\n }\n Expansion.prototype.visit = function (visitor, context) { return visitor.visitExpansion(this, context); };\n return Expansion;\n}());\nvar ExpansionCase = /** @class */ (function () {\n function ExpansionCase(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) {\n this.value = value;\n this.expression = expression;\n this.sourceSpan = sourceSpan;\n this.valueSourceSpan = valueSourceSpan;\n this.expSourceSpan = expSourceSpan;\n }\n ExpansionCase.prototype.visit = function (visitor, context) { return visitor.visitExpansionCase(this, context); };\n return ExpansionCase;\n}());\nvar Attribute = /** @class */ (function () {\n function Attribute(name, value, sourceSpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.valueSpan = valueSpan;\n }\n Attribute.prototype.visit = function (visitor, context) { return visitor.visitAttribute(this, context); };\n return Attribute;\n}());\nvar Element = /** @class */ (function () {\n function Element(name, attrs, children, sourceSpan, startSourceSpan, endSourceSpan) {\n if (startSourceSpan === void 0) { startSourceSpan = null; }\n if (endSourceSpan === void 0) { endSourceSpan = null; }\n this.name = name;\n this.attrs = attrs;\n this.children = children;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n Element.prototype.visit = function (visitor, context) { return visitor.visitElement(this, context); };\n return Element;\n}());\nvar Comment = /** @class */ (function () {\n function Comment(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n Comment.prototype.visit = function (visitor, context) { return visitor.visitComment(this, context); };\n return Comment;\n}());\nfunction visitAll(visitor, nodes, context) {\n if (context === void 0) { context = null; }\n var result = [];\n var visit = visitor.visit ?\n function (ast) { return visitor.visit(ast, context) || ast.visit(visitor, context); } :\n function (ast) { return ast.visit(visitor, context); };\n nodes.forEach(function (ast) {\n var astResult = visit(ast);\n if (astResult) {\n result.push(astResult);\n }\n });\n return result;\n}\nvar RecursiveVisitor = /** @class */ (function () {\n function RecursiveVisitor() {\n }\n RecursiveVisitor.prototype.visitElement = function (ast, context) {\n this.visitChildren(context, function (visit) {\n visit(ast.attrs);\n visit(ast.children);\n });\n };\n RecursiveVisitor.prototype.visitAttribute = function (ast, context) { };\n RecursiveVisitor.prototype.visitText = function (ast, context) { };\n RecursiveVisitor.prototype.visitComment = function (ast, context) { };\n RecursiveVisitor.prototype.visitExpansion = function (ast, context) {\n return this.visitChildren(context, function (visit) { visit(ast.cases); });\n };\n RecursiveVisitor.prototype.visitExpansionCase = function (ast, context) { };\n RecursiveVisitor.prototype.visitChildren = function (context, cb) {\n var results = [];\n var t = this;\n function visit(children) {\n if (children)\n results.push(visitAll(t, children, context));\n }\n cb(visit);\n return [].concat.apply([], results);\n };\n return RecursiveVisitor;\n}());\nfunction spanOf(ast) {\n var start = ast.sourceSpan.start.offset;\n var end = ast.sourceSpan.end.offset;\n if (ast instanceof Element) {\n if (ast.endSourceSpan) {\n end = ast.endSourceSpan.end.offset;\n }\n else if (ast.children && ast.children.length) {\n end = spanOf(ast.children[ast.children.length - 1]).end;\n }\n }\n return { start: start, end: end };\n}\nfunction findNode(nodes, position) {\n var path = [];\n var visitor = new /** @class */ (function (_super) {\n __extends(class_1, _super);\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n class_1.prototype.visit = function (ast, context) {\n var span = spanOf(ast);\n if (span.start <= position && position < span.end) {\n path.push(ast);\n }\n else {\n // Returning a value here will result in the children being skipped.\n return true;\n }\n };\n return class_1;\n }(RecursiveVisitor));\n visitAll(visitor, nodes);\n return new AstPath(path, position);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar TokenType$1;\n(function (TokenType) {\n TokenType[TokenType[\"TAG_OPEN_START\"] = 0] = \"TAG_OPEN_START\";\n TokenType[TokenType[\"TAG_OPEN_END\"] = 1] = \"TAG_OPEN_END\";\n TokenType[TokenType[\"TAG_OPEN_END_VOID\"] = 2] = \"TAG_OPEN_END_VOID\";\n TokenType[TokenType[\"TAG_CLOSE\"] = 3] = \"TAG_CLOSE\";\n TokenType[TokenType[\"TEXT\"] = 4] = \"TEXT\";\n TokenType[TokenType[\"ESCAPABLE_RAW_TEXT\"] = 5] = \"ESCAPABLE_RAW_TEXT\";\n TokenType[TokenType[\"RAW_TEXT\"] = 6] = \"RAW_TEXT\";\n TokenType[TokenType[\"COMMENT_START\"] = 7] = \"COMMENT_START\";\n TokenType[TokenType[\"COMMENT_END\"] = 8] = \"COMMENT_END\";\n TokenType[TokenType[\"CDATA_START\"] = 9] = \"CDATA_START\";\n TokenType[TokenType[\"CDATA_END\"] = 10] = \"CDATA_END\";\n TokenType[TokenType[\"ATTR_NAME\"] = 11] = \"ATTR_NAME\";\n TokenType[TokenType[\"ATTR_VALUE\"] = 12] = \"ATTR_VALUE\";\n TokenType[TokenType[\"DOC_TYPE\"] = 13] = \"DOC_TYPE\";\n TokenType[TokenType[\"EXPANSION_FORM_START\"] = 14] = \"EXPANSION_FORM_START\";\n TokenType[TokenType[\"EXPANSION_CASE_VALUE\"] = 15] = \"EXPANSION_CASE_VALUE\";\n TokenType[TokenType[\"EXPANSION_CASE_EXP_START\"] = 16] = \"EXPANSION_CASE_EXP_START\";\n TokenType[TokenType[\"EXPANSION_CASE_EXP_END\"] = 17] = \"EXPANSION_CASE_EXP_END\";\n TokenType[TokenType[\"EXPANSION_FORM_END\"] = 18] = \"EXPANSION_FORM_END\";\n TokenType[TokenType[\"EOF\"] = 19] = \"EOF\";\n})(TokenType$1 || (TokenType$1 = {}));\nvar Token$1 = /** @class */ (function () {\n function Token(type, parts, sourceSpan) {\n this.type = type;\n this.parts = parts;\n this.sourceSpan = sourceSpan;\n }\n return Token;\n}());\nvar TokenError = /** @class */ (function (_super) {\n __extends(TokenError, _super);\n function TokenError(errorMsg, tokenType, span) {\n var _this = _super.call(this, span, errorMsg) || this;\n _this.tokenType = tokenType;\n return _this;\n }\n return TokenError;\n}(ParseError));\nvar TokenizeResult = /** @class */ (function () {\n function TokenizeResult(tokens, errors) {\n this.tokens = tokens;\n this.errors = errors;\n }\n return TokenizeResult;\n}());\nfunction tokenize(source, url, getTagDefinition, tokenizeExpansionForms, interpolationConfig) {\n if (tokenizeExpansionForms === void 0) { tokenizeExpansionForms = false; }\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n return new _Tokenizer(new ParseSourceFile(source, url), getTagDefinition, tokenizeExpansionForms, interpolationConfig)\n .tokenize();\n}\nvar _CR_OR_CRLF_REGEXP = /\\r\\n?/g;\nfunction _unexpectedCharacterErrorMsg(charCode) {\n var char = charCode === $EOF ? 'EOF' : String.fromCharCode(charCode);\n return \"Unexpected character \\\"\" + char + \"\\\"\";\n}\nfunction _unknownEntityErrorMsg(entitySrc) {\n return \"Unknown entity \\\"\" + entitySrc + \"\\\" - use the \\\"&#;\\\" or \\\"&#x;\\\" syntax\";\n}\nvar _ControlFlowError = /** @class */ (function () {\n function _ControlFlowError(error) {\n this.error = error;\n }\n return _ControlFlowError;\n}());\n// See http://www.w3.org/TR/html51/syntax.html#writing\nvar _Tokenizer = /** @class */ (function () {\n /**\n * @param _file The html source\n * @param _getTagDefinition\n * @param _tokenizeIcu Whether to tokenize ICU messages (considered as text nodes when false)\n * @param _interpolationConfig\n */\n function _Tokenizer(_file, _getTagDefinition, _tokenizeIcu, _interpolationConfig) {\n if (_interpolationConfig === void 0) { _interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n this._file = _file;\n this._getTagDefinition = _getTagDefinition;\n this._tokenizeIcu = _tokenizeIcu;\n this._interpolationConfig = _interpolationConfig;\n // Note: this is always lowercase!\n this._peek = -1;\n this._nextPeek = -1;\n this._index = -1;\n this._line = 0;\n this._column = -1;\n this._expansionCaseStack = [];\n this._inInterpolation = false;\n this.tokens = [];\n this.errors = [];\n this._input = _file.content;\n this._length = _file.content.length;\n this._advance();\n }\n _Tokenizer.prototype._processCarriageReturns = function (content) {\n // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream\n // In order to keep the original position in the source, we can not\n // pre-process it.\n // Instead CRs are processed right before instantiating the tokens.\n return content.replace(_CR_OR_CRLF_REGEXP, '\\n');\n };\n _Tokenizer.prototype.tokenize = function () {\n while (this._peek !== $EOF) {\n var start = this._getLocation();\n try {\n if (this._attemptCharCode($LT)) {\n if (this._attemptCharCode($BANG)) {\n if (this._attemptCharCode($LBRACKET)) {\n this._consumeCdata(start);\n }\n else if (this._attemptCharCode($MINUS)) {\n this._consumeComment(start);\n }\n else {\n this._consumeDocType(start);\n }\n }\n else if (this._attemptCharCode($SLASH)) {\n this._consumeTagClose(start);\n }\n else {\n this._consumeTagOpen(start);\n }\n }\n else if (!(this._tokenizeIcu && this._tokenizeExpansionForm())) {\n this._consumeText();\n }\n }\n catch (e) {\n if (e instanceof _ControlFlowError) {\n this.errors.push(e.error);\n }\n else {\n throw e;\n }\n }\n }\n this._beginToken(TokenType$1.EOF);\n this._endToken([]);\n return new TokenizeResult(mergeTextTokens(this.tokens), this.errors);\n };\n /**\n * @returns whether an ICU token has been created\n * @internal\n */\n _Tokenizer.prototype._tokenizeExpansionForm = function () {\n if (isExpansionFormStart(this._input, this._index, this._interpolationConfig)) {\n this._consumeExpansionFormStart();\n return true;\n }\n if (isExpansionCaseStart(this._peek) && this._isInExpansionForm()) {\n this._consumeExpansionCaseStart();\n return true;\n }\n if (this._peek === $RBRACE) {\n if (this._isInExpansionCase()) {\n this._consumeExpansionCaseEnd();\n return true;\n }\n if (this._isInExpansionForm()) {\n this._consumeExpansionFormEnd();\n return true;\n }\n }\n return false;\n };\n _Tokenizer.prototype._getLocation = function () {\n return new ParseLocation(this._file, this._index, this._line, this._column);\n };\n _Tokenizer.prototype._getSpan = function (start, end) {\n if (start === void 0) { start = this._getLocation(); }\n if (end === void 0) { end = this._getLocation(); }\n return new ParseSourceSpan(start, end);\n };\n _Tokenizer.prototype._beginToken = function (type, start) {\n if (start === void 0) { start = this._getLocation(); }\n this._currentTokenStart = start;\n this._currentTokenType = type;\n };\n _Tokenizer.prototype._endToken = function (parts, end) {\n if (end === void 0) { end = this._getLocation(); }\n var token = new Token$1(this._currentTokenType, parts, new ParseSourceSpan(this._currentTokenStart, end));\n this.tokens.push(token);\n this._currentTokenStart = null;\n this._currentTokenType = null;\n return token;\n };\n _Tokenizer.prototype._createError = function (msg, span) {\n if (this._isInExpansionForm()) {\n msg += \" (Do you have an unescaped \\\"{\\\" in your template? Use \\\"{{ '{' }}\\\") to escape it.)\";\n }\n var error = new TokenError(msg, this._currentTokenType, span);\n this._currentTokenStart = null;\n this._currentTokenType = null;\n return new _ControlFlowError(error);\n };\n _Tokenizer.prototype._advance = function () {\n if (this._index >= this._length) {\n throw this._createError(_unexpectedCharacterErrorMsg($EOF), this._getSpan());\n }\n if (this._peek === $LF) {\n this._line++;\n this._column = 0;\n }\n else if (this._peek !== $LF && this._peek !== $CR) {\n this._column++;\n }\n this._index++;\n this._peek = this._index >= this._length ? $EOF : this._input.charCodeAt(this._index);\n this._nextPeek =\n this._index + 1 >= this._length ? $EOF : this._input.charCodeAt(this._index + 1);\n };\n _Tokenizer.prototype._attemptCharCode = function (charCode) {\n if (this._peek === charCode) {\n this._advance();\n return true;\n }\n return false;\n };\n _Tokenizer.prototype._attemptCharCodeCaseInsensitive = function (charCode) {\n if (compareCharCodeCaseInsensitive(this._peek, charCode)) {\n this._advance();\n return true;\n }\n return false;\n };\n _Tokenizer.prototype._requireCharCode = function (charCode) {\n var location = this._getLocation();\n if (!this._attemptCharCode(charCode)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(location, location));\n }\n };\n _Tokenizer.prototype._attemptStr = function (chars) {\n var len = chars.length;\n if (this._index + len > this._length) {\n return false;\n }\n var initialPosition = this._savePosition();\n for (var i = 0; i < len; i++) {\n if (!this._attemptCharCode(chars.charCodeAt(i))) {\n // If attempting to parse the string fails, we want to reset the parser\n // to where it was before the attempt\n this._restorePosition(initialPosition);\n return false;\n }\n }\n return true;\n };\n _Tokenizer.prototype._attemptStrCaseInsensitive = function (chars) {\n for (var i = 0; i < chars.length; i++) {\n if (!this._attemptCharCodeCaseInsensitive(chars.charCodeAt(i))) {\n return false;\n }\n }\n return true;\n };\n _Tokenizer.prototype._requireStr = function (chars) {\n var location = this._getLocation();\n if (!this._attemptStr(chars)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(location));\n }\n };\n _Tokenizer.prototype._attemptCharCodeUntilFn = function (predicate) {\n while (!predicate(this._peek)) {\n this._advance();\n }\n };\n _Tokenizer.prototype._requireCharCodeUntilFn = function (predicate, len) {\n var start = this._getLocation();\n this._attemptCharCodeUntilFn(predicate);\n if (this._index - start.offset < len) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(start, start));\n }\n };\n _Tokenizer.prototype._attemptUntilChar = function (char) {\n while (this._peek !== char) {\n this._advance();\n }\n };\n _Tokenizer.prototype._readChar = function (decodeEntities) {\n if (decodeEntities && this._peek === $AMPERSAND) {\n return this._decodeEntity();\n }\n else {\n var index = this._index;\n this._advance();\n return this._input[index];\n }\n };\n _Tokenizer.prototype._decodeEntity = function () {\n var start = this._getLocation();\n this._advance();\n if (this._attemptCharCode($HASH)) {\n var isHex = this._attemptCharCode($x) || this._attemptCharCode($X);\n var numberStart = this._getLocation().offset;\n this._attemptCharCodeUntilFn(isDigitEntityEnd);\n if (this._peek != $SEMICOLON) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan());\n }\n this._advance();\n var strNum = this._input.substring(numberStart, this._index - 1);\n try {\n var charCode = parseInt(strNum, isHex ? 16 : 10);\n return String.fromCharCode(charCode);\n }\n catch (e) {\n var entity = this._input.substring(start.offset + 1, this._index - 1);\n throw this._createError(_unknownEntityErrorMsg(entity), this._getSpan(start));\n }\n }\n else {\n var startPosition = this._savePosition();\n this._attemptCharCodeUntilFn(isNamedEntityEnd);\n if (this._peek != $SEMICOLON) {\n this._restorePosition(startPosition);\n return '&';\n }\n this._advance();\n var name_1 = this._input.substring(start.offset + 1, this._index - 1);\n var char = NAMED_ENTITIES[name_1];\n if (!char) {\n throw this._createError(_unknownEntityErrorMsg(name_1), this._getSpan(start));\n }\n return char;\n }\n };\n _Tokenizer.prototype._consumeRawText = function (decodeEntities, firstCharOfEnd, attemptEndRest) {\n var tagCloseStart;\n var textStart = this._getLocation();\n this._beginToken(decodeEntities ? TokenType$1.ESCAPABLE_RAW_TEXT : TokenType$1.RAW_TEXT, textStart);\n var parts = [];\n while (true) {\n tagCloseStart = this._getLocation();\n if (this._attemptCharCode(firstCharOfEnd) && attemptEndRest()) {\n break;\n }\n if (this._index > tagCloseStart.offset) {\n // add the characters consumed by the previous if statement to the output\n parts.push(this._input.substring(tagCloseStart.offset, this._index));\n }\n while (this._peek !== firstCharOfEnd) {\n parts.push(this._readChar(decodeEntities));\n }\n }\n return this._endToken([this._processCarriageReturns(parts.join(''))], tagCloseStart);\n };\n _Tokenizer.prototype._consumeComment = function (start) {\n var _this = this;\n this._beginToken(TokenType$1.COMMENT_START, start);\n this._requireCharCode($MINUS);\n this._endToken([]);\n var textToken = this._consumeRawText(false, $MINUS, function () { return _this._attemptStr('->'); });\n this._beginToken(TokenType$1.COMMENT_END, textToken.sourceSpan.end);\n this._endToken([]);\n };\n _Tokenizer.prototype._consumeCdata = function (start) {\n var _this = this;\n this._beginToken(TokenType$1.CDATA_START, start);\n this._requireStr('CDATA[');\n this._endToken([]);\n var textToken = this._consumeRawText(false, $RBRACKET, function () { return _this._attemptStr(']>'); });\n this._beginToken(TokenType$1.CDATA_END, textToken.sourceSpan.end);\n this._endToken([]);\n };\n _Tokenizer.prototype._consumeDocType = function (start) {\n this._beginToken(TokenType$1.DOC_TYPE, start);\n this._attemptUntilChar($GT);\n this._advance();\n this._endToken([this._input.substring(start.offset + 2, this._index - 1)]);\n };\n _Tokenizer.prototype._consumePrefixAndName = function () {\n var nameOrPrefixStart = this._index;\n var prefix = null;\n while (this._peek !== $COLON && !isPrefixEnd(this._peek)) {\n this._advance();\n }\n var nameStart;\n if (this._peek === $COLON) {\n this._advance();\n prefix = this._input.substring(nameOrPrefixStart, this._index - 1);\n nameStart = this._index;\n }\n else {\n nameStart = nameOrPrefixStart;\n }\n this._requireCharCodeUntilFn(isNameEnd, this._index === nameStart ? 1 : 0);\n var name = this._input.substring(nameStart, this._index);\n return [prefix, name];\n };\n _Tokenizer.prototype._consumeTagOpen = function (start) {\n var savedPos = this._savePosition();\n var tagName;\n var lowercaseTagName;\n try {\n if (!isAsciiLetter(this._peek)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan());\n }\n var nameStart = this._index;\n this._consumeTagOpenStart(start);\n tagName = this._input.substring(nameStart, this._index);\n lowercaseTagName = tagName.toLowerCase();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n while (this._peek !== $SLASH && this._peek !== $GT) {\n this._consumeAttributeName();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n if (this._attemptCharCode($EQ)) {\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._consumeAttributeValue();\n }\n this._attemptCharCodeUntilFn(isNotWhitespace);\n }\n this._consumeTagOpenEnd();\n }\n catch (e) {\n if (e instanceof _ControlFlowError) {\n // When the start tag is invalid, assume we want a \"<\"\n this._restorePosition(savedPos);\n // Back to back text tokens are merged at the end\n this._beginToken(TokenType$1.TEXT, start);\n this._endToken(['<']);\n return;\n }\n throw e;\n }\n var contentTokenType = this._getTagDefinition(tagName).contentType;\n if (contentTokenType === TagContentType.RAW_TEXT) {\n this._consumeRawTextWithTagClose(lowercaseTagName, false);\n }\n else if (contentTokenType === TagContentType.ESCAPABLE_RAW_TEXT) {\n this._consumeRawTextWithTagClose(lowercaseTagName, true);\n }\n };\n _Tokenizer.prototype._consumeRawTextWithTagClose = function (lowercaseTagName, decodeEntities) {\n var _this = this;\n var textToken = this._consumeRawText(decodeEntities, $LT, function () {\n if (!_this._attemptCharCode($SLASH))\n return false;\n _this._attemptCharCodeUntilFn(isNotWhitespace);\n if (!_this._attemptStrCaseInsensitive(lowercaseTagName))\n return false;\n _this._attemptCharCodeUntilFn(isNotWhitespace);\n return _this._attemptCharCode($GT);\n });\n this._beginToken(TokenType$1.TAG_CLOSE, textToken.sourceSpan.end);\n this._endToken([null, lowercaseTagName]);\n };\n _Tokenizer.prototype._consumeTagOpenStart = function (start) {\n this._beginToken(TokenType$1.TAG_OPEN_START, start);\n var parts = this._consumePrefixAndName();\n this._endToken(parts);\n };\n _Tokenizer.prototype._consumeAttributeName = function () {\n this._beginToken(TokenType$1.ATTR_NAME);\n var prefixAndName = this._consumePrefixAndName();\n this._endToken(prefixAndName);\n };\n _Tokenizer.prototype._consumeAttributeValue = function () {\n this._beginToken(TokenType$1.ATTR_VALUE);\n var value;\n if (this._peek === $SQ || this._peek === $DQ) {\n var quoteChar = this._peek;\n this._advance();\n var parts = [];\n while (this._peek !== quoteChar) {\n parts.push(this._readChar(true));\n }\n value = parts.join('');\n this._advance();\n }\n else {\n var valueStart = this._index;\n this._requireCharCodeUntilFn(isNameEnd, 1);\n value = this._input.substring(valueStart, this._index);\n }\n this._endToken([this._processCarriageReturns(value)]);\n };\n _Tokenizer.prototype._consumeTagOpenEnd = function () {\n var tokenType = this._attemptCharCode($SLASH) ? TokenType$1.TAG_OPEN_END_VOID : TokenType$1.TAG_OPEN_END;\n this._beginToken(tokenType);\n this._requireCharCode($GT);\n this._endToken([]);\n };\n _Tokenizer.prototype._consumeTagClose = function (start) {\n this._beginToken(TokenType$1.TAG_CLOSE, start);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n var prefixAndName = this._consumePrefixAndName();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._requireCharCode($GT);\n this._endToken(prefixAndName);\n };\n _Tokenizer.prototype._consumeExpansionFormStart = function () {\n this._beginToken(TokenType$1.EXPANSION_FORM_START, this._getLocation());\n this._requireCharCode($LBRACE);\n this._endToken([]);\n this._expansionCaseStack.push(TokenType$1.EXPANSION_FORM_START);\n this._beginToken(TokenType$1.RAW_TEXT, this._getLocation());\n var condition = this._readUntil($COMMA);\n this._endToken([condition], this._getLocation());\n this._requireCharCode($COMMA);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._beginToken(TokenType$1.RAW_TEXT, this._getLocation());\n var type = this._readUntil($COMMA);\n this._endToken([type], this._getLocation());\n this._requireCharCode($COMMA);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n };\n _Tokenizer.prototype._consumeExpansionCaseStart = function () {\n this._beginToken(TokenType$1.EXPANSION_CASE_VALUE, this._getLocation());\n var value = this._readUntil($LBRACE).trim();\n this._endToken([value], this._getLocation());\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._beginToken(TokenType$1.EXPANSION_CASE_EXP_START, this._getLocation());\n this._requireCharCode($LBRACE);\n this._endToken([], this._getLocation());\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._expansionCaseStack.push(TokenType$1.EXPANSION_CASE_EXP_START);\n };\n _Tokenizer.prototype._consumeExpansionCaseEnd = function () {\n this._beginToken(TokenType$1.EXPANSION_CASE_EXP_END, this._getLocation());\n this._requireCharCode($RBRACE);\n this._endToken([], this._getLocation());\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._expansionCaseStack.pop();\n };\n _Tokenizer.prototype._consumeExpansionFormEnd = function () {\n this._beginToken(TokenType$1.EXPANSION_FORM_END, this._getLocation());\n this._requireCharCode($RBRACE);\n this._endToken([]);\n this._expansionCaseStack.pop();\n };\n _Tokenizer.prototype._consumeText = function () {\n var start = this._getLocation();\n this._beginToken(TokenType$1.TEXT, start);\n var parts = [];\n do {\n if (this._interpolationConfig && this._attemptStr(this._interpolationConfig.start)) {\n parts.push(this._interpolationConfig.start);\n this._inInterpolation = true;\n }\n else if (this._interpolationConfig && this._inInterpolation &&\n this._attemptStr(this._interpolationConfig.end)) {\n parts.push(this._interpolationConfig.end);\n this._inInterpolation = false;\n }\n else {\n parts.push(this._readChar(true));\n }\n } while (!this._isTextEnd());\n this._endToken([this._processCarriageReturns(parts.join(''))]);\n };\n _Tokenizer.prototype._isTextEnd = function () {\n if (this._peek === $LT || this._peek === $EOF) {\n return true;\n }\n if (this._tokenizeIcu && !this._inInterpolation) {\n if (isExpansionFormStart(this._input, this._index, this._interpolationConfig)) {\n // start of an expansion form\n return true;\n }\n if (this._peek === $RBRACE && this._isInExpansionCase()) {\n // end of and expansion case\n return true;\n }\n }\n return false;\n };\n _Tokenizer.prototype._savePosition = function () {\n return [this._peek, this._index, this._column, this._line, this.tokens.length];\n };\n _Tokenizer.prototype._readUntil = function (char) {\n var start = this._index;\n this._attemptUntilChar(char);\n return this._input.substring(start, this._index);\n };\n _Tokenizer.prototype._restorePosition = function (position) {\n this._peek = position[0];\n this._index = position[1];\n this._column = position[2];\n this._line = position[3];\n var nbTokens = position[4];\n if (nbTokens < this.tokens.length) {\n // remove any extra tokens\n this.tokens = this.tokens.slice(0, nbTokens);\n }\n };\n _Tokenizer.prototype._isInExpansionCase = function () {\n return this._expansionCaseStack.length > 0 &&\n this._expansionCaseStack[this._expansionCaseStack.length - 1] ===\n TokenType$1.EXPANSION_CASE_EXP_START;\n };\n _Tokenizer.prototype._isInExpansionForm = function () {\n return this._expansionCaseStack.length > 0 &&\n this._expansionCaseStack[this._expansionCaseStack.length - 1] ===\n TokenType$1.EXPANSION_FORM_START;\n };\n return _Tokenizer;\n}());\nfunction isNotWhitespace(code) {\n return !isWhitespace(code) || code === $EOF;\n}\nfunction isNameEnd(code) {\n return isWhitespace(code) || code === $GT || code === $SLASH ||\n code === $SQ || code === $DQ || code === $EQ;\n}\nfunction isPrefixEnd(code) {\n return (code < $a || $z < code) && (code < $A || $Z < code) &&\n (code < $0 || code > $9);\n}\nfunction isDigitEntityEnd(code) {\n return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code);\n}\nfunction isNamedEntityEnd(code) {\n return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code);\n}\nfunction isExpansionFormStart(input, offset, interpolationConfig) {\n var isInterpolationStart = interpolationConfig ? input.indexOf(interpolationConfig.start, offset) == offset : false;\n return input.charCodeAt(offset) == $LBRACE && !isInterpolationStart;\n}\nfunction isExpansionCaseStart(peek) {\n return peek === $EQ || isAsciiLetter(peek) || isDigit(peek);\n}\nfunction compareCharCodeCaseInsensitive(code1, code2) {\n return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2);\n}\nfunction toUpperCaseCharCode(code) {\n return code >= $a && code <= $z ? code - $a + $A : code;\n}\nfunction mergeTextTokens(srcTokens) {\n var dstTokens = [];\n var lastDstToken = undefined;\n for (var i = 0; i < srcTokens.length; i++) {\n var token = srcTokens[i];\n if (lastDstToken && lastDstToken.type == TokenType$1.TEXT && token.type == TokenType$1.TEXT) {\n lastDstToken.parts[0] += token.parts[0];\n lastDstToken.sourceSpan.end = token.sourceSpan.end;\n }\n else {\n lastDstToken = token;\n dstTokens.push(lastDstToken);\n }\n }\n return dstTokens;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar TreeError = /** @class */ (function (_super) {\n __extends(TreeError, _super);\n function TreeError(elementName, span, msg) {\n var _this = _super.call(this, span, msg) || this;\n _this.elementName = elementName;\n return _this;\n }\n TreeError.create = function (elementName, span, msg) {\n return new TreeError(elementName, span, msg);\n };\n return TreeError;\n}(ParseError));\nvar ParseTreeResult = /** @class */ (function () {\n function ParseTreeResult(rootNodes, errors) {\n this.rootNodes = rootNodes;\n this.errors = errors;\n }\n return ParseTreeResult;\n}());\nvar Parser$1 = /** @class */ (function () {\n function Parser(getTagDefinition) {\n this.getTagDefinition = getTagDefinition;\n }\n Parser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) {\n if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var tokensAndErrors = tokenize(source, url, this.getTagDefinition, parseExpansionForms, interpolationConfig);\n var treeAndErrors = new _TreeBuilder(tokensAndErrors.tokens, this.getTagDefinition).build();\n return new ParseTreeResult(treeAndErrors.rootNodes, tokensAndErrors.errors.concat(treeAndErrors.errors));\n };\n return Parser;\n}());\nvar _TreeBuilder = /** @class */ (function () {\n function _TreeBuilder(tokens, getTagDefinition) {\n this.tokens = tokens;\n this.getTagDefinition = getTagDefinition;\n this._index = -1;\n this._rootNodes = [];\n this._errors = [];\n this._elementStack = [];\n this._advance();\n }\n _TreeBuilder.prototype.build = function () {\n while (this._peek.type !== TokenType$1.EOF) {\n if (this._peek.type === TokenType$1.TAG_OPEN_START) {\n this._consumeStartTag(this._advance());\n }\n else if (this._peek.type === TokenType$1.TAG_CLOSE) {\n this._consumeEndTag(this._advance());\n }\n else if (this._peek.type === TokenType$1.CDATA_START) {\n this._closeVoidElement();\n this._consumeCdata(this._advance());\n }\n else if (this._peek.type === TokenType$1.COMMENT_START) {\n this._closeVoidElement();\n this._consumeComment(this._advance());\n }\n else if (this._peek.type === TokenType$1.TEXT || this._peek.type === TokenType$1.RAW_TEXT ||\n this._peek.type === TokenType$1.ESCAPABLE_RAW_TEXT) {\n this._closeVoidElement();\n this._consumeText(this._advance());\n }\n else if (this._peek.type === TokenType$1.EXPANSION_FORM_START) {\n this._consumeExpansion(this._advance());\n }\n else {\n // Skip all other tokens...\n this._advance();\n }\n }\n return new ParseTreeResult(this._rootNodes, this._errors);\n };\n _TreeBuilder.prototype._advance = function () {\n var prev = this._peek;\n if (this._index < this.tokens.length - 1) {\n // Note: there is always an EOF token at the end\n this._index++;\n }\n this._peek = this.tokens[this._index];\n return prev;\n };\n _TreeBuilder.prototype._advanceIf = function (type) {\n if (this._peek.type === type) {\n return this._advance();\n }\n return null;\n };\n _TreeBuilder.prototype._consumeCdata = function (startToken) {\n this._consumeText(this._advance());\n this._advanceIf(TokenType$1.CDATA_END);\n };\n _TreeBuilder.prototype._consumeComment = function (token) {\n var text = this._advanceIf(TokenType$1.RAW_TEXT);\n this._advanceIf(TokenType$1.COMMENT_END);\n var value = text != null ? text.parts[0].trim() : null;\n this._addToParent(new Comment(value, token.sourceSpan));\n };\n _TreeBuilder.prototype._consumeExpansion = function (token) {\n var switchValue = this._advance();\n var type = this._advance();\n var cases = [];\n // read =\n while (this._peek.type === TokenType$1.EXPANSION_CASE_VALUE) {\n var expCase = this._parseExpansionCase();\n if (!expCase)\n return; // error\n cases.push(expCase);\n }\n // read the final }\n if (this._peek.type !== TokenType$1.EXPANSION_FORM_END) {\n this._errors.push(TreeError.create(null, this._peek.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n return;\n }\n var sourceSpan = new ParseSourceSpan(token.sourceSpan.start, this._peek.sourceSpan.end);\n this._addToParent(new Expansion(switchValue.parts[0], type.parts[0], cases, sourceSpan, switchValue.sourceSpan));\n this._advance();\n };\n _TreeBuilder.prototype._parseExpansionCase = function () {\n var value = this._advance();\n // read {\n if (this._peek.type !== TokenType$1.EXPANSION_CASE_EXP_START) {\n this._errors.push(TreeError.create(null, this._peek.sourceSpan, \"Invalid ICU message. Missing '{'.\"));\n return null;\n }\n // read until }\n var start = this._advance();\n var exp = this._collectExpansionExpTokens(start);\n if (!exp)\n return null;\n var end = this._advance();\n exp.push(new Token$1(TokenType$1.EOF, [], end.sourceSpan));\n // parse everything in between { and }\n var parsedExp = new _TreeBuilder(exp, this.getTagDefinition).build();\n if (parsedExp.errors.length > 0) {\n this._errors = this._errors.concat(parsedExp.errors);\n return null;\n }\n var sourceSpan = new ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end);\n var expSourceSpan = new ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end);\n return new ExpansionCase(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan);\n };\n _TreeBuilder.prototype._collectExpansionExpTokens = function (start) {\n var exp = [];\n var expansionFormStack = [TokenType$1.EXPANSION_CASE_EXP_START];\n while (true) {\n if (this._peek.type === TokenType$1.EXPANSION_FORM_START ||\n this._peek.type === TokenType$1.EXPANSION_CASE_EXP_START) {\n expansionFormStack.push(this._peek.type);\n }\n if (this._peek.type === TokenType$1.EXPANSION_CASE_EXP_END) {\n if (lastOnStack(expansionFormStack, TokenType$1.EXPANSION_CASE_EXP_START)) {\n expansionFormStack.pop();\n if (expansionFormStack.length == 0)\n return exp;\n }\n else {\n this._errors.push(TreeError.create(null, start.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n return null;\n }\n }\n if (this._peek.type === TokenType$1.EXPANSION_FORM_END) {\n if (lastOnStack(expansionFormStack, TokenType$1.EXPANSION_FORM_START)) {\n expansionFormStack.pop();\n }\n else {\n this._errors.push(TreeError.create(null, start.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n return null;\n }\n }\n if (this._peek.type === TokenType$1.EOF) {\n this._errors.push(TreeError.create(null, start.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n return null;\n }\n exp.push(this._advance());\n }\n };\n _TreeBuilder.prototype._consumeText = function (token) {\n var text = token.parts[0];\n if (text.length > 0 && text[0] == '\\n') {\n var parent_1 = this._getParentElement();\n if (parent_1 != null && parent_1.children.length == 0 &&\n this.getTagDefinition(parent_1.name).ignoreFirstLf) {\n text = text.substring(1);\n }\n }\n if (text.length > 0) {\n this._addToParent(new Text(text, token.sourceSpan));\n }\n };\n _TreeBuilder.prototype._closeVoidElement = function () {\n var el = this._getParentElement();\n if (el && this.getTagDefinition(el.name).isVoid) {\n this._elementStack.pop();\n }\n };\n _TreeBuilder.prototype._consumeStartTag = function (startTagToken) {\n var prefix = startTagToken.parts[0];\n var name = startTagToken.parts[1];\n var attrs = [];\n while (this._peek.type === TokenType$1.ATTR_NAME) {\n attrs.push(this._consumeAttr(this._advance()));\n }\n var fullName = this._getElementFullName(prefix, name, this._getParentElement());\n var selfClosing = false;\n // Note: There could have been a tokenizer error\n // so that we don't get a token for the end tag...\n if (this._peek.type === TokenType$1.TAG_OPEN_END_VOID) {\n this._advance();\n selfClosing = true;\n var tagDef = this.getTagDefinition(fullName);\n if (!(tagDef.canSelfClose || getNsPrefix(fullName) !== null || tagDef.isVoid)) {\n this._errors.push(TreeError.create(fullName, startTagToken.sourceSpan, \"Only void and foreign elements can be self closed \\\"\" + startTagToken.parts[1] + \"\\\"\"));\n }\n }\n else if (this._peek.type === TokenType$1.TAG_OPEN_END) {\n this._advance();\n selfClosing = false;\n }\n var end = this._peek.sourceSpan.start;\n var span = new ParseSourceSpan(startTagToken.sourceSpan.start, end);\n var el = new Element(fullName, attrs, [], span, span, undefined);\n this._pushElement(el);\n if (selfClosing) {\n this._popElement(fullName);\n el.endSourceSpan = span;\n }\n };\n _TreeBuilder.prototype._pushElement = function (el) {\n var parentEl = this._getParentElement();\n if (parentEl && this.getTagDefinition(parentEl.name).isClosedByChild(el.name)) {\n this._elementStack.pop();\n }\n var tagDef = this.getTagDefinition(el.name);\n var _a = this._getParentElementSkippingContainers(), parent = _a.parent, container = _a.container;\n if (parent && tagDef.requireExtraParent(parent.name)) {\n var newParent = new Element(tagDef.parentToAdd, [], [], el.sourceSpan, el.startSourceSpan, el.endSourceSpan);\n this._insertBeforeContainer(parent, container, newParent);\n }\n this._addToParent(el);\n this._elementStack.push(el);\n };\n _TreeBuilder.prototype._consumeEndTag = function (endTagToken) {\n var fullName = this._getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement());\n if (this._getParentElement()) {\n this._getParentElement().endSourceSpan = endTagToken.sourceSpan;\n }\n if (this.getTagDefinition(fullName).isVoid) {\n this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, \"Void elements do not have end tags \\\"\" + endTagToken.parts[1] + \"\\\"\"));\n }\n else if (!this._popElement(fullName)) {\n var errMsg = \"Unexpected closing tag \\\"\" + fullName + \"\\\". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags\";\n this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, errMsg));\n }\n };\n _TreeBuilder.prototype._popElement = function (fullName) {\n for (var stackIndex = this._elementStack.length - 1; stackIndex >= 0; stackIndex--) {\n var el = this._elementStack[stackIndex];\n if (el.name == fullName) {\n this._elementStack.splice(stackIndex, this._elementStack.length - stackIndex);\n return true;\n }\n if (!this.getTagDefinition(el.name).closedByParent) {\n return false;\n }\n }\n return false;\n };\n _TreeBuilder.prototype._consumeAttr = function (attrName) {\n var fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]);\n var end = attrName.sourceSpan.end;\n var value = '';\n var valueSpan = undefined;\n if (this._peek.type === TokenType$1.ATTR_VALUE) {\n var valueToken = this._advance();\n value = valueToken.parts[0];\n end = valueToken.sourceSpan.end;\n valueSpan = valueToken.sourceSpan;\n }\n return new Attribute(fullName, value, new ParseSourceSpan(attrName.sourceSpan.start, end), valueSpan);\n };\n _TreeBuilder.prototype._getParentElement = function () {\n return this._elementStack.length > 0 ? this._elementStack[this._elementStack.length - 1] : null;\n };\n /**\n * Returns the parent in the DOM and the container.\n *\n * `` elements are skipped as they are not rendered as DOM element.\n */\n _TreeBuilder.prototype._getParentElementSkippingContainers = function () {\n var container = null;\n for (var i = this._elementStack.length - 1; i >= 0; i--) {\n if (!isNgContainer(this._elementStack[i].name)) {\n return { parent: this._elementStack[i], container: container };\n }\n container = this._elementStack[i];\n }\n return { parent: null, container: container };\n };\n _TreeBuilder.prototype._addToParent = function (node) {\n var parent = this._getParentElement();\n if (parent != null) {\n parent.children.push(node);\n }\n else {\n this._rootNodes.push(node);\n }\n };\n /**\n * Insert a node between the parent and the container.\n * When no container is given, the node is appended as a child of the parent.\n * Also updates the element stack accordingly.\n *\n * @internal\n */\n _TreeBuilder.prototype._insertBeforeContainer = function (parent, container, node) {\n if (!container) {\n this._addToParent(node);\n this._elementStack.push(node);\n }\n else {\n if (parent) {\n // replace the container with the new node in the children\n var index = parent.children.indexOf(container);\n parent.children[index] = node;\n }\n else {\n this._rootNodes.push(node);\n }\n node.children.push(container);\n this._elementStack.splice(this._elementStack.indexOf(container), 0, node);\n }\n };\n _TreeBuilder.prototype._getElementFullName = function (prefix, localName, parentElement) {\n if (prefix == null) {\n prefix = this.getTagDefinition(localName).implicitNamespacePrefix;\n if (prefix == null && parentElement != null) {\n prefix = getNsPrefix(parentElement.name);\n }\n }\n return mergeNsAndName(prefix, localName);\n };\n return _TreeBuilder;\n}());\nfunction lastOnStack(stack, element) {\n return stack.length > 0 && stack[stack.length - 1] === element;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar HtmlParser = /** @class */ (function (_super) {\n __extends(HtmlParser, _super);\n function HtmlParser() {\n return _super.call(this, getHtmlTagDefinition) || this;\n }\n HtmlParser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) {\n if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n return _super.prototype.parse.call(this, source, url, parseExpansionForms, interpolationConfig);\n };\n return HtmlParser;\n}(Parser$1));\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces';\nvar SKIP_WS_TRIM_TAGS = new Set(['pre', 'template', 'textarea', 'script', 'style']);\n// Equivalent to \\s with \\u00a0 (non-breaking space) excluded.\n// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\nvar WS_CHARS = ' \\f\\n\\r\\t\\v\\u1680\\u180e\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nvar NO_WS_REGEXP = new RegExp(\"[^\" + WS_CHARS + \"]\");\nvar WS_REPLACE_REGEXP = new RegExp(\"[\" + WS_CHARS + \"]{2,}\", 'g');\nfunction hasPreserveWhitespacesAttr(attrs) {\n return attrs.some(function (attr) { return attr.name === PRESERVE_WS_ATTR_NAME; });\n}\n/**\n * Angular Dart introduced &ngsp; as a placeholder for non-removable space, see:\n * https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart#L25-L32\n * In Angular Dart &ngsp; is converted to the 0xE500 PUA (Private Use Areas) unicode character\n * and later on replaced by a space. We are re-implementing the same idea here.\n */\nfunction replaceNgsp(value) {\n // lexer is replacing the &ngsp; pseudo-entity with NGSP_UNICODE\n return value.replace(new RegExp(NGSP_UNICODE, 'g'), ' ');\n}\n/**\n * This visitor can walk HTML parse tree and remove / trim text nodes using the following rules:\n * - consider spaces, tabs and new lines as whitespace characters;\n * - drop text nodes consisting of whitespace characters only;\n * - for all other text nodes replace consecutive whitespace characters with one space;\n * - convert &ngsp; pseudo-entity to a single space;\n *\n * Removal and trimming of whitespaces have positive performance impact (less code to generate\n * while compiling templates, faster view creation). At the same time it can be \"destructive\"\n * in some cases (whitespaces can influence layout). Because of the potential of breaking layout\n * this visitor is not activated by default in Angular 5 and people need to explicitly opt-in for\n * whitespace removal. The default option for whitespace removal will be revisited in Angular 6\n * and might be changed to \"on\" by default.\n */\nvar WhitespaceVisitor = /** @class */ (function () {\n function WhitespaceVisitor() {\n }\n WhitespaceVisitor.prototype.visitElement = function (element, context) {\n if (SKIP_WS_TRIM_TAGS.has(element.name) || hasPreserveWhitespacesAttr(element.attrs)) {\n // don't descent into elements where we need to preserve whitespaces\n // but still visit all attributes to eliminate one used as a market to preserve WS\n return new Element(element.name, visitAll(this, element.attrs), element.children, element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n }\n return new Element(element.name, element.attrs, visitAll(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n };\n WhitespaceVisitor.prototype.visitAttribute = function (attribute, context) {\n return attribute.name !== PRESERVE_WS_ATTR_NAME ? attribute : null;\n };\n WhitespaceVisitor.prototype.visitText = function (text, context) {\n var isNotBlank = text.value.match(NO_WS_REGEXP);\n if (isNotBlank) {\n return new Text(replaceNgsp(text.value).replace(WS_REPLACE_REGEXP, ' '), text.sourceSpan);\n }\n return null;\n };\n WhitespaceVisitor.prototype.visitComment = function (comment, context) { return comment; };\n WhitespaceVisitor.prototype.visitExpansion = function (expansion, context) { return expansion; };\n WhitespaceVisitor.prototype.visitExpansionCase = function (expansionCase, context) { return expansionCase; };\n return WhitespaceVisitor;\n}());\nfunction removeWhitespaces(htmlAstWithErrors) {\n return new ParseTreeResult(visitAll(new WhitespaceVisitor(), htmlAstWithErrors.rootNodes), htmlAstWithErrors.errors);\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// =================================================================================================\n// =================================================================================================\n// =========== S T O P - S T O P - S T O P - S T O P - S T O P - S T O P ===========\n// =================================================================================================\n// =================================================================================================\n//\n// DO NOT EDIT THIS LIST OF SECURITY SENSITIVE PROPERTIES WITHOUT A SECURITY REVIEW!\n// Reach out to mprobst for details.\n//\n// =================================================================================================\n/** Map from tagName|propertyName SecurityContext. Properties applying to all tags use '*'. */\nvar _SECURITY_SCHEMA;\nfunction SECURITY_SCHEMA() {\n if (!_SECURITY_SCHEMA) {\n _SECURITY_SCHEMA = {};\n // Case is insignificant below, all element and attribute names are lower-cased for lookup.\n registerContext(SecurityContext.HTML, [\n 'iframe|srcdoc',\n '*|innerHTML',\n '*|outerHTML',\n ]);\n registerContext(SecurityContext.STYLE, ['*|style']);\n // NB: no SCRIPT contexts here, they are never allowed due to the parser stripping them.\n registerContext(SecurityContext.URL, [\n '*|formAction', 'area|href', 'area|ping', 'audio|src', 'a|href',\n 'a|ping', 'blockquote|cite', 'body|background', 'del|cite', 'form|action',\n 'img|src', 'img|srcset', 'input|src', 'ins|cite', 'q|cite',\n 'source|src', 'source|srcset', 'track|src', 'video|poster', 'video|src',\n ]);\n registerContext(SecurityContext.RESOURCE_URL, [\n 'applet|code',\n 'applet|codebase',\n 'base|href',\n 'embed|src',\n 'frame|src',\n 'head|profile',\n 'html|manifest',\n 'iframe|src',\n 'link|href',\n 'media|src',\n 'object|codebase',\n 'object|data',\n 'script|src',\n ]);\n }\n return _SECURITY_SCHEMA;\n}\nfunction registerContext(ctx, specs) {\n var e_1, _a;\n try {\n for (var specs_1 = __values(specs), specs_1_1 = specs_1.next(); !specs_1_1.done; specs_1_1 = specs_1.next()) {\n var spec = specs_1_1.value;\n _SECURITY_SCHEMA[spec.toLowerCase()] = ctx;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (specs_1_1 && !specs_1_1.done && (_a = specs_1.return)) _a.call(specs_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar ElementSchemaRegistry = /** @class */ (function () {\n function ElementSchemaRegistry() {\n }\n return ElementSchemaRegistry;\n}());\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar BOOLEAN = 'boolean';\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar OBJECT = 'object';\n/**\n * This array represents the DOM schema. It encodes inheritance, properties, and events.\n *\n * ## Overview\n *\n * Each line represents one kind of element. The `element_inheritance` and properties are joined\n * using `element_inheritance|properties` syntax.\n *\n * ## Element Inheritance\n *\n * The `element_inheritance` can be further subdivided as `element1,element2,...^parentElement`.\n * Here the individual elements are separated by `,` (commas). Every element in the list\n * has identical properties.\n *\n * An `element` may inherit additional properties from `parentElement` If no `^parentElement` is\n * specified then `\"\"` (blank) element is assumed.\n *\n * NOTE: The blank element inherits from root `[Element]` element, the super element of all\n * elements.\n *\n * NOTE an element prefix such as `:svg:` has no special meaning to the schema.\n *\n * ## Properties\n *\n * Each element has a set of properties separated by `,` (commas). Each property can be prefixed\n * by a special character designating its type:\n *\n * - (no prefix): property is a string.\n * - `*`: property represents an event.\n * - `!`: property is a boolean.\n * - `#`: property is a number.\n * - `%`: property is an object.\n *\n * ## Query\n *\n * The class creates an internal squas representation which allows to easily answer the query of\n * if a given property exist on a given element.\n *\n * NOTE: We don't yet support querying for types or events.\n * NOTE: This schema is auto extracted from `schema_extractor.ts` located in the test folder,\n * see dom_element_schema_registry_spec.ts\n */\n// =================================================================================================\n// =================================================================================================\n// =========== S T O P - S T O P - S T O P - S T O P - S T O P - S T O P ===========\n// =================================================================================================\n// =================================================================================================\n//\n// DO NOT EDIT THIS DOM SCHEMA WITHOUT A SECURITY REVIEW!\n//\n// Newly added properties must be security reviewed and assigned an appropriate SecurityContext in\n// dom_security_schema.ts. Reach out to mprobst & rjamet for details.\n//\n// =================================================================================================\nvar SCHEMA = [\n '[Element]|textContent,%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop,slot' +\n /* added manually to avoid breaking changes */\n ',*message,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored',\n '[HTMLElement]^[Element]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n 'abbr,address,article,aside,b,bdi,bdo,cite,code,dd,dfn,dt,em,figcaption,figure,footer,header,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n 'media^[HTMLElement]|!autoplay,!controls,%controlsList,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,*waitingforkey,#playbackRate,preload,src,%srcObject,#volume',\n ':svg:^[HTMLElement]|*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex',\n ':svg:graphics^:svg:|',\n ':svg:animation^:svg:|*begin,*end,*repeat',\n ':svg:geometry^:svg:|',\n ':svg:componentTransferFunction^:svg:|',\n ':svg:gradient^:svg:|',\n ':svg:textContent^:svg:graphics|',\n ':svg:textPositioning^:svg:textContent|',\n 'a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,rev,search,shape,target,text,type,username',\n 'area^[HTMLElement]|alt,coords,download,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,rel,search,shape,target,username',\n 'audio^media|',\n 'br^[HTMLElement]|clear',\n 'base^[HTMLElement]|href,target',\n 'body^[HTMLElement]|aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink',\n 'button^[HTMLElement]|!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value',\n 'canvas^[HTMLElement]|#height,#width',\n 'content^[HTMLElement]|select',\n 'dl^[HTMLElement]|!compact',\n 'datalist^[HTMLElement]|',\n 'details^[HTMLElement]|!open',\n 'dialog^[HTMLElement]|!open,returnValue',\n 'dir^[HTMLElement]|!compact',\n 'div^[HTMLElement]|align',\n 'embed^[HTMLElement]|align,height,name,src,type,width',\n 'fieldset^[HTMLElement]|!disabled,name',\n 'font^[HTMLElement]|color,face,size',\n 'form^[HTMLElement]|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target',\n 'frame^[HTMLElement]|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src',\n 'frameset^[HTMLElement]|cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows',\n 'hr^[HTMLElement]|align,color,!noShade,size,width',\n 'head^[HTMLElement]|',\n 'h1,h2,h3,h4,h5,h6^[HTMLElement]|align',\n 'html^[HTMLElement]|version',\n 'iframe^[HTMLElement]|align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width',\n 'img^[HTMLElement]|align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width',\n 'input^[HTMLElement]|accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width',\n 'li^[HTMLElement]|type,#value',\n 'label^[HTMLElement]|htmlFor',\n 'legend^[HTMLElement]|align',\n 'link^[HTMLElement]|as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,referrerPolicy,rel,%relList,rev,%sizes,target,type',\n 'map^[HTMLElement]|name',\n 'marquee^[HTMLElement]|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width',\n 'menu^[HTMLElement]|!compact',\n 'meta^[HTMLElement]|content,httpEquiv,name,scheme',\n 'meter^[HTMLElement]|#high,#low,#max,#min,#optimum,#value',\n 'ins,del^[HTMLElement]|cite,dateTime',\n 'ol^[HTMLElement]|!compact,!reversed,#start,type',\n 'object^[HTMLElement]|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width',\n 'optgroup^[HTMLElement]|!disabled,label',\n 'option^[HTMLElement]|!defaultSelected,!disabled,label,!selected,text,value',\n 'output^[HTMLElement]|defaultValue,%htmlFor,name,value',\n 'p^[HTMLElement]|align',\n 'param^[HTMLElement]|name,type,value,valueType',\n 'picture^[HTMLElement]|',\n 'pre^[HTMLElement]|#width',\n 'progress^[HTMLElement]|#max,#value',\n 'q,blockquote,cite^[HTMLElement]|',\n 'script^[HTMLElement]|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type',\n 'select^[HTMLElement]|!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value',\n 'shadow^[HTMLElement]|',\n 'slot^[HTMLElement]|name',\n 'source^[HTMLElement]|media,sizes,src,srcset,type',\n 'span^[HTMLElement]|',\n 'style^[HTMLElement]|!disabled,media,type',\n 'caption^[HTMLElement]|align',\n 'th,td^[HTMLElement]|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width',\n 'col,colgroup^[HTMLElement]|align,ch,chOff,#span,vAlign,width',\n 'table^[HTMLElement]|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width',\n 'tr^[HTMLElement]|align,bgColor,ch,chOff,vAlign',\n 'tfoot,thead,tbody^[HTMLElement]|align,ch,chOff,vAlign',\n 'template^[HTMLElement]|',\n 'textarea^[HTMLElement]|autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap',\n 'title^[HTMLElement]|text',\n 'track^[HTMLElement]|!default,kind,label,src,srclang',\n 'ul^[HTMLElement]|!compact,type',\n 'unknown^[HTMLElement]|',\n 'video^media|#height,poster,#width',\n ':svg:a^:svg:graphics|',\n ':svg:animate^:svg:animation|',\n ':svg:animateMotion^:svg:animation|',\n ':svg:animateTransform^:svg:animation|',\n ':svg:circle^:svg:geometry|',\n ':svg:clipPath^:svg:graphics|',\n ':svg:defs^:svg:graphics|',\n ':svg:desc^:svg:|',\n ':svg:discard^:svg:|',\n ':svg:ellipse^:svg:geometry|',\n ':svg:feBlend^:svg:|',\n ':svg:feColorMatrix^:svg:|',\n ':svg:feComponentTransfer^:svg:|',\n ':svg:feComposite^:svg:|',\n ':svg:feConvolveMatrix^:svg:|',\n ':svg:feDiffuseLighting^:svg:|',\n ':svg:feDisplacementMap^:svg:|',\n ':svg:feDistantLight^:svg:|',\n ':svg:feDropShadow^:svg:|',\n ':svg:feFlood^:svg:|',\n ':svg:feFuncA^:svg:componentTransferFunction|',\n ':svg:feFuncB^:svg:componentTransferFunction|',\n ':svg:feFuncG^:svg:componentTransferFunction|',\n ':svg:feFuncR^:svg:componentTransferFunction|',\n ':svg:feGaussianBlur^:svg:|',\n ':svg:feImage^:svg:|',\n ':svg:feMerge^:svg:|',\n ':svg:feMergeNode^:svg:|',\n ':svg:feMorphology^:svg:|',\n ':svg:feOffset^:svg:|',\n ':svg:fePointLight^:svg:|',\n ':svg:feSpecularLighting^:svg:|',\n ':svg:feSpotLight^:svg:|',\n ':svg:feTile^:svg:|',\n ':svg:feTurbulence^:svg:|',\n ':svg:filter^:svg:|',\n ':svg:foreignObject^:svg:graphics|',\n ':svg:g^:svg:graphics|',\n ':svg:image^:svg:graphics|',\n ':svg:line^:svg:geometry|',\n ':svg:linearGradient^:svg:gradient|',\n ':svg:mpath^:svg:|',\n ':svg:marker^:svg:|',\n ':svg:mask^:svg:|',\n ':svg:metadata^:svg:|',\n ':svg:path^:svg:geometry|',\n ':svg:pattern^:svg:|',\n ':svg:polygon^:svg:geometry|',\n ':svg:polyline^:svg:geometry|',\n ':svg:radialGradient^:svg:gradient|',\n ':svg:rect^:svg:geometry|',\n ':svg:svg^:svg:graphics|#currentScale,#zoomAndPan',\n ':svg:script^:svg:|type',\n ':svg:set^:svg:animation|',\n ':svg:stop^:svg:|',\n ':svg:style^:svg:|!disabled,media,title,type',\n ':svg:switch^:svg:graphics|',\n ':svg:symbol^:svg:|',\n ':svg:tspan^:svg:textPositioning|',\n ':svg:text^:svg:textPositioning|',\n ':svg:textPath^:svg:textContent|',\n ':svg:title^:svg:|',\n ':svg:use^:svg:graphics|',\n ':svg:view^:svg:|#zoomAndPan',\n 'data^[HTMLElement]|value',\n 'keygen^[HTMLElement]|!autofocus,challenge,!disabled,form,keytype,name',\n 'menuitem^[HTMLElement]|type,label,icon,!disabled,!checked,radiogroup,!default',\n 'summary^[HTMLElement]|',\n 'time^[HTMLElement]|dateTime',\n ':svg:cursor^:svg:|',\n];\nvar _ATTR_TO_PROP = {\n 'class': 'className',\n 'for': 'htmlFor',\n 'formaction': 'formAction',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex',\n};\nvar DomElementSchemaRegistry = /** @class */ (function (_super) {\n __extends(DomElementSchemaRegistry, _super);\n function DomElementSchemaRegistry() {\n var _this = _super.call(this) || this;\n _this._schema = {};\n SCHEMA.forEach(function (encodedType) {\n var type = {};\n var _a = __read(encodedType.split('|'), 2), strType = _a[0], strProperties = _a[1];\n var properties = strProperties.split(',');\n var _b = __read(strType.split('^'), 2), typeNames = _b[0], superName = _b[1];\n typeNames.split(',').forEach(function (tag) { return _this._schema[tag.toLowerCase()] = type; });\n var superType = superName && _this._schema[superName.toLowerCase()];\n if (superType) {\n Object.keys(superType).forEach(function (prop) { type[prop] = superType[prop]; });\n }\n properties.forEach(function (property) {\n if (property.length > 0) {\n switch (property[0]) {\n case '*':\n // We don't yet support events.\n // If ever allowing to bind to events, GO THROUGH A SECURITY REVIEW, allowing events\n // will\n // almost certainly introduce bad XSS vulnerabilities.\n // type[property.substring(1)] = EVENT;\n break;\n case '!':\n type[property.substring(1)] = BOOLEAN;\n break;\n case '#':\n type[property.substring(1)] = NUMBER;\n break;\n case '%':\n type[property.substring(1)] = OBJECT;\n break;\n default:\n type[property] = STRING;\n }\n }\n });\n });\n return _this;\n }\n DomElementSchemaRegistry.prototype.hasProperty = function (tagName, propName, schemaMetas) {\n if (schemaMetas.some(function (schema) { return schema.name === NO_ERRORS_SCHEMA.name; })) {\n return true;\n }\n if (tagName.indexOf('-') > -1) {\n if (isNgContainer(tagName) || isNgContent(tagName)) {\n return false;\n }\n if (schemaMetas.some(function (schema) { return schema.name === CUSTOM_ELEMENTS_SCHEMA.name; })) {\n // Can't tell now as we don't know which properties a custom element will get\n // once it is instantiated\n return true;\n }\n }\n var elementProperties = this._schema[tagName.toLowerCase()] || this._schema['unknown'];\n return !!elementProperties[propName];\n };\n DomElementSchemaRegistry.prototype.hasElement = function (tagName, schemaMetas) {\n if (schemaMetas.some(function (schema) { return schema.name === NO_ERRORS_SCHEMA.name; })) {\n return true;\n }\n if (tagName.indexOf('-') > -1) {\n if (isNgContainer(tagName) || isNgContent(tagName)) {\n return true;\n }\n if (schemaMetas.some(function (schema) { return schema.name === CUSTOM_ELEMENTS_SCHEMA.name; })) {\n // Allow any custom elements\n return true;\n }\n }\n return !!this._schema[tagName.toLowerCase()];\n };\n /**\n * securityContext returns the security context for the given property on the given DOM tag.\n *\n * Tag and property name are statically known and cannot change at runtime, i.e. it is not\n * possible to bind a value into a changing attribute or tag name.\n *\n * The filtering is white list based. All attributes in the schema above are assumed to have the\n * 'NONE' security context, i.e. that they are safe inert string values. Only specific well known\n * attack vectors are assigned their appropriate context.\n */\n DomElementSchemaRegistry.prototype.securityContext = function (tagName, propName, isAttribute) {\n if (isAttribute) {\n // NB: For security purposes, use the mapped property name, not the attribute name.\n propName = this.getMappedPropName(propName);\n }\n // Make sure comparisons are case insensitive, so that case differences between attribute and\n // property names do not have a security impact.\n tagName = tagName.toLowerCase();\n propName = propName.toLowerCase();\n var ctx = SECURITY_SCHEMA()[tagName + '|' + propName];\n if (ctx) {\n return ctx;\n }\n ctx = SECURITY_SCHEMA()['*|' + propName];\n return ctx ? ctx : SecurityContext.NONE;\n };\n DomElementSchemaRegistry.prototype.getMappedPropName = function (propName) { return _ATTR_TO_PROP[propName] || propName; };\n DomElementSchemaRegistry.prototype.getDefaultComponentElementName = function () { return 'ng-component'; };\n DomElementSchemaRegistry.prototype.validateProperty = function (name) {\n if (name.toLowerCase().startsWith('on')) {\n var msg = \"Binding to event property '\" + name + \"' is disallowed for security reasons, \" +\n (\"please use (\" + name.slice(2) + \")=...\") +\n (\"\\nIf '\" + name + \"' is a directive input, make sure the directive is imported by the\") +\n \" current module.\";\n return { error: true, msg: msg };\n }\n else {\n return { error: false };\n }\n };\n DomElementSchemaRegistry.prototype.validateAttribute = function (name) {\n if (name.toLowerCase().startsWith('on')) {\n var msg = \"Binding to event attribute '\" + name + \"' is disallowed for security reasons, \" +\n (\"please use (\" + name.slice(2) + \")=...\");\n return { error: true, msg: msg };\n }\n else {\n return { error: false };\n }\n };\n DomElementSchemaRegistry.prototype.allKnownElementNames = function () { return Object.keys(this._schema); };\n DomElementSchemaRegistry.prototype.normalizeAnimationStyleProperty = function (propName) {\n return dashCaseToCamelCase(propName);\n };\n DomElementSchemaRegistry.prototype.normalizeAnimationStyleValue = function (camelCaseProp, userProvidedProp, val) {\n var unit = '';\n var strVal = val.toString().trim();\n var errorMsg = null;\n if (_isPixelDimensionStyle(camelCaseProp) && val !== 0 && val !== '0') {\n if (typeof val === 'number') {\n unit = 'px';\n }\n else {\n var valAndSuffixMatch = val.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errorMsg = \"Please provide a CSS unit value for \" + userProvidedProp + \":\" + val;\n }\n }\n }\n return { error: errorMsg, value: strVal + unit };\n };\n return DomElementSchemaRegistry;\n}(ElementSchemaRegistry));\nfunction _isPixelDimensionStyle(prop) {\n switch (prop) {\n case 'width':\n case 'height':\n case 'minWidth':\n case 'minHeight':\n case 'maxWidth':\n case 'maxHeight':\n case 'left':\n case 'top':\n case 'bottom':\n case 'right':\n case 'fontSize':\n case 'outlineWidth':\n case 'outlineOffset':\n case 'paddingTop':\n case 'paddingLeft':\n case 'paddingBottom':\n case 'paddingRight':\n case 'marginTop':\n case 'marginLeft':\n case 'marginBottom':\n case 'marginRight':\n case 'borderRadius':\n case 'borderWidth':\n case 'borderTopWidth':\n case 'borderLeftWidth':\n case 'borderRightWidth':\n case 'borderBottomWidth':\n case 'textIndent':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar PROPERTY_PARTS_SEPARATOR = '.';\nvar ATTRIBUTE_PREFIX = 'attr';\nvar CLASS_PREFIX = 'class';\nvar STYLE_PREFIX = 'style';\nvar ANIMATE_PROP_PREFIX = 'animate-';\n/**\n * Parses bindings in templates and in the directive host area.\n */\nvar BindingParser = /** @class */ (function () {\n function BindingParser(_exprParser, _interpolationConfig, _schemaRegistry, pipes, errors) {\n this._exprParser = _exprParser;\n this._interpolationConfig = _interpolationConfig;\n this._schemaRegistry = _schemaRegistry;\n this.errors = errors;\n this.pipesByName = null;\n this._usedPipes = new Map();\n // When the `pipes` parameter is `null`, do not check for used pipes\n // This is used in IVY when we might not know the available pipes at compile time\n if (pipes) {\n var pipesByName_1 = new Map();\n pipes.forEach(function (pipe) { return pipesByName_1.set(pipe.name, pipe); });\n this.pipesByName = pipesByName_1;\n }\n }\n BindingParser.prototype.getUsedPipes = function () { return Array.from(this._usedPipes.values()); };\n BindingParser.prototype.createBoundHostProperties = function (dirMeta, sourceSpan) {\n var _this = this;\n if (dirMeta.hostProperties) {\n var boundProps_1 = [];\n Object.keys(dirMeta.hostProperties).forEach(function (propName) {\n var expression = dirMeta.hostProperties[propName];\n if (typeof expression === 'string') {\n _this.parsePropertyBinding(propName, expression, true, sourceSpan, [], boundProps_1);\n }\n else {\n _this._reportError(\"Value of the host property binding \\\"\" + propName + \"\\\" needs to be a string representing an expression but got \\\"\" + expression + \"\\\" (\" + typeof expression + \")\", sourceSpan);\n }\n });\n return boundProps_1;\n }\n return null;\n };\n BindingParser.prototype.createDirectiveHostPropertyAsts = function (dirMeta, elementSelector, sourceSpan) {\n var _this = this;\n var boundProps = this.createBoundHostProperties(dirMeta, sourceSpan);\n return boundProps &&\n boundProps.map(function (prop) { return _this.createBoundElementProperty(elementSelector, prop); });\n };\n BindingParser.prototype.createDirectiveHostEventAsts = function (dirMeta, sourceSpan) {\n var _this = this;\n if (dirMeta.hostListeners) {\n var targetEvents_1 = [];\n Object.keys(dirMeta.hostListeners).forEach(function (propName) {\n var expression = dirMeta.hostListeners[propName];\n if (typeof expression === 'string') {\n _this.parseEvent(propName, expression, sourceSpan, [], targetEvents_1);\n }\n else {\n _this._reportError(\"Value of the host listener \\\"\" + propName + \"\\\" needs to be a string representing an expression but got \\\"\" + expression + \"\\\" (\" + typeof expression + \")\", sourceSpan);\n }\n });\n return targetEvents_1;\n }\n return null;\n };\n BindingParser.prototype.parseInterpolation = function (value, sourceSpan) {\n var sourceInfo = sourceSpan.start.toString();\n try {\n var ast = this._exprParser.parseInterpolation(value, sourceInfo, this._interpolationConfig);\n if (ast)\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (e) {\n this._reportError(\"\" + e, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n };\n // Parse an inline template binding. ie `\">`\n BindingParser.prototype.parseInlineTemplateBinding = function (tplKey, tplValue, sourceSpan, targetMatchableAttrs, targetProps, targetVars) {\n var bindings = this._parseTemplateBindings(tplKey, tplValue, sourceSpan);\n for (var i = 0; i < bindings.length; i++) {\n var binding = bindings[i];\n if (binding.keyIsVar) {\n targetVars.push(new ParsedVariable(binding.key, binding.name, sourceSpan));\n }\n else if (binding.expression) {\n this._parsePropertyAst(binding.key, binding.expression, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n targetMatchableAttrs.push([binding.key, '']);\n this.parseLiteralAttr(binding.key, null, sourceSpan, targetMatchableAttrs, targetProps);\n }\n }\n };\n BindingParser.prototype._parseTemplateBindings = function (tplKey, tplValue, sourceSpan) {\n var _this = this;\n var sourceInfo = sourceSpan.start.toString();\n try {\n var bindingsResult = this._exprParser.parseTemplateBindings(tplKey, tplValue, sourceInfo);\n this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan);\n bindingsResult.templateBindings.forEach(function (binding) {\n if (binding.expression) {\n _this._checkPipes(binding.expression, sourceSpan);\n }\n });\n bindingsResult.warnings.forEach(function (warning) { _this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING); });\n return bindingsResult.templateBindings;\n }\n catch (e) {\n this._reportError(\"\" + e, sourceSpan);\n return [];\n }\n };\n BindingParser.prototype.parseLiteralAttr = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {\n if (isAnimationLabel(name)) {\n name = name.substring(1);\n if (value) {\n this._reportError(\"Assigning animation triggers via @prop=\\\"exp\\\" attributes with an expression is invalid.\" +\n \" Use property bindings (e.g. [@prop]=\\\"exp\\\") or use an attribute without a value (e.g. @prop) instead.\", sourceSpan, ParseErrorLevel.ERROR);\n }\n this._parseAnimation(name, value, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n targetProps.push(new ParsedProperty(name, this._exprParser.wrapLiteralPrimitive(value, ''), ParsedPropertyType.LITERAL_ATTR, sourceSpan));\n }\n };\n BindingParser.prototype.parsePropertyBinding = function (name, expression, isHost, sourceSpan, targetMatchableAttrs, targetProps) {\n var isAnimationProp = false;\n if (name.startsWith(ANIMATE_PROP_PREFIX)) {\n isAnimationProp = true;\n name = name.substring(ANIMATE_PROP_PREFIX.length);\n }\n else if (isAnimationLabel(name)) {\n isAnimationProp = true;\n name = name.substring(1);\n }\n if (isAnimationProp) {\n this._parseAnimation(name, expression, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n this._parsePropertyAst(name, this._parseBinding(expression, isHost, sourceSpan), sourceSpan, targetMatchableAttrs, targetProps);\n }\n };\n BindingParser.prototype.parsePropertyInterpolation = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {\n var expr = this.parseInterpolation(value, sourceSpan);\n if (expr) {\n this._parsePropertyAst(name, expr, sourceSpan, targetMatchableAttrs, targetProps);\n return true;\n }\n return false;\n };\n BindingParser.prototype._parsePropertyAst = function (name, ast, sourceSpan, targetMatchableAttrs, targetProps) {\n targetMatchableAttrs.push([name, ast.source]);\n targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.DEFAULT, sourceSpan));\n };\n BindingParser.prototype._parseAnimation = function (name, expression, sourceSpan, targetMatchableAttrs, targetProps) {\n // This will occur when a @trigger is not paired with an expression.\n // For animations it is valid to not have an expression since */void\n // states will be applied by angular when the element is attached/detached\n var ast = this._parseBinding(expression || 'undefined', false, sourceSpan);\n targetMatchableAttrs.push([name, ast.source]);\n targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.ANIMATION, sourceSpan));\n };\n BindingParser.prototype._parseBinding = function (value, isHostBinding, sourceSpan) {\n var sourceInfo = (sourceSpan && sourceSpan.start || '(unknown)').toString();\n try {\n var ast = isHostBinding ?\n this._exprParser.parseSimpleBinding(value, sourceInfo, this._interpolationConfig) :\n this._exprParser.parseBinding(value, sourceInfo, this._interpolationConfig);\n if (ast)\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (e) {\n this._reportError(\"\" + e, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n };\n BindingParser.prototype.createBoundElementProperty = function (elementSelector, boundProp) {\n if (boundProp.isAnimation) {\n return new BoundElementProperty(boundProp.name, 4 /* Animation */, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan);\n }\n var unit = null;\n var bindingType = undefined;\n var boundPropertyName = null;\n var parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR);\n var securityContexts = undefined;\n // Check check for special cases (prefix style, attr, class)\n if (parts.length > 1) {\n if (parts[0] == ATTRIBUTE_PREFIX) {\n boundPropertyName = parts[1];\n this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true);\n securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true);\n var nsSeparatorIdx = boundPropertyName.indexOf(':');\n if (nsSeparatorIdx > -1) {\n var ns = boundPropertyName.substring(0, nsSeparatorIdx);\n var name_1 = boundPropertyName.substring(nsSeparatorIdx + 1);\n boundPropertyName = mergeNsAndName(ns, name_1);\n }\n bindingType = 1 /* Attribute */;\n }\n else if (parts[0] == CLASS_PREFIX) {\n boundPropertyName = parts[1];\n bindingType = 2 /* Class */;\n securityContexts = [SecurityContext.NONE];\n }\n else if (parts[0] == STYLE_PREFIX) {\n unit = parts.length > 2 ? parts[2] : null;\n boundPropertyName = parts[1];\n bindingType = 3 /* Style */;\n securityContexts = [SecurityContext.STYLE];\n }\n }\n // If not a special case, use the full property name\n if (boundPropertyName === null) {\n boundPropertyName = this._schemaRegistry.getMappedPropName(boundProp.name);\n securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, false);\n bindingType = 0 /* Property */;\n this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, false);\n }\n return new BoundElementProperty(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan);\n };\n BindingParser.prototype.parseEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n if (isAnimationLabel(name)) {\n name = name.substr(1);\n this._parseAnimationEvent(name, expression, sourceSpan, targetEvents);\n }\n else {\n this._parseRegularEvent(name, expression, sourceSpan, targetMatchableAttrs, targetEvents);\n }\n };\n BindingParser.prototype._parseAnimationEvent = function (name, expression, sourceSpan, targetEvents) {\n var matches = splitAtPeriod(name, [name, '']);\n var eventName = matches[0];\n var phase = matches[1].toLowerCase();\n if (phase) {\n switch (phase) {\n case 'start':\n case 'done':\n var ast = this._parseAction(expression, sourceSpan);\n targetEvents.push(new ParsedEvent(eventName, phase, 1 /* Animation */, ast, sourceSpan));\n break;\n default:\n this._reportError(\"The provided animation output phase value \\\"\" + phase + \"\\\" for \\\"@\" + eventName + \"\\\" is not supported (use start or done)\", sourceSpan);\n break;\n }\n }\n else {\n this._reportError(\"The animation trigger output event (@\" + eventName + \") is missing its phase value name (start or done are currently supported)\", sourceSpan);\n }\n };\n BindingParser.prototype._parseRegularEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n // long format: 'target: eventName'\n var _a = __read(splitAtColon(name, [null, name]), 2), target = _a[0], eventName = _a[1];\n var ast = this._parseAction(expression, sourceSpan);\n targetMatchableAttrs.push([name, ast.source]);\n targetEvents.push(new ParsedEvent(eventName, target, 0 /* Regular */, ast, sourceSpan));\n // Don't detect directives for event names for now,\n // so don't add the event name to the matchableAttrs\n };\n BindingParser.prototype._parseAction = function (value, sourceSpan) {\n var sourceInfo = (sourceSpan && sourceSpan.start || '(unknown').toString();\n try {\n var ast = this._exprParser.parseAction(value, sourceInfo, this._interpolationConfig);\n if (ast) {\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n }\n if (!ast || ast.ast instanceof EmptyExpr) {\n this._reportError(\"Empty expressions are not allowed\", sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (e) {\n this._reportError(\"\" + e, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n };\n BindingParser.prototype._reportError = function (message, sourceSpan, level) {\n if (level === void 0) { level = ParseErrorLevel.ERROR; }\n this.errors.push(new ParseError(sourceSpan, message, level));\n };\n BindingParser.prototype._reportExpressionParserErrors = function (errors, sourceSpan) {\n var e_1, _a;\n try {\n for (var errors_1 = __values(errors), errors_1_1 = errors_1.next(); !errors_1_1.done; errors_1_1 = errors_1.next()) {\n var error$$1 = errors_1_1.value;\n this._reportError(error$$1.message, sourceSpan);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (errors_1_1 && !errors_1_1.done && (_a = errors_1.return)) _a.call(errors_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n // Make sure all the used pipes are known in `this.pipesByName`\n BindingParser.prototype._checkPipes = function (ast, sourceSpan) {\n var _this = this;\n if (ast && this.pipesByName) {\n var collector = new PipeCollector();\n ast.visit(collector);\n collector.pipes.forEach(function (ast, pipeName) {\n var pipeMeta = _this.pipesByName.get(pipeName);\n if (!pipeMeta) {\n _this._reportError(\"The pipe '\" + pipeName + \"' could not be found\", new ParseSourceSpan(sourceSpan.start.moveBy(ast.span.start), sourceSpan.start.moveBy(ast.span.end)));\n }\n else {\n _this._usedPipes.set(pipeName, pipeMeta);\n }\n });\n }\n };\n /**\n * @param propName the name of the property / attribute\n * @param sourceSpan\n * @param isAttr true when binding to an attribute\n */\n BindingParser.prototype._validatePropertyOrAttributeName = function (propName, sourceSpan, isAttr) {\n var report = isAttr ? this._schemaRegistry.validateAttribute(propName) :\n this._schemaRegistry.validateProperty(propName);\n if (report.error) {\n this._reportError(report.msg, sourceSpan, ParseErrorLevel.ERROR);\n }\n };\n return BindingParser;\n}());\nvar PipeCollector = /** @class */ (function (_super) {\n __extends(PipeCollector, _super);\n function PipeCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.pipes = new Map();\n return _this;\n }\n PipeCollector.prototype.visitPipe = function (ast, context) {\n this.pipes.set(ast.name, ast);\n ast.exp.visit(this);\n this.visitAll(ast.args, context);\n return null;\n };\n return PipeCollector;\n}(RecursiveAstVisitor$1));\nfunction isAnimationLabel(name) {\n return name[0] == '@';\n}\nfunction calcPossibleSecurityContexts(registry, selector, propName, isAttribute) {\n var ctxs = [];\n CssSelector.parse(selector).forEach(function (selector) {\n var elementNames = selector.element ? [selector.element] : registry.allKnownElementNames();\n var notElementNames = new Set(selector.notSelectors.filter(function (selector) { return selector.isElementSelector(); })\n .map(function (selector) { return selector.element; }));\n var possibleElementNames = elementNames.filter(function (elementName) { return !notElementNames.has(elementName); });\n ctxs.push.apply(ctxs, __spread(possibleElementNames.map(function (elementName) { return registry.securityContext(elementName, propName, isAttribute); })));\n });\n return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort();\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar Text$1 = /** @class */ (function () {\n function Text(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n Text.prototype.visit = function (visitor) { return visitor.visitText(this); };\n return Text;\n}());\nvar BoundText = /** @class */ (function () {\n function BoundText(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n BoundText.prototype.visit = function (visitor) { return visitor.visitBoundText(this); };\n return BoundText;\n}());\nvar TextAttribute = /** @class */ (function () {\n function TextAttribute(name, value, sourceSpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.valueSpan = valueSpan;\n }\n TextAttribute.prototype.visit = function (visitor) { return visitor.visitTextAttribute(this); };\n return TextAttribute;\n}());\nvar BoundAttribute = /** @class */ (function () {\n function BoundAttribute(name, type, securityContext, value, unit, sourceSpan) {\n this.name = name;\n this.type = type;\n this.securityContext = securityContext;\n this.value = value;\n this.unit = unit;\n this.sourceSpan = sourceSpan;\n }\n BoundAttribute.fromBoundElementProperty = function (prop) {\n return new BoundAttribute(prop.name, prop.type, prop.securityContext, prop.value, prop.unit, prop.sourceSpan);\n };\n BoundAttribute.prototype.visit = function (visitor) { return visitor.visitBoundAttribute(this); };\n return BoundAttribute;\n}());\nvar BoundEvent = /** @class */ (function () {\n function BoundEvent(name, handler, target, phase, sourceSpan) {\n this.name = name;\n this.handler = handler;\n this.target = target;\n this.phase = phase;\n this.sourceSpan = sourceSpan;\n }\n BoundEvent.fromParsedEvent = function (event) {\n var target = event.type === 0 /* Regular */ ? event.targetOrPhase : null;\n var phase = event.type === 1 /* Animation */ ? event.targetOrPhase : null;\n return new BoundEvent(event.name, event.handler, target, phase, event.sourceSpan);\n };\n BoundEvent.prototype.visit = function (visitor) { return visitor.visitBoundEvent(this); };\n return BoundEvent;\n}());\nvar Element$1 = /** @class */ (function () {\n function Element(name, attributes, inputs, outputs, children, references, sourceSpan, startSourceSpan, endSourceSpan) {\n this.name = name;\n this.attributes = attributes;\n this.inputs = inputs;\n this.outputs = outputs;\n this.children = children;\n this.references = references;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n Element.prototype.visit = function (visitor) { return visitor.visitElement(this); };\n return Element;\n}());\nvar Template = /** @class */ (function () {\n function Template(attributes, inputs, outputs, children, references, variables, sourceSpan, startSourceSpan, endSourceSpan) {\n this.attributes = attributes;\n this.inputs = inputs;\n this.outputs = outputs;\n this.children = children;\n this.references = references;\n this.variables = variables;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n Template.prototype.visit = function (visitor) { return visitor.visitTemplate(this); };\n return Template;\n}());\nvar Content = /** @class */ (function () {\n function Content(selectorIndex, attributes, sourceSpan) {\n this.selectorIndex = selectorIndex;\n this.attributes = attributes;\n this.sourceSpan = sourceSpan;\n }\n Content.prototype.visit = function (visitor) { return visitor.visitContent(this); };\n return Content;\n}());\nvar Variable = /** @class */ (function () {\n function Variable(name, value, sourceSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n Variable.prototype.visit = function (visitor) { return visitor.visitVariable(this); };\n return Variable;\n}());\nvar Reference = /** @class */ (function () {\n function Reference(name, value, sourceSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n Reference.prototype.visit = function (visitor) { return visitor.visitReference(this); };\n return Reference;\n}());\nfunction visitAll$1(visitor, nodes) {\n var e_1, _a, e_2, _b;\n var result = [];\n if (visitor.visit) {\n try {\n for (var nodes_1 = __values(nodes), nodes_1_1 = nodes_1.next(); !nodes_1_1.done; nodes_1_1 = nodes_1.next()) {\n var node = nodes_1_1.value;\n var newNode = visitor.visit(node) || node.visit(visitor);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n try {\n for (var nodes_2 = __values(nodes), nodes_2_1 = nodes_2.next(); !nodes_2_1.done; nodes_2_1 = nodes_2.next()) {\n var node = nodes_2_1.value;\n var newNode = node.visit(visitor);\n if (newNode) {\n result.push(newNode);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (nodes_2_1 && !nodes_2_1.done && (_b = nodes_2.return)) _b.call(nodes_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar StyleWithImports = /** @class */ (function () {\n function StyleWithImports(style, styleUrls) {\n this.style = style;\n this.styleUrls = styleUrls;\n }\n return StyleWithImports;\n}());\nfunction isStyleUrlResolvable(url) {\n if (url == null || url.length === 0 || url[0] == '/')\n return false;\n var schemeMatch = url.match(URL_WITH_SCHEMA_REGEXP);\n return schemeMatch === null || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset';\n}\n/**\n * Rewrites stylesheets by resolving and removing the @import urls that\n * are either relative or don't have a `package:` scheme\n */\nfunction extractStyleUrls(resolver, baseUrl, cssText) {\n var foundUrls = [];\n var modifiedCssText = cssText.replace(CSS_STRIPPABLE_COMMENT_REGEXP, '')\n .replace(CSS_IMPORT_REGEXP, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n var url = m[1] || m[2];\n if (!isStyleUrlResolvable(url)) {\n // Do not attempt to resolve non-package absolute URLs with URI\n // scheme\n return m[0];\n }\n foundUrls.push(resolver.resolve(baseUrl, url));\n return '';\n });\n return new StyleWithImports(modifiedCssText, foundUrls);\n}\nvar CSS_IMPORT_REGEXP = /@import\\s+(?:url\\()?\\s*(?:(?:['\"]([^'\"]*))|([^;\\)\\s]*))[^;]*;?/g;\nvar CSS_STRIPPABLE_COMMENT_REGEXP = /\\/\\*(?!#\\s*(?:sourceURL|sourceMappingURL)=)[\\s\\S]+?\\*\\//g;\nvar URL_WITH_SCHEMA_REGEXP = /^([^:/?#]+):/;\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar NG_CONTENT_SELECT_ATTR = 'select';\nvar LINK_ELEMENT = 'link';\nvar LINK_STYLE_REL_ATTR = 'rel';\nvar LINK_STYLE_HREF_ATTR = 'href';\nvar LINK_STYLE_REL_VALUE = 'stylesheet';\nvar STYLE_ELEMENT = 'style';\nvar SCRIPT_ELEMENT = 'script';\nvar NG_NON_BINDABLE_ATTR = 'ngNonBindable';\nvar NG_PROJECT_AS = 'ngProjectAs';\nfunction preparseElement(ast) {\n var selectAttr = null;\n var hrefAttr = null;\n var relAttr = null;\n var nonBindable = false;\n var projectAs = '';\n ast.attrs.forEach(function (attr) {\n var lcAttrName = attr.name.toLowerCase();\n if (lcAttrName == NG_CONTENT_SELECT_ATTR) {\n selectAttr = attr.value;\n }\n else if (lcAttrName == LINK_STYLE_HREF_ATTR) {\n hrefAttr = attr.value;\n }\n else if (lcAttrName == LINK_STYLE_REL_ATTR) {\n relAttr = attr.value;\n }\n else if (attr.name == NG_NON_BINDABLE_ATTR) {\n nonBindable = true;\n }\n else if (attr.name == NG_PROJECT_AS) {\n if (attr.value.length > 0) {\n projectAs = attr.value;\n }\n }\n });\n selectAttr = normalizeNgContentSelect(selectAttr);\n var nodeName = ast.name.toLowerCase();\n var type = PreparsedElementType.OTHER;\n if (isNgContent(nodeName)) {\n type = PreparsedElementType.NG_CONTENT;\n }\n else if (nodeName == STYLE_ELEMENT) {\n type = PreparsedElementType.STYLE;\n }\n else if (nodeName == SCRIPT_ELEMENT) {\n type = PreparsedElementType.SCRIPT;\n }\n else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) {\n type = PreparsedElementType.STYLESHEET;\n }\n return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs);\n}\nvar PreparsedElementType;\n(function (PreparsedElementType) {\n PreparsedElementType[PreparsedElementType[\"NG_CONTENT\"] = 0] = \"NG_CONTENT\";\n PreparsedElementType[PreparsedElementType[\"STYLE\"] = 1] = \"STYLE\";\n PreparsedElementType[PreparsedElementType[\"STYLESHEET\"] = 2] = \"STYLESHEET\";\n PreparsedElementType[PreparsedElementType[\"SCRIPT\"] = 3] = \"SCRIPT\";\n PreparsedElementType[PreparsedElementType[\"OTHER\"] = 4] = \"OTHER\";\n})(PreparsedElementType || (PreparsedElementType = {}));\nvar PreparsedElement = /** @class */ (function () {\n function PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs) {\n this.type = type;\n this.selectAttr = selectAttr;\n this.hrefAttr = hrefAttr;\n this.nonBindable = nonBindable;\n this.projectAs = projectAs;\n }\n return PreparsedElement;\n}());\nfunction normalizeNgContentSelect(selectAttr) {\n if (selectAttr === null || selectAttr.length === 0) {\n return '*';\n }\n return selectAttr;\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nvar BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.+))|\\[\\(([^\\)]+)\\)\\]|\\[([^\\]]+)\\]|\\(([^\\)]+)\\))$/;\n// Group 1 = \"bind-\"\nvar KW_BIND_IDX = 1;\n// Group 2 = \"let-\"\nvar KW_LET_IDX = 2;\n// Group 3 = \"ref-/#\"\nvar KW_REF_IDX = 3;\n// Group 4 = \"on-\"\nvar KW_ON_IDX = 4;\n// Group 5 = \"bindon-\"\nvar KW_BINDON_IDX = 5;\n// Group 6 = \"@\"\nvar KW_AT_IDX = 6;\n// Group 7 = the identifier after \"bind-\", \"let-\", \"ref-/#\", \"on-\", \"bindon-\" or \"@\"\nvar IDENT_KW_IDX = 7;\n// Group 8 = identifier inside [()]\nvar IDENT_BANANA_BOX_IDX = 8;\n// Group 9 = identifier inside []\nvar IDENT_PROPERTY_IDX = 9;\n// Group 10 = identifier inside ()\nvar IDENT_EVENT_IDX = 10;\nvar TEMPLATE_ATTR_PREFIX = '*';\n// Default selector used by `` if none specified\nvar DEFAULT_CONTENT_SELECTOR = '*';\nfunction htmlAstToRender3Ast(htmlNodes, bindingParser) {\n var transformer = new HtmlAstToIvyAst(bindingParser);\n var ivyNodes = visitAll(transformer, htmlNodes);\n // Errors might originate in either the binding parser or the html to ivy transformer\n var allErrors = bindingParser.errors.concat(transformer.errors);\n var errors = allErrors.filter(function (e) { return e.level === ParseErrorLevel.ERROR; });\n if (errors.length > 0) {\n var errorString = errors.join('\\n');\n throw syntaxError(\"Template parse errors:\\n\" + errorString, errors);\n }\n return {\n nodes: ivyNodes,\n errors: allErrors,\n ngContentSelectors: transformer.ngContentSelectors,\n hasNgContent: transformer.hasNgContent,\n };\n}\nvar HtmlAstToIvyAst = /** @class */ (function () {\n function HtmlAstToIvyAst(bindingParser) {\n this.bindingParser = bindingParser;\n this.errors = [];\n // Selectors for the `ng-content` tags. Only non `*` selectors are recorded here\n this.ngContentSelectors = [];\n // Any `` in the template ?\n this.hasNgContent = false;\n }\n // HTML visitor\n HtmlAstToIvyAst.prototype.visitElement = function (element) {\n var _this = this;\n var e_1, _a;\n var preparsedElement = preparseElement(element);\n if (preparsedElement.type === PreparsedElementType.SCRIPT ||\n preparsedElement.type === PreparsedElementType.STYLE) {\n // Skipping