@waku/discovery 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/bundle/index.js +25137 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/dns/constants.d.ts +9 -0
  5. package/dist/dns/constants.js +13 -0
  6. package/dist/dns/constants.js.map +1 -0
  7. package/dist/dns/dns.d.ts +32 -0
  8. package/dist/dns/dns.js +160 -0
  9. package/dist/dns/dns.js.map +1 -0
  10. package/dist/dns/dns_discovery.d.ts +24 -0
  11. package/dist/dns/dns_discovery.js +95 -0
  12. package/dist/dns/dns_discovery.js.map +1 -0
  13. package/dist/dns/dns_over_https.d.ts +25 -0
  14. package/dist/dns/dns_over_https.js +72 -0
  15. package/dist/dns/dns_over_https.js.map +1 -0
  16. package/dist/dns/enrtree.d.ts +33 -0
  17. package/dist/dns/enrtree.js +76 -0
  18. package/dist/dns/enrtree.js.map +1 -0
  19. package/dist/dns/fetch_nodes.d.ts +13 -0
  20. package/dist/dns/fetch_nodes.js +133 -0
  21. package/dist/dns/fetch_nodes.js.map +1 -0
  22. package/dist/dns/index.d.ts +3 -0
  23. package/dist/dns/index.js +4 -0
  24. package/dist/dns/index.js.map +1 -0
  25. package/dist/index.d.ts +6 -0
  26. package/dist/index.js +10 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/local-peer-cache/index.d.ts +24 -0
  29. package/dist/local-peer-cache/index.js +106 -0
  30. package/dist/local-peer-cache/index.js.map +1 -0
  31. package/dist/peer-exchange/index.d.ts +2 -0
  32. package/dist/peer-exchange/index.js +3 -0
  33. package/dist/peer-exchange/index.js.map +1 -0
  34. package/dist/peer-exchange/rpc.d.ts +22 -0
  35. package/dist/peer-exchange/rpc.js +41 -0
  36. package/dist/peer-exchange/rpc.js.map +1 -0
  37. package/dist/peer-exchange/waku_peer_exchange.d.ts +21 -0
  38. package/dist/peer-exchange/waku_peer_exchange.js +80 -0
  39. package/dist/peer-exchange/waku_peer_exchange.js.map +1 -0
  40. package/dist/peer-exchange/waku_peer_exchange_discovery.d.ts +53 -0
  41. package/dist/peer-exchange/waku_peer_exchange_discovery.js +136 -0
  42. package/dist/peer-exchange/waku_peer_exchange_discovery.js.map +1 -0
  43. package/package.json +109 -0
  44. package/src/dns/constants.ts +17 -0
  45. package/src/dns/dns.ts +215 -0
  46. package/src/dns/dns_discovery.ts +144 -0
  47. package/src/dns/dns_over_https.ts +83 -0
  48. package/src/dns/enrtree.ts +123 -0
  49. package/src/dns/fetch_nodes.ts +181 -0
  50. package/src/dns/index.ts +3 -0
  51. package/src/index.ts +21 -0
  52. package/src/local-peer-cache/index.ts +160 -0
  53. package/src/peer-exchange/index.ts +11 -0
  54. package/src/peer-exchange/rpc.ts +44 -0
  55. package/src/peer-exchange/waku_peer_exchange.ts +111 -0
  56. package/src/peer-exchange/waku_peer_exchange_discovery.ts +238 -0
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/multiformats/dist/src/bases/interface.d.ts","../../../node_modules/multiformats/dist/src/block/interface.d.ts","../../../node_modules/multiformats/dist/src/hashes/interface.d.ts","../../../node_modules/multiformats/dist/src/link/interface.d.ts","../../../node_modules/multiformats/dist/src/cid.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-id/index.d.ts","../../../node_modules/@multiformats/multiaddr/dist/src/protocols-table.d.ts","../../../node_modules/@multiformats/dns/dist/src/resolvers/dns-over-https.d.ts","../../../node_modules/@multiformats/dns/dist/src/resolvers/dns-json-over-https.d.ts","../../../node_modules/@multiformats/dns/dist/src/resolvers/index.d.ts","../../../node_modules/progress-events/dist/src/index.d.ts","../../../node_modules/@multiformats/dns/dist/src/index.d.ts","../../../node_modules/@multiformats/multiaddr/dist/src/resolvers/dnsaddr.d.ts","../../../node_modules/@multiformats/multiaddr/dist/src/resolvers/index.d.ts","../../../node_modules/@multiformats/multiaddr/dist/src/filter/multiaddr-filter.d.ts","../../../node_modules/@multiformats/multiaddr/dist/src/index.d.ts","../../../node_modules/it-stream-types/dist/src/index.d.ts","../../../node_modules/uint8arraylist/dist/src/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/connection/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-info/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/content-routing/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/event-target.d.ts","../../../node_modules/@libp2p/interface/dist/src/metrics/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-routing/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-store/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/startable.d.ts","../../../node_modules/@libp2p/interface/dist/src/stream-handler/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/topology/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/stream-muxer/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/transport/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/connection-encrypter/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/connection-gater/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/keys/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-discovery/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/peer-store/tags.d.ts","../../../node_modules/it-pushable/dist/src/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/pubsub/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/record/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/errors.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@libp2p/interface/dist/src/events.d.ts","../../../node_modules/@libp2p/interface/dist/src/index.d.ts","../../interfaces/dist/enr.d.ts","../../interfaces/dist/misc.d.ts","../../interfaces/dist/message.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message/decodeRpc.d.ts","../../../node_modules/protons-runtime/dist/src/codec.d.ts","../../../node_modules/protons-runtime/dist/src/decode.d.ts","../../../node_modules/protons-runtime/dist/src/encode.d.ts","../../../node_modules/protons-runtime/dist/src/codecs/enum.d.ts","../../../node_modules/protons-runtime/dist/src/codecs/message.d.ts","../../../node_modules/protons-runtime/dist/src/utils/reader.d.ts","../../../node_modules/protons-runtime/dist/src/utils/writer.d.ts","../../../node_modules/protons-runtime/dist/src/index.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message/rpc.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/types.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/message-cache.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score-thresholds.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/metrics.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score-params.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/utils/set.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-stats.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/compute-score.d.ts","../../../node_modules/denque/index.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/message-deliveries.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/peer-score.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/score/index.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/stream.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/tracer.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/config.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/address-manager/index.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/map.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/set.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/list.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/tracked-map.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/tracked-set.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/tracked-list.d.ts","../../../node_modules/@libp2p/peer-collections/dist/src/index.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/connection-manager/index.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/record/index.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/registrar/index.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/transport-manager/index.d.ts","../../../node_modules/@libp2p/interface-internal/dist/src/index.d.ts","../../../node_modules/@chainsafe/libp2p-gossipsub/dist/src/index.d.ts","../../../node_modules/@libp2p/identify/dist/src/index.d.ts","../../../node_modules/@libp2p/ping/dist/src/constants.d.ts","../../../node_modules/@libp2p/ping/dist/src/index.d.ts","../../../node_modules/libp2p/dist/src/address-manager/index.d.ts","../../../node_modules/multiformats/dist/src/codecs/interface.d.ts","../../../node_modules/multiformats/dist/src/codecs/json.d.ts","../../../node_modules/multiformats/dist/src/codecs/raw.d.ts","../../../node_modules/multiformats/dist/src/bytes.d.ts","../../../node_modules/multiformats/dist/src/hashes/digest.d.ts","../../../node_modules/multiformats/dist/src/hashes/hasher.d.ts","../../../node_modules/multiformats/dist/src/varint.d.ts","../../../node_modules/multiformats/dist/src/interface.d.ts","../../../node_modules/multiformats/dist/src/index.d.ts","../../../node_modules/multiformats/dist/src/bases/base.d.ts","../../../node_modules/multiformats/dist/src/basics.d.ts","../../../node_modules/uint8arrays/dist/src/util/bases.d.ts","../../../node_modules/uint8arrays/dist/src/to-string.d.ts","../../../node_modules/interface-datastore/dist/src/key.d.ts","../../../node_modules/interface-store/dist/src/index.d.ts","../../../node_modules/interface-datastore/dist/src/index.d.ts","../../../node_modules/libp2p/dist/src/components.d.ts","../../../node_modules/libp2p/dist/src/connection-manager/auto-dial.d.ts","../../../node_modules/libp2p/dist/src/connection-manager/connection-pruner.d.ts","../../../node_modules/p-defer/index.d.ts","../../../node_modules/@libp2p/utils/dist/src/queue/recipient.d.ts","../../../node_modules/@libp2p/utils/dist/src/queue/job.d.ts","../../../node_modules/@libp2p/utils/dist/src/queue/index.d.ts","../../../node_modules/libp2p/dist/src/connection-manager/dial-queue.d.ts","../../../node_modules/libp2p/dist/src/connection-manager/index.d.ts","../../../node_modules/libp2p/dist/src/transport-manager.d.ts","../../../node_modules/@libp2p/peer-store/dist/src/index.d.ts","../../../node_modules/libp2p/dist/src/index.d.ts","../../interfaces/dist/metadata.d.ts","../../interfaces/dist/libp2p.d.ts","../../interfaces/dist/protocols.d.ts","../../interfaces/dist/receiver.d.ts","../../interfaces/dist/filter.d.ts","../../interfaces/dist/sender.d.ts","../../interfaces/dist/light_push.d.ts","../../interfaces/dist/peer_exchange.d.ts","../../interfaces/dist/relay.d.ts","../../proto/dist/generated/message.d.ts","../../proto/dist/generated/filter.d.ts","../../proto/dist/generated/topic_only_message.d.ts","../../proto/dist/generated/filter_v2.d.ts","../../proto/dist/generated/light_push.d.ts","../../proto/dist/generated/store.d.ts","../../proto/dist/generated/peer_exchange.d.ts","../../proto/dist/generated/metadata.d.ts","../../proto/dist/index.d.ts","../../interfaces/dist/store.d.ts","../../interfaces/dist/connection_manager.d.ts","../../interfaces/dist/waku.d.ts","../../interfaces/dist/keep_alive_manager.d.ts","../../interfaces/dist/dns_discovery.d.ts","../../interfaces/dist/constants.d.ts","../../interfaces/dist/local_storage.d.ts","../../interfaces/dist/index.d.ts","../../utils/dist/common/is_defined.d.ts","../../utils/dist/common/random_subset.d.ts","../../utils/dist/common/group_by.d.ts","../../utils/dist/common/to_async_iterator.d.ts","../../utils/dist/common/is_size_valid.d.ts","../../utils/dist/common/sharding.d.ts","../../utils/dist/common/push_or_init_map.d.ts","../../utils/dist/common/relay_shard_codec.d.ts","../../utils/dist/common/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../utils/dist/logger/index.d.ts","../../utils/dist/index.d.ts","../src/dns/constants.ts","../../enr/dist/constants.d.ts","../../enr/dist/raw_enr.d.ts","../../enr/dist/enr.d.ts","../../enr/dist/creator.d.ts","../../enr/dist/decoder.d.ts","../../enr/dist/peer_id.d.ts","../../enr/dist/waku2_codec.d.ts","../../enr/dist/crypto.d.ts","../../enr/dist/index.d.ts","../../utils/dist/bytes/index.d.ts","../../../node_modules/@leichtgewicht/dns-packet/types.d.ts","../../../node_modules/@leichtgewicht/dns-packet/rcodes.d.ts","../../../node_modules/@leichtgewicht/dns-packet/optioncodes.d.ts","../../../node_modules/@leichtgewicht/dns-packet/opcodes.d.ts","../../../node_modules/@leichtgewicht/dns-packet/types/index.d.ts","../../../node_modules/dns-query/common.d.ts","../../../node_modules/dns-query/types/index.d.ts","../src/dns/dns_over_https.ts","../../../node_modules/hi-base32/index.d.ts","../../../node_modules/uint8arrays/dist/src/from-string.d.ts","../src/dns/enrtree.ts","../src/dns/fetch_nodes.ts","../src/dns/dns.ts","../src/dns/dns_discovery.ts","../../core/dist/lib/stream_manager.d.ts","../../core/dist/lib/base_protocol.d.ts","../../../node_modules/it-all/dist/src/index.d.ts","../../../node_modules/it-length-prefixed/dist/src/encode.d.ts","../../../node_modules/it-reader/dist/src/index.d.ts","../../../node_modules/it-length-prefixed/dist/src/decode.d.ts","../../../node_modules/it-length-prefixed/dist/src/index.d.ts","../../../node_modules/it-pipe/dist/src/index.d.ts","../src/peer-exchange/rpc.ts","../src/peer-exchange/waku_peer_exchange.ts","../src/peer-exchange/waku_peer_exchange_discovery.ts","../../../node_modules/@libp2p/peer-id-factory/dist/src/index.d.ts","../src/local-peer-cache/index.ts","../src/index.ts","../src/dns/index.ts","../src/peer-exchange/index.ts","../../../node_modules/@types/mocha/index.d.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"4a3605bef1a5ef29fd5a1696dd95b0b4e2259e2d07a4d88fac79f3a9765c44a2","370079895f1acdd4bb5194a403c85bf60cfbb2654bced9430a6c7210e7246be8","90240231e730deed31569f6c686766a538e4a024bbc33ea1738fe924f477ba61","552223520e823223ee13c5764e9b69b1819c985818a8bcda435d8d1dbd909bee","49b7c3ddd683c09aa437dd92681699387441f522524b14d2331ce494a9bf2f27","ce17c39c9c8b05418cae045bdcf5918e3486ecb9f61deac9f3e026b85e427164","5212dd78d1d63ab33332c8846a0ea5ce248159e74033cde16de48373036b4704","954b3c04ee9f94ca1e262f3e5a6e833b0da0066514b3d4b97b92b7f0c85f8700","a2fc9ce1ae5bed7068d701d8aeebf13321de0f42c217dc2e10f1622dcaa53a7f","8e81f220cb935d551e88cff11541d5e89d3a3494a52fe6247e98016a9dbd4c2d","6e6733927ade923e34b243d6fbec1465cfc8ed6edf62c6e09ed00c529f0d93de","9de17491f2bfbccea92500e174079d53bdedae34dbebe5d4a12a06ab09814710","e88481085a8576fa52efc913e631c1a833d16179486469b8538d8c4fab2f7381","aec68502c8f4ffaecb4440b37363473582fec0bfee4fb8668a87daa7f700f708","d71577e78c7a4257074aaf82f595724175210c89e8b467ef82f949a6cbd891bc","cf548af8b03cbbc79fdc4f357b5560f618c6d2f68c8688e6eb759c3c11d962c3","c84146dbc9d2e5f43d2cbf15485a4eabf90219dbb66c0d481f20f12d3851bffc","d35b5db21a04a45ae6323c4d4b25acc983dfe2870fc670fd05249eb19d839a5e","cdfba6341ba0089ef9e0eebf679854f641518c6507d5956e86783e7dba9485fd","99c24f331c9f4e75a779b9a988e942442db3cf29923ceb820d3bdd4ed1edfef2","25b1f20d5868ef9ef18132f7dd76b40b7038688ff7c56c58930537a8dff9f231","0699e4b82c89b8b4da3c56de9457ce959ee8e7ac346af75785bc59a91f688d3f","9140481c3bd07062179ef0dfa9719f646a36c7aaad49d05e0fd6d45a1edb063f","8c92080253bac0506d82b83d555a029582595f0944abb349954ea732322baa5c","9196da290a76cf32b70a8cfdbeb165f75bee9a094d70662cee6383fa09a73e43","230eb449f719119cab1728252f20ecdd36d7a20cef659e4a51ada1a232a8aaad","85786f052b5dcd0b36564b657a9aea3e80f1fd0e76e4606a4400ec21928892c1","d9ee6bcbf3231a4446de6241fe71967f73d6ae7e7279c5540ee52e1dea4d3114","1bf687d978bdd6d5aff10b9eb0ff0695179f8594d4446946fd0182d6d25fa433","a79af05fa696e233c65261e9e9e0e5b08ba9847d98261fe367b9bfeb8ca965d9","f5337c3ea7b8702ffe2718f56a24325a67d517c0d552ef71b8d578d9f33a99d3","7f2cc72a16a663ab9f8d99bd5658e583251ce0c003bf80a948973e15a7ef9596","fb0747c05bf570dbc947b28b51bd26f8a70406084bd7d2a55943004e6bb714e3","c8ffd61bf2db2e7bccb996dd70c9499805cb338f1b1c781987e38ba99dd5b296","55e5a976b594dc02f054860fb59a5299872a5b3c8c90e96733a5c9c9d4ed1fb8","fac83d4c6898d5bf90c508cc84409ded40fdc14611cf42d7fb750fb2c7847979","8a1cce1f66006707d7219898543512bbdce3eb744b7e730606965b2c9680f5f7","cdebdc5861de7a07ddfbd6740a7ad3415068522e19a82bc652ae313c76e4f83d","9c7aa50c1eaa6e0fb07d478ef1b047e9bedb89efd626bfe342f57c8dec15536c","efc7d584a33fe3422847783d228f315c4cd1afe74bd7cf8e3f0e4c1125129fef","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"7fd7fcbf021a5845bdd9397d4649fcf2fe17152d2098140fc723099a215d19ad","affectsGlobalScope":true},"df3389f71a71a38bc931aaf1ef97a65fada98f0a27f19dd12f8b8de2b0f4e461","d69a3298a197fe5d59edba0ec23b4abf2c8e7b8c6718eac97833633cd664e4c9",{"version":"41fb2a1c108fbf46609ce5a451b7ec78eb9b5ada95fd5b94643e4b26397de0b3","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"8b809082dfeffc8cc4f3b9c59f55c0ff52ba12f5ae0766cb5c35deee83b8552e","affectsGlobalScope":true},"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","d4f9d3ae2fe1ae199e1c832cca2c44f45e0b305dfa2808afdd51249b6f4a5163","7525257b4aa35efc7a1bbc00f205a9a96c4e4ab791da90db41b77938c4e0c18e","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"9c611eff81287837680c1f4496daf9e737d6f3a1ff17752207814b8f8e1265af","affectsGlobalScope":true},"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","b5d4e3e524f2eead4519c8e819eaf7fa44a27c22418eff1b7b2d0ebc5fdc510d","afb1701fd4be413a8a5a88df6befdd4510c30a31372c07a4138facf61594c66d","9bd8e5984676cf28ebffcc65620b4ab5cb38ab2ec0aac0825df8568856895653","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","5e8dc64e7e68b2b3ea52ed685cf85239e0d5fb9df31aabc94370c6bc7e19077b",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true},{"version":"46755a4afc53df75f0bfce72259fb971daac826b0cdd8c4eaccad2755a817403","affectsGlobalScope":true},"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","7fa32887f8a97909fca35ebba3740f8caf8df146618d8fff957a3f89f67a2f6a","9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024",{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true},"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","21c56c6e8eeacef15f63f373a29fab6a2b36e4705be7a528aae8c51469e2737b",{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc","c663a7e4ee2cb54d99cf095479a5bcf1dd18d762ffdfa038aa1b2d79b070b0d7","9e910424e844b1ec763c2aa997e29e84e014b90e7acbba1fa2841a14c4d4314e","aaeb956ad95882bfbae261b2e4a10ff5ee53c6bfaf6e8c086fff68ddef517471","d48e600f9bb31327ac202c0d99d0ef83befe307cea703ed63b593a011995a5b0","e91f4ed7f7354e127a611337e3c4a38e1d665b7e5fccf87791d54f4c65b2d16b","7ad3e0aaeb840047fa4711306188cac803514091f251b6baecb9b2aacf15b976","6d268309f0e15dd820b2df9806234166554cb4e2fe00d11737adcb4e5489f700","58cf96187feb10cc8ad3bb080871cd30888ef63bc5db131f11458850ef8f6245","9102986ff52326a2016e8cddc1cf3092f0808ac916dcc8dc2d2c7195cd181987","fa82b7b22d9df87323e31e9e2ad75911028f3e544647fd212424b3c4452fee3f","01f20dac9dc14f0d306e5d1215c5c1c3b4d1805905e60ae92fabac4031eae7da","9ceec2a882368c0160a8a3879aa0efce0fb985751fc23ff6191006030969cfa4","cad5d6451789234434c28dd2d6a8267b0d64c479b1ad267321faa31ba90d570b","d5197053be441d40f4d074185a40d461137c8fa8db9e00cceedf2d9ca6583157","3cd33c37432c2de7bdd9f1d48b3ea4fd03afad4969cfc5ba88d81e6ed03f432c","f8372fd25d6711cfee5d8baa0c9be51114123d88f6ce4f2e0d8bc0a8a9207d81","561ef05d7e369040c28800d878d7e6461af62e459460263e911d508f319c8d5d","a1b60bd2328318dcbec30bdf529dad31a13315ff2df60c8bd71630c58a575b06","a399dd9b73e4bbfbed2ad1c1259d707f5f147f40dc5e3eeb541bf0bf2da42b25","8cc6a35806cd10d448b0f2ab01fe0b6194ca57fdaced2d71781b68e83c55bd88","8f364fec0ef20506aa9cf00b5cd8b620c1c0389687b11a3a32b0b5d4716ad894","5d11703e2c5d4dbe00bbe79f3bc864d178cf8d6ebccc2d1448ea29e93654f029","f4e82c91aac3b61f3ad04f11a44c5b79f724ff8a09281d0afa24a6624633ff25","ed849d616865076f44a41c87f27698f7cdf230290c44bafc71d7c2bc6919b202","7b8b9017156ef8bf3bbe42785fac8956e5c9869f4a494536d7f548a7c1c7d98a","07c34d1f83dfc5746de4229e01f0cb4d388a9f128eab6beadb4ae1621ebb87c6","763bb8df872cbb8783e29e19bd7a1dea0f88f7fd7398343af38be8509a65df82","372b3681eb9618821c0e0e10bcc775b838e45b51912b8998bc5ba035100dc9e5","c286b410193495d067668bcdbd13ea3f3a39001edff02edee248babf2652e563","ba1405da509cc84896a588978efc45400d4f9844ee738d750b59868b1ad1618a","af89ab13b40dd28cd91818fc6329914d2b9663591831f032ff0f0cb4a028d4a5","63007f1618ada5041fb3b47630b64a9987d268bf740dd72334c38b5d23f5239b","3395f90467d2bb9db039a5c22ed6659ca2ff6f0b4f7ee5f223b0f77288f54ea7","20df2907d398e369d49e8906d6e0f096c465501e9ceff9d61293bf0f4e9020f1","ea0a3bb69845621165c21e80ebb0d2b28dad22cd9920564516ce8e927a828f79","6a81475a67505af60be3242841c65ce4bf6d0b624d8b3fada646ba459a3eaad8","6834dd6cc060648604278cdb920a9316fa916e9116134b17dfad90e42800ca47","c650bd19e0ac44559343e85a0ce18b0f92e5c1789bdf334e9bb9cf02b15cd9a6","27ace1ac753bfb2cb2973b2b5a4508751bc10a7d689662c9b41067b5387d5ad7","ef6e6d838cc600162626a53167046484f38e9a4bab9454e72350bed76c497228","8adf9a02b0c2508f81516b561a6c8080ea2169126f166e39767bcb5389b9cfbc","e9c4245bbf5a7d7773b8ec2c3cda931333cdd1a1cfcb67e3165160c1a14d7d68","643dcc834b6d8e8f6929de74c6afc11739d19afbcd53a75b3d79d401d885f334","05ebc19bea67a53b7d336f03bdd9097062c357279a5c6bf6faa5596443e11416","0d58206ad8985b8ea1b9b972504720030472e4d0f6f840f44cc1db0f32bda73b","ea9b8f7426fe0e92b4e7d3cdffa9c2d0bf994abddf3a4bb469beda7b45be34e2","135d2c5bb3919efdd655f2a868533582504827b2d1c10188e1bc3ba80ee015cc","447d3c90ddd4ca1a84c357682ee533766720dcef1e040c720d266afa64b223d7","1447d46bff9e7c5c77da14515a7456ea5e919ce6e28f5e6746edf99818e4be47","ba3f6f0ee47f46cdce55620aec5726de80e92a930982634afe9918c114c38f0b","6f38045547cdfd54ec19abcd943cace72c775fde739c5e0e1d917cf3030c16b5","929fc31f7523aaa1d19735b77e637af06e58d76007648ec088ecfbec1521cbfe","8510595d2ca2660e6407be65d8bf95f0c53877dbb812e269cdd980fc34de5f78","a6eb23f2a83113ce0ab7203bfda2be0888720f8d694a20abaef83b9f62832061","363dca5004ac5a3d9c2bba12812b97a64461911762f0b8f9320a8856ec53bcad","557b8c7481296f4b7ed362320f3bbb40bb87404edf880c81224f365a8d1e17f3","283ed3d075bf7d3e8793f63b2a52f475ed84d95b7b6351c5d5bcc6c49d4b845b","6544dab49004fecb69a4ef775e9ad2773a6148b1f9bfd9b75508e3afa11f5d35","bd4c741820ec3574b7ed3b782c8d78034d6e4631d11997e701e6b955b86a87c1","e2dd36a524ea5b13de1ed104ede9cea79696588175c1df1940d6a29113a4aee0","a878d4c7237a7af50e96534295fcf723134d70cbb1e9bfd8365266b912aee6ec","a1f708ddf34053065f8f53682123421af299cee37ae110a86ba07851adf940da","89dd83418d3c93418929123f21a02434537b5c79ede3c0c6ab5a495d602db155","11705a4aad6e2e724b82ffee6c4fa271d798f0fb68806ace4b1c425c266f8d98","6baaae3164eaa1fe367ee09e6f5afd42f80770934aed7fc61d2b55a48ea9e2f0","a6cb689a6c97d8cffb0a4bd649711838d37d2e574eeb8d40402d4a47c645dbd3","5a1ffbe813678cd26a88d802d317005bc8f39aef35d822aeb80572773a9171d4","68f02ba57c531227ef5804dd57f2e940b10c544c96dadd3c0ef958ba4b6fdbc1","2b4a4dc7f87f1cac5d0dac76bb6020ddcef8daf0a62cb96645e4975d33d5dcd7","6996e12939efb49a3b88770c26cf1ba04572720f430798e66e40b1f1ae630ef3","95acb85153563b78865d19b019237c72ee508e699d903451e03be1f26229c2bc","911f32af1155e1596de82373c4060bc4a6df20344c70e320a8b384bd9be8d678","b38cef1ccf5f367c87fb5b0b78fa5d2f7c7e0243fbb0ed6e1cbc9af4a54080a4","c29cf47a3bf95c8e569e374d684177b3cfde5725362d732de97c7d5959a746f4","cbe00d8364e32d303295626453f095d09e8ff700281c582922bf32e1def473ee","acf4d78cbd3dd515425c0592d97ae25b36effeb250691b0d2eacbbbb70678490","ac445e342103b546df0528e1250011a85f9627f0ae6bf2c16954f99ae2e5d333","44e5cbdc30e23179f8298032e9a7fe1c8b62deeab39ffca11f1936a807af75b4","632e37c420dc124fb24823096eee8f63512d5b74c8610d0138707f2d4fc77c1b","5f564b2e0af50b5777adfb90730d8518a6b1b0d66a21323d1c1d11f44546c602","3d42fa80603bf07d0cc32be51bf10210d53a0ef596685699587c13b17af88f25","ff80f1684384d2efb41a5acec11d1d5d8e1fb7df9a0b63ed4077eb1d617c65d3","01d29d12c4745439a4258b260a695c277f9ac339c84444ca7fd13aaf37019a08","6a88603bab92e4a90f9184601a8d7b7e6a4f4b71782e07a969ca25a9eb91500f","a9c9cc04b5d804c36666f17778d804741224480f6841bc9d8fa5d530a91a0acf","13122c2f3f51d08b986460444b9860d00fd38fee39e862ad6d61bf873525ae0a","88c836190daddad5257c0963159a2cd9ced899f7a3262271583703034caba890","ba7c356f3fa418d4486b3b4e405c01c6d529c274e1e877b98166c46dd7cc0f0d","433b9953d8e0864997b5aaf7cc102f80c98304758244731c3fd0a5d6d645033c","366563a75f042b1a7c61d504a90a8a79810c694e445f038310303f232b6dc89a","d40ce8826560153951a26e9691be199d28847436701408e1d26a56c3edceb6ab","2945b371f6e04c29e3f96b611ecbf7ed75e172f8aeb603aee5e50510b4bc68a7","1ddbb5149b9d13b2c0441835f41a1b20561339264b05c6902966fc698d7d2863","c2f2ade797bdea46b0b9fefeb3faad72e18d5712d5890e44c753a824b5226f4b","8c6a6142bffb0845b282f0274d20adec15466444379c226737ee06cf1c8fa576","ad58e2b0bf1db2526456750f458692960c3c2a6100610666e07e7cb2fc312bf6","33c0b964e2de764399d64db3d83410f646341cef8d0040f2dbf7cb6718d8cf06","09ac11dc22366cb89d815665ca03e3388fe437b270592bce1c1ca7fe3ddaec5d","fc6b03f2a16c3882eeda411509ef8a3793e28c6182623d4f2942274bc995e678","b750c4f0ed198afbf21898ffb85c2e61d720ab99633221f5e3b96aabd7d597ff","1e9e07cdc0218f4a3fccc43ce59199cd45cc5217d7f2f5c2f3cba948905c57df","c135f4bdcaf3e1e9153cccc06e75a106e3c4d912ac084480bda1aecb7d2afc97","d84450725701131933730844923a4974de4cfe0f6e1fe8d3a74e132e292b44c7","433a8fabb08be4997b99eee7863a2362b52c0aca1fcb54330fbf6567a2c92ab0","a4ae79da4d1bb7fb6196294897f1f78a70c8213d2683f750246deab0527511d2","0bbcaafb46edeaf8a72ba969c070fbe9d98459b7b3a17b8c99f79cab49121032","d713b07550ea416686316c24e88dc6245c0f0c12ef78603cae4c9a9791557fb8","b0bf061eb1e05a717ec5025cde567909b7f00f2dfeb2f78b54aedd4ea7007554","e8423fe31351f1ce358798b0e0d64e7b0b3396f9f8ef2cfb5713fa3b7d9020f2","4b54f90cffb36f4bc8175ed414995b6432279d6fe9c9dccb704b8472bd7d88b4","fbcab1a29c704b97eaf0afce15ca299385650859f4d6c3782afa90e90f88b02c","68cc8d6fcc2f270d7108f02f3ebc59480a54615be3e09a47e14527f349e9d53e","3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","e84466de76161653e78201871213987bffc4a6e5c85bb69cac46aa965b81bc90","3762f27827fd30d8372c355e7b8739fb4bfc830c6ce33c241f236416d34924a1",{"version":"c651b00628e2d4d6da68651fc1b462748068dd8980033de72924de3dea2edf4a","signature":"02ded9ee56ca5e80caf9e0f7500eee3a7f4c32aa06878c5ff9b63e7abd3122bb"},"02745a73c954228b9ee7fdb90451051e3f93a14f4a20ec3190113b37d101a021","5c0a4e37b766b3ad2d05fe696b04d88423e336fa001735a59afa355f8ceb39c2","5955f2d04b1bd225aba69dd4958e67c71edd8aef6b0a26a224ff5f5e3eceb4bd","4ef6914da8349455f64844f4ae750dc89c9ce1f409ef9ab96dc2565918de88cd","8a5b3464a391ec690d3bf48f2caf432009ecfbe8a1947bca52ca500124c3d5b9","2bd0daba849641a5d74f5ed5b3b24fca00c31ba37aa8f78eb305c47efce9c628","4179c29964885be3f24fd7dd3d7848fa36a4f2db2d619d6629fc57cb2d485ab9","de6928bfa2e865593212ca1b31d36e8243f17fb5a9c3110d36017e0485d77e37","9a09602a78e685b385cfc15e78b49fa6db9b8abe1903026b63a33176c75f9f01","f98f7fd5c208374f072a67a46306ab9b3f914554b4ebb673fb805e13a4119b6c","af327bc3ec7f6c72cf1b73aacafedcf6f6f7309c30d17f9a8e301afcd30f44f9","a0b3b5fbe8a389e11f8b8fbdcb4526e1e989c5887a5769fcf9b0a57d2550f881","e7a8ab9ccc6e79364e314f0bbe9d8bfc1ec5717fcf135661a05e4401583f14a1","5ab6cb7323dca44bf29e55506877bc5d0eacb0f3c5ff26d52c02d13420f4b009","07c68bf90808034e2c3506e6886be2f61e9127a3f7004ddf3b49981d226c6bd6","6e333790ca44da365c88ebf16386b2431e93364da9ad1827b691926926224617","7538ef9170d0881b8a208a61670b98b79103be7cec423646fda2c94c40c42354",{"version":"a7a97e3f3c0894630541b895bad945df6a2a28fb41fcdf012e7439155c676bcd","signature":"46f2e4ffdd48a9447f7a32576088fbd7214b140e65cd4b9999d9e105e34c7775"},"47be229e12f1953e577533f93d304ed68be89fb1c36bf86bc340b0b772a1fb6e","ac63a01fcac70315fc9b416e9a57e568b18032c7cfcaa314e1751f03ef71286f",{"version":"9f5930329be3c787c60a68c079589df6ebb1721e9319fdadd196028191451039","signature":"95f15e5e0fc528a919d7c216cea5cf3cd3053002bf07c68936a2084f908482e4"},{"version":"c621becb83dfa2fd10b077091494ec1522e3418058ddd5ee8ddd3f7d40d5c303","signature":"00c0ab4d4352095b6f81c8d6bd821c20a8df4c7052b0935eb30b8bd4c9a081d1"},{"version":"198e9055f83b49b2442172816d01fcd3b5050c48f860122380482626aeaec0ff","signature":"b7f4760c95cd5d29b3b9a69c2c2b80ee065e6fb27cf5c1836e7d1ea7299aadd8"},{"version":"b64200d1299f026ff737fa6a2dcfa1dd2409d889876e00fe93fc8d7513dfdce9","signature":"e5430a04d48447215981ecc7cc0895419a2bdd92eac7716d7b3a768b2da38467"},"e1da58271626f4f4533361642beb3ed90a1d7d041cfb1f8720e390ea143552dc","db08a3e258eec5b9bbe3edec92262fd979611a11b8ec469f3dbb84f491f994bc","5ccc3c7f73ef48c223635cd4506f21133560de7abc4c09c623327bb1b54386dc","f30cfcfff28ee8f87563225b47239bb07b9b11edd09dda0ea6499b18cca1a30e","0edb8a97ead1fefd337458449050857e80740e31a3f76cffa656262f4e651a50","db8e4b47dd8c22634e3a326e5a5f60aa71a8ad4a0458fc0aadb6951f1c7cdc54","5b7a6d3f5c1b1d94d6cbc6c1e113588e20ae61d583d0d0cb5ec3fd92926d3749","56558ae167446acf230ea2cc072a835309a37ae63d286b484308afd8c504c2d6",{"version":"b6c77ddb2cced68eba2f851a8852b795b9089d45d27de27df39ed6eb170af8b9","signature":"a335408f3518442c3f1ea4f016db09718c8dc27777b08e5bac8941e572b9a9eb"},{"version":"619471c48b0c99a97a2d3595431f33539697036ba79902eea64354f36c7c58b3","signature":"61d48a554297967a44ef0612826f6f0802dcf4934e1a968ddd463cbec34eae03"},{"version":"c1959d7f1752f78a11273d61f738e1bddf1b0d8efb23cf0d5ef0e12aeb8f895e","signature":"6c5a3e2b3b215beb37ae4f9d5c445e0e3b777f45de512301a600b4f3fc870b58"},"cbf843466f8fbd4c63059a84661e5a51b968f4c04e83d25ec71769acb60047ed",{"version":"dc0bb68dd2bf79f6502054e63d9bdf64da831bb96eadccd502c57bd44870ab41","signature":"86e79433166b7d89c3f67807fb85e9002f7ac1d263aa29123dd64acc2bf3c57b"},{"version":"ebad37562ae2ae4616929e3b97e8956bcf4bd4fdef3fb29ab7d3080e95027559","signature":"1ee878da272a64381b1b9f3913eead570e336dcccc6230f1323eb92549b1d9dc"},"7ba48d8fb08f3045e74388b72713f69c1e418d28260d64f6d20bdfad023d28ab",{"version":"4e56a0cb79280ac861c6ceda7a3dd0486ede20583aee17252f266c44356d2499","signature":"94a1016949412f6c5944d4ef94f38d9548ecaabd4f3157baf64ba2a7702e2005"},{"version":"0ea93d01083b3d5863cc98cb589b5d0eac55d14417487f9e5e455dfa0b17c660","affectsGlobalScope":true}],"root":[302,320,[323,326],[335,337],[339,342]],"options":{"alwaysStrict":true,"declaration":true,"esModuleInterop":true,"module":7,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo"},"fileIdsList":[[188,192,201,202,203,205,213,214,215,216,229],[201,202],[77,200],[188,201,202,204],[206,208],[204,206,212],[210],[188,202,205,206,207,208,209,211],[202],[77,188],[202,205],[75,188,201],[313,314,315,316],[188,229],[75],[75,188,224],[217,225,226,227,228],[188],[75,188],[65,76,77,78],[65,75,78],[65,75,76,77,188],[64,79,188],[148,186],[65,70,75,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,96,97,98,187],[77],[78],[79,81],[62,64],[65,75],[65,79,188],[65,77,78,81,95],[65,77],[76,77,78,188],[65,78],[75,78,81,88,188],[218,219,220,221,222,223],[188,220],[188,218],[188,219],[75,188,250],[75,188,229,232],[188,256],[188,255,257],[254],[69,70],[69],[67,68,71],[66,71,73,74],[71,73,75],[72,75],[298],[99],[135],[136,141,170],[137,148,149,156,167,178],[137,138,148,156],[139,179],[140,141,149,157],[141,167,175],[142,144,148,156],[135,143],[144,145],[148],[146,148],[135,148],[148,149,150,167,178],[148,149,150,163,167,170],[133,136,183],[144,148,151,156,167,178],[148,149,151,152,156,167,175,178],[151,153,167,175,178],[99,100,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185],[148,154],[155,178,183],[144,148,156,167],[157],[158],[135,159],[160,177,183],[161],[162],[148,163,164],[163,165,179,181],[136,148,167,168,169,170],[136,167,169],[167,168],[170],[171],[135,167],[148,173,174],[173,174],[141,156,167,175],[176],[156,177],[136,151,162,178],[141,179],[167,180],[155,181],[182],[136,141,148,150,159,167,178,181,183],[167,184],[317,318],[248,249],[247],[76,77,331,333],[76,77,333],[77,330,332],[76],[76,77],[75,188,229],[71,188,229,250],[71,75,188,224,229,257],[75,188,224,229,252,253,258],[71,188,234,250,251,259,260,261],[60],[236,237,243,244],[63,64],[63],[61],[235],[62],[62,239],[64,238,239,240,241,242],[60,61,62,63,235],[60,61,62],[200],[193],[77,193],[193,194,195,196,197,198,199],[246],[243,245],[110,114,178],[110,167,178],[105],[107,110,175,178],[156,175],[186],[105,186],[107,110,156,178],[102,103,106,109,136,148,167,178],[102,108],[106,110,136,170,178,186],[136,186],[126,136,186],[104,105,186],[110],[104,105,106,107,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,124,125,127,128,129,130,131,132],[110,117,118],[108,110,118,119],[109],[102,105,110],[110,114,118,119],[114],[108,110,113,178],[102,107,108,110,114,117],[136,167],[105,110,126,136,183,186],[188,288,301,327],[188,288],[288],[288,301,311,320,323,324],[188,288,301,302,325],[288,301,312,319],[311,312,321,322],[288,301],[302,325,326],[302,325,326,336,337,339],[75,188,288,301,338],[336,337],[77,280],[77,288,301,311,328,329,333,334,335],[188,288,301,336],[188,288,305],[305],[75,188,288,304],[303,305,306,307,308,309,310],[75,288],[188,190,191,265,266],[189,190,191,263,264,265,266,267,268,269,270,271,281,282,283,284,285,286,287],[188,230,231,233,262,263],[265,268],[190],[188,189,265],[191],[188,189,229,265],[188,189,190,191,264],[190,191,265],[190,202,230,266,268],[191,265],[191,265,280],[75,188,264,265,267,269,271,281,282],[272,273,274,275,276,277,278,279],[75,289,290,291,292,293,294,295,296],[297,300],[299],[288,319],[288,328]],"referencedMap":[[230,1],[203,2],[201,3],[205,4],[209,5],[213,6],[211,7],[212,8],[208,9],[214,10],[215,11],[202,12],[317,13],[231,14],[217,15],[225,16],[229,17],[226,10],[227,18],[228,19],[90,20],[91,21],[78,22],[80,23],[187,24],[188,25],[92,26],[82,27],[93,28],[65,29],[79,30],[83,31],[84,30],[96,32],[97,33],[86,27],[88,34],[87,35],[89,36],[224,37],[220,18],[218,18],[219,18],[223,38],[221,39],[222,40],[338,18],[261,41],[233,42],[257,43],[256,44],[255,45],[71,46],[68,47],[67,47],[69,48],[74,15],[75,49],[66,15],[72,50],[73,51],[299,52],[99,53],[100,53],[135,54],[136,55],[137,56],[138,57],[139,58],[140,59],[141,60],[142,61],[143,62],[144,63],[145,63],[147,64],[146,65],[148,66],[149,67],[150,68],[134,69],[151,70],[152,71],[153,72],[186,73],[154,74],[155,75],[156,76],[157,77],[158,78],[159,79],[160,80],[161,81],[162,82],[163,83],[164,83],[165,84],[167,85],[169,86],[168,87],[170,88],[171,89],[172,90],[173,91],[174,92],[175,93],[176,94],[177,95],[178,96],[179,97],[180,98],[181,99],[182,100],[183,101],[184,102],[319,103],[250,104],[248,105],[332,106],[330,107],[333,108],[334,109],[331,110],[234,111],[251,112],[252,14],[253,111],[258,113],[259,114],[262,115],[260,111],[244,116],[245,117],[61,118],[64,119],[235,120],[236,121],[237,121],[239,122],[240,123],[243,124],[242,125],[63,126],[193,127],[196,128],[197,128],[194,129],[195,128],[200,130],[198,3],[199,127],[322,131],[247,131],[246,132],[117,133],[124,134],[116,133],[131,135],[108,136],[107,137],[130,138],[125,139],[128,140],[110,141],[109,142],[105,143],[104,144],[127,145],[106,146],[111,147],[115,147],[133,148],[132,147],[119,149],[120,150],[122,151],[118,152],[121,153],[126,138],[113,154],[114,155],[123,156],[103,157],[129,158],[328,159],[327,160],[302,161],[325,162],[326,163],[320,164],[323,165],[324,166],[341,167],[340,168],[339,169],[342,170],[335,171],[336,172],[337,173],[306,174],[307,175],[305,176],[311,177],[308,18],[304,178],[309,161],[282,18],[285,18],[189,19],[267,179],[288,180],[264,181],[269,182],[191,183],[263,184],[190,185],[270,186],[265,187],[266,188],[271,189],[268,190],[281,191],[283,192],[273,3],[275,3],[276,3],[272,3],[279,3],[278,3],[277,3],[274,3],[280,193],[297,194],[293,161],[296,161],[294,161],[292,161],[301,195],[300,196]],"exportedModulesMap":[[230,1],[203,2],[201,3],[205,4],[209,5],[213,6],[211,7],[212,8],[208,9],[214,10],[215,11],[202,12],[317,13],[231,14],[217,15],[225,16],[229,17],[226,10],[227,18],[228,19],[90,20],[91,21],[78,22],[80,23],[187,24],[188,25],[92,26],[82,27],[93,28],[65,29],[79,30],[83,31],[84,30],[96,32],[97,33],[86,27],[88,34],[87,35],[89,36],[224,37],[220,18],[218,18],[219,18],[223,38],[221,39],[222,40],[338,18],[261,41],[233,42],[257,43],[256,44],[255,45],[71,46],[68,47],[67,47],[69,48],[74,15],[75,49],[66,15],[72,50],[73,51],[299,52],[99,53],[100,53],[135,54],[136,55],[137,56],[138,57],[139,58],[140,59],[141,60],[142,61],[143,62],[144,63],[145,63],[147,64],[146,65],[148,66],[149,67],[150,68],[134,69],[151,70],[152,71],[153,72],[186,73],[154,74],[155,75],[156,76],[157,77],[158,78],[159,79],[160,80],[161,81],[162,82],[163,83],[164,83],[165,84],[167,85],[169,86],[168,87],[170,88],[171,89],[172,90],[173,91],[174,92],[175,93],[176,94],[177,95],[178,96],[179,97],[180,98],[181,99],[182,100],[183,101],[184,102],[319,103],[250,104],[248,105],[332,106],[330,107],[333,108],[334,109],[331,110],[234,111],[251,112],[252,14],[253,111],[258,113],[259,114],[262,115],[260,111],[244,116],[245,117],[61,118],[64,119],[235,120],[236,121],[237,121],[239,122],[240,123],[243,124],[242,125],[63,126],[193,127],[196,128],[197,128],[194,129],[195,128],[200,130],[198,3],[199,127],[322,131],[247,131],[246,132],[117,133],[124,134],[116,133],[131,135],[108,136],[107,137],[130,138],[125,139],[128,140],[110,141],[109,142],[105,143],[104,144],[127,145],[106,146],[111,147],[115,147],[133,148],[132,147],[119,149],[120,150],[122,151],[118,152],[121,153],[126,138],[113,154],[114,155],[123,156],[103,157],[129,158],[328,159],[327,160],[302,161],[325,161],[326,160],[320,197],[324,161],[341,167],[340,168],[339,160],[342,170],[335,171],[336,198],[337,160],[306,174],[307,175],[305,176],[311,177],[308,18],[304,178],[309,161],[282,18],[285,18],[189,19],[267,179],[288,180],[264,181],[269,182],[191,183],[263,184],[190,185],[270,186],[265,187],[266,188],[271,189],[268,190],[281,191],[283,192],[273,3],[275,3],[276,3],[272,3],[279,3],[278,3],[277,3],[274,3],[280,193],[297,194],[293,161],[296,161],[294,161],[292,161],[301,195],[300,196]],"semanticDiagnosticsPerFile":[216,230,203,192,201,205,209,213,211,206,204,212,208,214,215,202,207,316,315,314,313,317,231,217,225,229,226,227,228,90,91,78,80,98,81,187,188,92,82,93,65,79,83,84,94,96,97,85,86,88,87,89,224,220,218,219,223,221,222,338,261,232,233,257,256,255,71,68,67,69,74,75,66,72,73,299,343,298,99,100,135,136,137,138,139,140,141,142,143,144,145,147,146,148,149,150,134,185,151,152,153,186,154,155,156,157,158,159,160,161,162,163,164,165,166,167,169,168,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,101,210,318,319,321,250,248,249,329,332,330,333,334,95,331,76,234,251,252,253,258,259,262,260,244,60,245,61,238,64,235,236,237,239,240,62,243,242,63,241,254,70,193,196,197,194,195,200,198,199,58,59,10,12,11,2,13,14,15,16,17,18,19,20,3,21,4,22,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,8,49,46,47,48,50,9,51,52,53,56,54,55,1,57,77,322,247,246,117,124,116,131,108,107,130,125,128,110,109,105,104,127,106,111,112,115,102,133,132,119,120,122,118,121,126,113,114,123,103,129,328,327,302,325,326,320,323,324,341,340,339,342,335,336,337,303,306,310,307,305,311,308,304,309,282,286,285,189,267,288,284,264,269,287,191,263,190,270,265,266,271,268,281,283,273,275,276,272,279,278,277,274,280,312,291,297,289,293,295,290,296,294,292,301,300]},"version":"5.4.4"}
@@ -0,0 +1,9 @@
1
+ import type { NodeCapabilityCount } from "@waku/interfaces";
2
+ export declare const enrTree: {
3
+ TEST: string;
4
+ SANDBOX: string;
5
+ };
6
+ export declare const DEFAULT_BOOTSTRAP_TAG_NAME = "bootstrap";
7
+ export declare const DEFAULT_BOOTSTRAP_TAG_VALUE = 50;
8
+ export declare const DEFAULT_BOOTSTRAP_TAG_TTL = 100000000;
9
+ export declare const DEFAULT_NODE_REQUIREMENTS: Partial<NodeCapabilityCount>;
@@ -0,0 +1,13 @@
1
+ export const enrTree = {
2
+ TEST: "enrtree://AOGYWMBYOUIMOENHXCHILPKY3ZRFEULMFI4DOM442QSZ73TT2A7VI@test.waku.nodes.status.im",
3
+ SANDBOX: "enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im"
4
+ };
5
+ export const DEFAULT_BOOTSTRAP_TAG_NAME = "bootstrap";
6
+ export const DEFAULT_BOOTSTRAP_TAG_VALUE = 50;
7
+ export const DEFAULT_BOOTSTRAP_TAG_TTL = 100_000_000;
8
+ export const DEFAULT_NODE_REQUIREMENTS = {
9
+ store: 2,
10
+ filter: 1,
11
+ lightPush: 1
12
+ };
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/dns/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,2FAA2F;IACjG,OAAO,EACL,8FAA8F;CACjG,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC;AACtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC9C,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC;AAErD,MAAM,CAAC,MAAM,yBAAyB,GAAiC;IACrE,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;CACb,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { DnsClient, IEnr, NodeCapabilityCount } from "@waku/interfaces";
2
+ export declare class DnsNodeDiscovery {
3
+ private readonly dns;
4
+ private readonly _DNSTreeCache;
5
+ private readonly _errorTolerance;
6
+ static dnsOverHttp(dnsClient?: DnsClient): Promise<DnsNodeDiscovery>;
7
+ /**
8
+ * Returns a list of verified peers listed in an EIP-1459 DNS tree. Method may
9
+ * return fewer peers than requested if @link wantedNodeCapabilityCount requires
10
+ * larger quantity of peers than available or the number of errors/duplicate
11
+ * peers encountered by randomized search exceeds the sum of the fields of
12
+ * @link wantedNodeCapabilityCount plus the @link _errorTolerance factor.
13
+ */
14
+ getPeers(enrTreeUrls: string[], wantedNodeCapabilityCount: Partial<NodeCapabilityCount>): Promise<IEnr[]>;
15
+ constructor(dns: DnsClient);
16
+ /**
17
+ * {@inheritDoc getPeers}
18
+ */
19
+ getNextPeer(enrTreeUrls: string[], wantedNodeCapabilityCount: Partial<NodeCapabilityCount>): AsyncGenerator<IEnr>;
20
+ /**
21
+ * Runs a recursive, randomized descent of the DNS tree to retrieve a single
22
+ * ENR record as an ENR. Returns null if parsing or DNS resolution fails.
23
+ */
24
+ private _search;
25
+ /**
26
+ * Retrieves the TXT record stored at a location from either
27
+ * this DNS tree cache or via DNS query.
28
+ *
29
+ * @throws if the TXT Record contains non-UTF-8 values.
30
+ */
31
+ private _getTXTRecord;
32
+ }
@@ -0,0 +1,160 @@
1
+ import { EnrDecoder } from "@waku/enr";
2
+ import { Logger } from "@waku/utils";
3
+ import { DnsOverHttps } from "./dns_over_https.js";
4
+ import { ENRTree } from "./enrtree.js";
5
+ import { fetchNodesUntilCapabilitiesFulfilled, yieldNodesUntilCapabilitiesFulfilled } from "./fetch_nodes.js";
6
+ const log = new Logger("discovery:dns");
7
+ export class DnsNodeDiscovery {
8
+ dns;
9
+ _DNSTreeCache;
10
+ _errorTolerance = 10;
11
+ static async dnsOverHttp(dnsClient) {
12
+ if (!dnsClient) {
13
+ dnsClient = await DnsOverHttps.create();
14
+ }
15
+ return new DnsNodeDiscovery(dnsClient);
16
+ }
17
+ /**
18
+ * Returns a list of verified peers listed in an EIP-1459 DNS tree. Method may
19
+ * return fewer peers than requested if @link wantedNodeCapabilityCount requires
20
+ * larger quantity of peers than available or the number of errors/duplicate
21
+ * peers encountered by randomized search exceeds the sum of the fields of
22
+ * @link wantedNodeCapabilityCount plus the @link _errorTolerance factor.
23
+ */
24
+ async getPeers(enrTreeUrls, wantedNodeCapabilityCount) {
25
+ const networkIndex = Math.floor(Math.random() * enrTreeUrls.length);
26
+ const { publicKey, domain } = ENRTree.parseTree(enrTreeUrls[networkIndex]);
27
+ const context = {
28
+ domain,
29
+ publicKey,
30
+ visits: {}
31
+ };
32
+ const peers = await fetchNodesUntilCapabilitiesFulfilled(wantedNodeCapabilityCount, this._errorTolerance, () => this._search(domain, context));
33
+ log.info("retrieved peers: ", peers.map((peer) => {
34
+ return {
35
+ id: peer.peerId?.toString(),
36
+ multiaddrs: peer.multiaddrs?.map((ma) => ma.toString())
37
+ };
38
+ }));
39
+ return peers;
40
+ }
41
+ constructor(dns) {
42
+ this._DNSTreeCache = {};
43
+ this.dns = dns;
44
+ }
45
+ /**
46
+ * {@inheritDoc getPeers}
47
+ */
48
+ async *getNextPeer(enrTreeUrls, wantedNodeCapabilityCount) {
49
+ const networkIndex = Math.floor(Math.random() * enrTreeUrls.length);
50
+ const { publicKey, domain } = ENRTree.parseTree(enrTreeUrls[networkIndex]);
51
+ const context = {
52
+ domain,
53
+ publicKey,
54
+ visits: {}
55
+ };
56
+ for await (const peer of yieldNodesUntilCapabilitiesFulfilled(wantedNodeCapabilityCount, this._errorTolerance, () => this._search(domain, context))) {
57
+ yield peer;
58
+ }
59
+ }
60
+ /**
61
+ * Runs a recursive, randomized descent of the DNS tree to retrieve a single
62
+ * ENR record as an ENR. Returns null if parsing or DNS resolution fails.
63
+ */
64
+ async _search(subdomain, context) {
65
+ try {
66
+ const entry = await this._getTXTRecord(subdomain, context);
67
+ context.visits[subdomain] = true;
68
+ let next;
69
+ let branches;
70
+ const entryType = getEntryType(entry);
71
+ try {
72
+ switch (entryType) {
73
+ case ENRTree.ROOT_PREFIX:
74
+ next = ENRTree.parseAndVerifyRoot(entry, context.publicKey);
75
+ return await this._search(next, context);
76
+ case ENRTree.BRANCH_PREFIX:
77
+ branches = ENRTree.parseBranch(entry);
78
+ next = selectRandomPath(branches, context);
79
+ return await this._search(next, context);
80
+ case ENRTree.RECORD_PREFIX:
81
+ return EnrDecoder.fromString(entry);
82
+ default:
83
+ return null;
84
+ }
85
+ }
86
+ catch (error) {
87
+ log.error(`Failed to search DNS tree ${entryType} at subdomain ${subdomain}: ${error}`);
88
+ return null;
89
+ }
90
+ }
91
+ catch (error) {
92
+ log.error(`Failed to retrieve TXT record at subdomain ${subdomain}: ${error}`);
93
+ return null;
94
+ }
95
+ }
96
+ /**
97
+ * Retrieves the TXT record stored at a location from either
98
+ * this DNS tree cache or via DNS query.
99
+ *
100
+ * @throws if the TXT Record contains non-UTF-8 values.
101
+ */
102
+ async _getTXTRecord(subdomain, context) {
103
+ if (this._DNSTreeCache[subdomain]) {
104
+ return this._DNSTreeCache[subdomain];
105
+ }
106
+ // Location is either the top level tree entry host or a subdomain of it.
107
+ const location = subdomain !== context.domain
108
+ ? `${subdomain}.${context.domain}`
109
+ : context.domain;
110
+ const response = await this.dns.resolveTXT(location);
111
+ if (!response.length)
112
+ throw new Error("Received empty result array while fetching TXT record");
113
+ if (!response[0].length)
114
+ throw new Error("Received empty TXT record");
115
+ // Branch entries can be an array of strings of comma delimited subdomains, with
116
+ // some subdomain strings split across the array elements
117
+ const result = response.join("");
118
+ this._DNSTreeCache[subdomain] = result;
119
+ return result;
120
+ }
121
+ }
122
+ function getEntryType(entry) {
123
+ if (entry.startsWith(ENRTree.ROOT_PREFIX))
124
+ return ENRTree.ROOT_PREFIX;
125
+ if (entry.startsWith(ENRTree.BRANCH_PREFIX))
126
+ return ENRTree.BRANCH_PREFIX;
127
+ if (entry.startsWith(ENRTree.RECORD_PREFIX))
128
+ return ENRTree.RECORD_PREFIX;
129
+ return "";
130
+ }
131
+ /**
132
+ * Returns a randomly selected subdomain string from the list provided by a branch
133
+ * entry record.
134
+ *
135
+ * The client must track subdomains which are already resolved to avoid
136
+ * going into an infinite loop b/c branch entries can contain
137
+ * circular references. It’s in the client’s best interest to traverse the
138
+ * tree in random order.
139
+ */
140
+ function selectRandomPath(branches, context) {
141
+ // Identify domains already visited in this traversal of the DNS tree.
142
+ // Then filter against them to prevent cycles.
143
+ const circularRefs = {};
144
+ for (const [idx, subdomain] of branches.entries()) {
145
+ if (context.visits[subdomain]) {
146
+ circularRefs[idx] = true;
147
+ }
148
+ }
149
+ // If all possible paths are circular...
150
+ if (Object.keys(circularRefs).length === branches.length) {
151
+ throw new Error("Unresolvable circular path detected");
152
+ }
153
+ // Randomly select a viable path
154
+ let index;
155
+ do {
156
+ index = Math.floor(Math.random() * branches.length);
157
+ } while (circularRefs[index]);
158
+ return branches[index];
159
+ }
160
+ //# sourceMappingURL=dns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns.js","sourceRoot":"","sources":["../../src/dns/dns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { PeerDiscovery, PeerDiscoveryEvents, TypedEventEmitter } from "@libp2p/interface";
2
+ import { peerDiscoverySymbol as symbol } from "@libp2p/interface";
3
+ import type { DnsDiscOptions, DnsDiscoveryComponents, NodeCapabilityCount } from "@waku/interfaces";
4
+ /**
5
+ * Parse options and expose function to return bootstrap peer addresses.
6
+ */
7
+ export declare class PeerDiscoveryDns extends TypedEventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
8
+ private nextPeer;
9
+ private _started;
10
+ private _components;
11
+ private _options;
12
+ constructor(components: DnsDiscoveryComponents, options: DnsDiscOptions);
13
+ /**
14
+ * Start discovery process
15
+ */
16
+ start(): Promise<void>;
17
+ /**
18
+ * Stop emitting events
19
+ */
20
+ stop(): void;
21
+ get [symbol](): true;
22
+ get [Symbol.toStringTag](): string;
23
+ }
24
+ export declare function wakuDnsDiscovery(enrUrls: string[], wantedNodeCapabilityCount?: Partial<NodeCapabilityCount>): (components: DnsDiscoveryComponents) => PeerDiscoveryDns;
@@ -0,0 +1,95 @@
1
+ import { CustomEvent, TypedEventEmitter } from "@libp2p/interface";
2
+ import { peerDiscoverySymbol as symbol } from "@libp2p/interface";
3
+ import { encodeRelayShard, Logger } from "@waku/utils";
4
+ import { DEFAULT_BOOTSTRAP_TAG_NAME, DEFAULT_BOOTSTRAP_TAG_TTL, DEFAULT_BOOTSTRAP_TAG_VALUE, DEFAULT_NODE_REQUIREMENTS } from "./constants.js";
5
+ import { DnsNodeDiscovery } from "./dns.js";
6
+ const log = new Logger("peer-discovery-dns");
7
+ /**
8
+ * Parse options and expose function to return bootstrap peer addresses.
9
+ */
10
+ export class PeerDiscoveryDns extends TypedEventEmitter {
11
+ nextPeer;
12
+ _started;
13
+ _components;
14
+ _options;
15
+ constructor(components, options) {
16
+ super();
17
+ this._started = false;
18
+ this._components = components;
19
+ this._options = options;
20
+ const { enrUrls } = options;
21
+ log.info("Use following EIP-1459 ENR Tree URLs: ", enrUrls);
22
+ }
23
+ /**
24
+ * Start discovery process
25
+ */
26
+ async start() {
27
+ log.info("Starting peer discovery via dns");
28
+ this._started = true;
29
+ if (this.nextPeer === undefined) {
30
+ let { enrUrls } = this._options;
31
+ if (!Array.isArray(enrUrls))
32
+ enrUrls = [enrUrls];
33
+ const { wantedNodeCapabilityCount } = this._options;
34
+ const dns = await DnsNodeDiscovery.dnsOverHttp();
35
+ this.nextPeer = dns.getNextPeer.bind(dns, enrUrls, wantedNodeCapabilityCount);
36
+ }
37
+ for await (const peerEnr of this.nextPeer()) {
38
+ if (!this._started) {
39
+ return;
40
+ }
41
+ const { peerInfo, shardInfo } = peerEnr;
42
+ if (!peerInfo) {
43
+ continue;
44
+ }
45
+ const tagsToUpdate = {
46
+ [DEFAULT_BOOTSTRAP_TAG_NAME]: {
47
+ value: this._options.tagValue ?? DEFAULT_BOOTSTRAP_TAG_VALUE,
48
+ ttl: this._options.tagTTL ?? DEFAULT_BOOTSTRAP_TAG_TTL
49
+ }
50
+ };
51
+ let isPeerChanged = false;
52
+ const isPeerExists = await this._components.peerStore.has(peerInfo.id);
53
+ if (isPeerExists) {
54
+ const peer = await this._components.peerStore.get(peerInfo.id);
55
+ const hasBootstrapTag = peer.tags.has(DEFAULT_BOOTSTRAP_TAG_NAME);
56
+ if (!hasBootstrapTag) {
57
+ isPeerChanged = true;
58
+ await this._components.peerStore.merge(peerInfo.id, {
59
+ tags: tagsToUpdate
60
+ });
61
+ }
62
+ }
63
+ else {
64
+ isPeerChanged = true;
65
+ await this._components.peerStore.save(peerInfo.id, {
66
+ tags: tagsToUpdate,
67
+ ...(shardInfo && {
68
+ metadata: {
69
+ shardInfo: encodeRelayShard(shardInfo)
70
+ }
71
+ })
72
+ });
73
+ }
74
+ if (isPeerChanged) {
75
+ this.dispatchEvent(new CustomEvent("peer", { detail: peerInfo }));
76
+ }
77
+ }
78
+ }
79
+ /**
80
+ * Stop emitting events
81
+ */
82
+ stop() {
83
+ this._started = false;
84
+ }
85
+ get [symbol]() {
86
+ return true;
87
+ }
88
+ get [Symbol.toStringTag]() {
89
+ return "@waku/bootstrap";
90
+ }
91
+ }
92
+ export function wakuDnsDiscovery(enrUrls, wantedNodeCapabilityCount = DEFAULT_NODE_REQUIREMENTS) {
93
+ return (components) => new PeerDiscoveryDns(components, { enrUrls, wantedNodeCapabilityCount });
94
+ }
95
+ //# sourceMappingURL=dns_discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns_discovery.js","sourceRoot":"","sources":["../../src/dns/dns_discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { DnsClient } from "@waku/interfaces";
2
+ import { Endpoint } from "dns-query";
3
+ export declare class DnsOverHttps implements DnsClient {
4
+ private endpoints;
5
+ private retries;
6
+ /**
7
+ * Create new Dns-Over-Http DNS client.
8
+ *
9
+ * @param endpoints The endpoints for Dns-Over-Https queries;
10
+ * Defaults to using dns-query's API..
11
+ * @param retries Retries if a given endpoint fails.
12
+ *
13
+ * @throws {code: string} If DNS query fails.
14
+ */
15
+ static create(endpoints?: Endpoint[], retries?: number): Promise<DnsOverHttps>;
16
+ private constructor();
17
+ /**
18
+ * Resolves a TXT record
19
+ *
20
+ * @param domain The domain name
21
+ *
22
+ * @throws if the query fails
23
+ */
24
+ resolveTXT(domain: string): Promise<string[]>;
25
+ }
@@ -0,0 +1,72 @@
1
+ import { Logger } from "@waku/utils";
2
+ import { bytesToUtf8 } from "@waku/utils/bytes";
3
+ import { query, wellknown } from "dns-query";
4
+ const log = new Logger("dns-over-https");
5
+ export class DnsOverHttps {
6
+ endpoints;
7
+ retries;
8
+ /**
9
+ * Create new Dns-Over-Http DNS client.
10
+ *
11
+ * @param endpoints The endpoints for Dns-Over-Https queries;
12
+ * Defaults to using dns-query's API..
13
+ * @param retries Retries if a given endpoint fails.
14
+ *
15
+ * @throws {code: string} If DNS query fails.
16
+ */
17
+ static async create(endpoints, retries) {
18
+ const _endpoints = endpoints ?? (await wellknown.endpoints("doh"));
19
+ return new DnsOverHttps(_endpoints, retries);
20
+ }
21
+ constructor(endpoints, retries = 3) {
22
+ this.endpoints = endpoints;
23
+ this.retries = retries;
24
+ }
25
+ /**
26
+ * Resolves a TXT record
27
+ *
28
+ * @param domain The domain name
29
+ *
30
+ * @throws if the query fails
31
+ */
32
+ async resolveTXT(domain) {
33
+ let answers;
34
+ try {
35
+ const res = await query({
36
+ question: { type: "TXT", name: domain }
37
+ }, {
38
+ endpoints: this.endpoints,
39
+ retries: this.retries
40
+ });
41
+ answers = res.answers;
42
+ }
43
+ catch (error) {
44
+ log.error("query failed: ", error);
45
+ throw new Error("DNS query failed");
46
+ }
47
+ if (!answers)
48
+ throw new Error(`Could not resolve ${domain}`);
49
+ const data = answers.map((a) => a.data);
50
+ const result = [];
51
+ data.forEach((d) => {
52
+ if (typeof d === "string") {
53
+ result.push(d);
54
+ }
55
+ else if (Array.isArray(d)) {
56
+ d.forEach((sd) => {
57
+ if (typeof sd === "string") {
58
+ result.push(sd);
59
+ }
60
+ else {
61
+ result.push(bytesToUtf8(sd));
62
+ }
63
+ });
64
+ }
65
+ else {
66
+ result.push(bytesToUtf8(d));
67
+ }
68
+ });
69
+ return result;
70
+ }
71
+ }
72
+ //# sourceMappingURL=dns_over_https.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns_over_https.js","sourceRoot":"","sources":["../../src/dns/dns_over_https.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAY,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEzC,MAAM,OAAO,YAAY;IAoBb;IACA;IApBV;;;;;;;;OAQG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,SAAsB,EACtB,OAAgB;QAEhB,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAEnE,OAAO,IAAI,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,YACU,SAAqB,EACrB,UAAkB,CAAC;QADnB,cAAS,GAAT,SAAS,CAAY;QACrB,YAAO,GAAP,OAAO,CAAY;IAC1B,CAAC;IAEJ;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB;gBACE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE;aACxC,EACD;gBACE,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CACF,CAAC;YACF,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAED,CAAC;QAEtC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACjB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;oBACf,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;wBAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}