diff --git a/.gitignore b/.gitignore index 1240d6c3..62e70c11 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,7 @@ script/tanglepod-cli/tanglepod-cli # Local developer scratch .local/ +.evolve/ # Claude Code .claude/ diff --git a/CLAUDE.md b/CLAUDE.md index d2141465..f220bf75 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -176,3 +176,11 @@ scripts/local-env/start-local-env.sh - O(1) share-based accounting for delegations - Events over storage for gas optimization - Fuzz testing required for financial logic + +## Commit Messages + +- No `Co-Authored-By` lines ever — not in any commit, in any repo + +## Pull Requests + +- Before opening any PR, always resolve merge conflicts locally first: create a merge branch, run `git merge `, fix all conflicts, verify lint/tests/build pass, push the resolved branch, THEN open the PR. Never open a PR that has conflicts. diff --git a/Cargo.lock b/Cargo.lock index 3d010533..734c258b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3351,7 +3351,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tnt-core-bindings" -version = "0.11.2" +version = "0.12.0" dependencies = [ "alloy", "alloy-contract", @@ -3361,7 +3361,7 @@ dependencies = [ [[package]] name = "tnt-core-fixtures" -version = "0.11.2" +version = "0.12.0" [[package]] name = "tokio" diff --git a/bindings/CHANGELOG.md b/bindings/CHANGELOG.md index 68f76822..21b32090 100644 --- a/bindings/CHANGELOG.md +++ b/bindings/CHANGELOG.md @@ -7,6 +7,87 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.12.0] - 2026-05-08 + +### Changed (BREAKING) + +- `QuoteDetails` EIP-712 typehash now includes `address requester` as the first + field. Previously `requester` lived on the struct but was excluded from the + typehash, so an attacker who observed a signed quote in the mempool could + flip `details.requester` to themselves and the operator's signature still + recovered correctly — the binding check at the protocol layer was therefore + cosmetic. Off-chain signers MUST now hash `requester` as the first member of + `QuoteDetails`. Existing pre-fix signatures are invalid against the new + typehash. The full updated string is: + `"QuoteDetails(address requester,uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)"` +- `ITangleSlashing` event declarations realigned with what the protocol + actually emits from `SlashingLib`: `SlashProposed` is now 8 fields (was 4), + `SlashExecuted` is now 4 fields (was 3), and the previously-missing + `SlashDisputed`, `SlashCancelled`, `SlashConfigUpdated` events are now + declared. Rust consumers wired to `ITangleSlashing` could not decode any + emitted slash event before this fix; they can now. + +### Added + +- Permissionless `expireServiceRequest(uint64)` is wired to the proxy. The + declaration shipped in 0.11.2 but the corresponding selector was never + registered on `TangleServicesFacet.selectors()`, so calls routed through the + unknown-selector fallback. Off-chain callers can now reach the function via + the canonical `ITangleServices` ABI. + +### Fixed (security) + +- `proposeSlash` and `disputeSlash` now carry `nonReentrant`; only `executeSlash`, + `executeSlashBatch`, and `cancelSlash` were guarded before. `proposeSlash` + also rejects `bytes32(0)` evidence so off-chain monitors keying off non-zero + evidence don't see silently-zero entries. +- Disputed slashes now apply the same 15-second `TIMESTAMP_BUFFER` as Pending + slashes. Previously a sequencer / proposer with timestamp influence could + sandwich the dispute deadline tick; the operator had no symmetric protection. +- `approveService` now rejects requests past the expiry grace window — operators + could otherwise race `expireServiceRequest` and quietly activate a stale + request the requester thought they could clean up. +- `requestService*` now rejects duplicate operator entries. With duplicates, + `req.operatorCount` exceeds the unique approver count, so + `approvalCount == operatorCount` was unreachable and the request could only + be cleaned up via `expireServiceRequest`. +- `terminateService` and `terminateServiceForNonPayment` now carry + `nonReentrant`. State writes already preceded external calls (CEI), but + defense-in-depth aligns these entrypoints with the rest of the lifecycle. +- All operator-exit entrypoints (`scheduleExit`, `executeExit`, `forceExit`, + `leaveService`, `forceRemoveOperator`) now reject when the service is no + longer Active. Previously a stale operator could continue to fire exit paths + on a Terminated service, double-decrementing counts and emitting + `OperatorLeftService` for a dead service. +- `_distributePaymentWithEffectiveExposure` now reverts (instead of silently + retaining funds) when there are zero active operators at billing time. The + developer/treasury split would still pay out while the operator+staker pool + (default 60%) remained stuck in the contract with no path back. Service + owners who lose all operators can recover escrow via `terminateService` → + `withdrawRemainingEscrow`. +- `fundService`, `billSubscription`, and `billSubscriptionBatch` now respect + the global pause. Reward / refund claim paths remain unguarded so users can + always exit. +- `OperatorStatusRegistry.registerOperator` now resets all per-(serviceId, + operator) heartbeat / metrics state on (re-)register. Without this, an + operator who deregistered carried stale heartbeat data forward — and + `isHeartbeatCurrent` could return true before any new heartbeat landed. +- `LiquidDelegationVault.requestRedeem` rejects `controller == address(0)` so + filing a request under that controller no longer permanently locks the + redeemer's burned shares. + +### Removed + +- Deleted unused `src/exposure/` module (`ExposureManager`, `ExposureCalculator`, + `ExposureTypes`, `IExposureManager`) and its self-contained `test/exposure/` + suite. The actual exposure logic lives in `src/core/PaymentsEffectiveExposure.sol` + and is exercised by `test/payments/`. The orphan module was an audit-burden + divergence risk for the same bps math. +- Deleted `src/interfaces/IStreamingPaymentAdapter.sol` (also defining + `ISuperfluidAdapter`, `ISablierAdapter`, `IPaymentAdapterRegistry`). None of + these interfaces are implemented or referenced anywhere; only + `IStreamingPaymentManager` is wired in. + ## [0.11.3] - 2026-05-06 ### Changed diff --git a/bindings/Cargo.toml b/bindings/Cargo.toml index 5f127f40..2c5bb600 100644 --- a/bindings/Cargo.toml +++ b/bindings/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tnt-core-bindings" -version = "0.11.3" +version = "0.12.0" edition = "2021" rust-version = "1.81" description = "Rust bindings for TNT Core Solidity contracts (Tangle staking protocol)" diff --git a/bindings/TNT_CORE_VERSION b/bindings/TNT_CORE_VERSION index eabed109..e064cac2 100644 --- a/bindings/TNT_CORE_VERSION +++ b/bindings/TNT_CORE_VERSION @@ -1 +1 @@ -aa511c20dd1d5fab98c72aa617096ab12143f696 \ No newline at end of file +93f8398b43dea3b7a880ccb912cc785811cb254b \ No newline at end of file diff --git a/bindings/abi/ITangle.json b/bindings/abi/ITangle.json index 2517ea7e..0fa8f6d0 100644 --- a/bindings/abi/ITangle.json +++ b/bindings/abi/ITangle.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"activated","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"58a9e743","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3e4b0ebc4520d36adb5cef0c4ba1d6224afae0f5b1996f11f38c61341ddae8b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6367a2fd47b3f699d5005cb192b03644690ec793f30ae2f17919be2ed2c191e8\",\"dweb:/ipfs/QmaatvcvEHjNeb3jtVv8sYH8ykMsJM2xu66K9Zt6mMZyWP\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9\",\"dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0xcdc85aeb8967849d613ce0293e4e64729ea74ffe5f5c98baa156ddddd422e46d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c3a017ac3518db94e065fa9404177d411c57ef3fd8d7a9ab6782f56e80b4e86\",\"dweb:/ipfs/QmcUD7TpV4vrpnKAFHA1Ps6dpVfyKimkcAFeSZpRTs7psA\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x0e38b96bd0160a2ca87b4da190c554b57d652ca10f5b17aa96b16fa2c7e8f6a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3955feb7a169072badab91245e85e1368395724b077d6372ad93bc2cc01f30c2\",\"dweb:/ipfs/QmeMHyuUqbvobygebBXrB8cSJgi1Kgs6zDcyh8mcBVTpy2\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x8f5f084d6593a56434265e9dcafe8bfbab922ac37a258834f21dc1903373b7aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efb3d3a9a10137d424dba09091f4a4ca4998a7b1a99402eacdd5f82f2e51a996\",\"dweb:/ipfs/QmcnogjJFWN8UZVpSZbv4f3KbXcibPbd8cDUyZZgZxhP2f\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"bool","name":"activated","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3e4b0ebc4520d36adb5cef0c4ba1d6224afae0f5b1996f11f38c61341ddae8b6","urls":["bzz-raw://6367a2fd47b3f699d5005cb192b03644690ec793f30ae2f17919be2ed2c191e8","dweb:/ipfs/QmaatvcvEHjNeb3jtVv8sYH8ykMsJM2xu66K9Zt6mMZyWP"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5","urls":["bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9","dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0xcdc85aeb8967849d613ce0293e4e64729ea74ffe5f5c98baa156ddddd422e46d","urls":["bzz-raw://2c3a017ac3518db94e065fa9404177d411c57ef3fd8d7a9ab6782f56e80b4e86","dweb:/ipfs/QmcUD7TpV4vrpnKAFHA1Ps6dpVfyKimkcAFeSZpRTs7psA"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x0e38b96bd0160a2ca87b4da190c554b57d652ca10f5b17aa96b16fa2c7e8f6a1","urls":["bzz-raw://3955feb7a169072badab91245e85e1368395724b077d6372ad93bc2cc01f30c2","dweb:/ipfs/QmeMHyuUqbvobygebBXrB8cSJgi1Kgs6zDcyh8mcBVTpy2"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x8f5f084d6593a56434265e9dcafe8bfbab922ac37a258834f21dc1903373b7aa","urls":["bzz-raw://efb3d3a9a10137d424dba09091f4a4ca4998a7b1a99402eacdd5f82f2e51a996","dweb:/ipfs/QmcnogjJFWN8UZVpSZbv4f3KbXcibPbd8cDUyZZgZxhP2f"],"license":"MIT"}},"version":1},"id":40} \ No newline at end of file +{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"activated","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","executeExit(uint64)":"b7c18207","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"58a9e743","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","transferBlueprint(uint64,address)":"8a4cf763","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Consolidates all sub-interfaces into a single entry point. Inherits from focused sub-interfaces for modularity.\",\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangle\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Core interface for Tangle Protocol v2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangle\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x80b2cc257b1b9e0aa0ce4c14e3173cc38e9fa406fe0798da26c3c350d0e7cb1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62161bcc6cb8839b33fd5a17a93e20663b514223127013ca9c70c8603df29ef4\",\"dweb:/ipfs/QmUBMLjNafTujTr9AjjPQ9ptPM6HMcL3P1A4A5GZWPegB3\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9\",\"dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0xcdc85aeb8967849d613ce0293e4e64729ea74ffe5f5c98baa156ddddd422e46d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c3a017ac3518db94e065fa9404177d411c57ef3fd8d7a9ab6782f56e80b4e86\",\"dweb:/ipfs/QmcUD7TpV4vrpnKAFHA1Ps6dpVfyKimkcAFeSZpRTs7psA\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x2655d450cf1d777e686db636e9043d1a254f9827914a21e402af855807158681\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3004a6cc8b98c48a0116b41b2583a5a569e0aed12de4d1392a6728f9f3337289\",\"dweb:/ipfs/QmcsuBJCvndcsppxdonTAkUXAqzyE2rk4kzTsRrj4DQHSW\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x8f5f084d6593a56434265e9dcafe8bfbab922ac37a258834f21dc1903373b7aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efb3d3a9a10137d424dba09091f4a4ca4998a7b1a99402eacdd5f82f2e51a996\",\"dweb:/ipfs/QmcnogjJFWN8UZVpSZbv4f3KbXcibPbd8cDUyZZgZxhP2f\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"bool","name":"activated","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangle"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x80b2cc257b1b9e0aa0ce4c14e3173cc38e9fa406fe0798da26c3c350d0e7cb1e","urls":["bzz-raw://62161bcc6cb8839b33fd5a17a93e20663b514223127013ca9c70c8603df29ef4","dweb:/ipfs/QmUBMLjNafTujTr9AjjPQ9ptPM6HMcL3P1A4A5GZWPegB3"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5","urls":["bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9","dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0xcdc85aeb8967849d613ce0293e4e64729ea74ffe5f5c98baa156ddddd422e46d","urls":["bzz-raw://2c3a017ac3518db94e065fa9404177d411c57ef3fd8d7a9ab6782f56e80b4e86","dweb:/ipfs/QmcUD7TpV4vrpnKAFHA1Ps6dpVfyKimkcAFeSZpRTs7psA"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x2655d450cf1d777e686db636e9043d1a254f9827914a21e402af855807158681","urls":["bzz-raw://3004a6cc8b98c48a0116b41b2583a5a569e0aed12de4d1392a6728f9f3337289","dweb:/ipfs/QmcsuBJCvndcsppxdonTAkUXAqzyE2rk4kzTsRrj4DQHSW"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x8f5f084d6593a56434265e9dcafe8bfbab922ac37a258834f21dc1903373b7aa","urls":["bzz-raw://efb3d3a9a10137d424dba09091f4a4ca4998a7b1a99402eacdd5f82f2e51a996","dweb:/ipfs/QmcnogjJFWN8UZVpSZbv4f3KbXcibPbd8cDUyZZgZxhP2f"],"license":"MIT"}},"version":1},"id":76} \ No newline at end of file diff --git a/bindings/abi/ITangleFull.json b/bindings/abi/ITangleFull.json index 26ba7d36..45706d26 100644 --- a/bindings/abi/ITangleFull.json +++ b/bindings/abi/ITangleFull.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"activated","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16))":"b81741ac","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"58a9e743","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3e4b0ebc4520d36adb5cef0c4ba1d6224afae0f5b1996f11f38c61341ddae8b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6367a2fd47b3f699d5005cb192b03644690ec793f30ae2f17919be2ed2c191e8\",\"dweb:/ipfs/QmaatvcvEHjNeb3jtVv8sYH8ykMsJM2xu66K9Zt6mMZyWP\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9\",\"dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0xcdc85aeb8967849d613ce0293e4e64729ea74ffe5f5c98baa156ddddd422e46d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c3a017ac3518db94e065fa9404177d411c57ef3fd8d7a9ab6782f56e80b4e86\",\"dweb:/ipfs/QmcUD7TpV4vrpnKAFHA1Ps6dpVfyKimkcAFeSZpRTs7psA\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x0e38b96bd0160a2ca87b4da190c554b57d652ca10f5b17aa96b16fa2c7e8f6a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3955feb7a169072badab91245e85e1368395724b077d6372ad93bc2cc01f30c2\",\"dweb:/ipfs/QmeMHyuUqbvobygebBXrB8cSJgi1Kgs6zDcyh8mcBVTpy2\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x8f5f084d6593a56434265e9dcafe8bfbab922ac37a258834f21dc1903373b7aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efb3d3a9a10137d424dba09091f4a4ca4998a7b1a99402eacdd5f82f2e51a996\",\"dweb:/ipfs/QmcnogjJFWN8UZVpSZbv4f3KbXcibPbd8cDUyZZgZxhP2f\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"bool","name":"activated","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3e4b0ebc4520d36adb5cef0c4ba1d6224afae0f5b1996f11f38c61341ddae8b6","urls":["bzz-raw://6367a2fd47b3f699d5005cb192b03644690ec793f30ae2f17919be2ed2c191e8","dweb:/ipfs/QmaatvcvEHjNeb3jtVv8sYH8ykMsJM2xu66K9Zt6mMZyWP"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5","urls":["bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9","dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0xcdc85aeb8967849d613ce0293e4e64729ea74ffe5f5c98baa156ddddd422e46d","urls":["bzz-raw://2c3a017ac3518db94e065fa9404177d411c57ef3fd8d7a9ab6782f56e80b4e86","dweb:/ipfs/QmcUD7TpV4vrpnKAFHA1Ps6dpVfyKimkcAFeSZpRTs7psA"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x0e38b96bd0160a2ca87b4da190c554b57d652ca10f5b17aa96b16fa2c7e8f6a1","urls":["bzz-raw://3955feb7a169072badab91245e85e1368395724b077d6372ad93bc2cc01f30c2","dweb:/ipfs/QmeMHyuUqbvobygebBXrB8cSJgi1Kgs6zDcyh8mcBVTpy2"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x8f5f084d6593a56434265e9dcafe8bfbab922ac37a258834f21dc1903373b7aa","urls":["bzz-raw://efb3d3a9a10137d424dba09091f4a4ca4998a7b1a99402eacdd5f82f2e51a996","dweb:/ipfs/QmcnogjJFWN8UZVpSZbv4f3KbXcibPbd8cDUyZZgZxhP2f"],"license":"MIT"}},"version":1},"id":40} \ No newline at end of file +{"abi":[{"type":"function","name":"addPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"approveService","inputs":[{"name":"params","type":"tuple","internalType":"struct Types.ApprovalParams","components":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"},{"name":"blsPopSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"teeCommitments","type":"tuple[]","internalType":"struct Types.TeeAttestationCommitment[]","components":[{"name":"backend","type":"uint8","internalType":"enum Types.TeeBackend"},{"name":"expectedMeasurement","type":"bytes32","internalType":"bytes32"},{"name":"nonceBinding","type":"bytes32","internalType":"bytes32"},{"name":"expiresAt","type":"uint64","internalType":"uint64"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscription","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"billSubscriptionBatch","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalBilled","type":"uint256","internalType":"uint256"},{"name":"billedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"blsPopMessage","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"blueprintCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"blueprintMasterRevision","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"blueprintMetadata","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blueprintOperatorCount","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blueprintSources","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]}],"stateMutability":"view"},{"type":"function","name":"blueprintSupportedMemberships","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"memberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}],"stateMutability":"view"},{"type":"function","name":"canScheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"canExit","type":"bool","internalType":"bool"},{"name":"reason","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"cancelExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewards","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsBatch","inputs":[{"name":"tokens","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createBlueprint","inputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"outputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"createServiceFromQuotes","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"deactivateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"defaultTntMinExposureBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"expireServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"extendServiceFromQuotes","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.QuoteDetails","components":[{"name":"requester","type":"address","internalType":"address"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ttlBlocks","type":"uint64","internalType":"uint64"},{"name":"totalCost","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"},{"name":"securityCommitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]},{"name":"resourceCommitments","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]},{"name":"extensionDuration","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"forceExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"forceRemoveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fundService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBillableServices","inputs":[{"name":"serviceIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"billable","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Blueprint","components":[{"name":"owner","type":"address","internalType":"address"},{"name":"manager","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintConfig","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintDefinition","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"definition","type":"tuple","internalType":"struct Types.BlueprintDefinition","components":[{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"},{"name":"manager","type":"address","internalType":"address"},{"name":"masterManagerRevision","type":"uint32","internalType":"uint32"},{"name":"hasConfig","type":"bool","internalType":"bool"},{"name":"config","type":"tuple","internalType":"struct Types.BlueprintConfig","components":[{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"subscriptionRate","type":"uint256","internalType":"uint256"},{"name":"subscriptionInterval","type":"uint64","internalType":"uint64"},{"name":"eventRate","type":"uint256","internalType":"uint256"}]},{"name":"metadata","type":"tuple","internalType":"struct Types.BlueprintMetadata","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"author","type":"string","internalType":"string"},{"name":"category","type":"string","internalType":"string"},{"name":"codeRepository","type":"string","internalType":"string"},{"name":"logo","type":"string","internalType":"string"},{"name":"website","type":"string","internalType":"string"},{"name":"license","type":"string","internalType":"string"},{"name":"profilingData","type":"string","internalType":"string"}]},{"name":"jobs","type":"tuple[]","internalType":"struct Types.JobDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"description","type":"string","internalType":"string"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"paramsSchema","type":"bytes","internalType":"bytes"},{"name":"resultSchema","type":"bytes","internalType":"bytes"}]},{"name":"registrationSchema","type":"bytes","internalType":"bytes"},{"name":"requestSchema","type":"bytes","internalType":"bytes"},{"name":"sources","type":"tuple[]","internalType":"struct Types.BlueprintSource[]","components":[{"name":"kind","type":"uint8","internalType":"enum Types.BlueprintSourceKind"},{"name":"container","type":"tuple","internalType":"struct Types.ImageRegistrySource","components":[{"name":"registry","type":"string","internalType":"string"},{"name":"image","type":"string","internalType":"string"},{"name":"tag","type":"string","internalType":"string"}]},{"name":"wasm","type":"tuple","internalType":"struct Types.WasmSource","components":[{"name":"runtime","type":"uint8","internalType":"enum Types.WasmRuntime"},{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"native","type":"tuple","internalType":"struct Types.NativeSource","components":[{"name":"fetcher","type":"uint8","internalType":"enum Types.BlueprintFetcherKind"},{"name":"artifactUri","type":"string","internalType":"string"},{"name":"entrypoint","type":"string","internalType":"string"}]},{"name":"testing","type":"tuple","internalType":"struct Types.TestingSource","components":[{"name":"cargoPackage","type":"string","internalType":"string"},{"name":"cargoBin","type":"string","internalType":"string"},{"name":"basePath","type":"string","internalType":"string"}]},{"name":"binaries","type":"tuple[]","internalType":"struct Types.BlueprintBinary[]","components":[{"name":"arch","type":"uint8","internalType":"enum Types.BlueprintArchitecture"},{"name":"os","type":"uint8","internalType":"enum Types.BlueprintOperatingSystem"},{"name":"name","type":"string","internalType":"string"},{"name":"sha256","type":"bytes32","internalType":"bytes32"}]}]},{"name":"supportedMemberships","type":"uint8[]","internalType":"enum Types.MembershipModel[]"}]}],"stateMutability":"view"},{"type":"function","name":"getBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getExitConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitConfig","components":[{"name":"minCommitmentDuration","type":"uint64","internalType":"uint64"},{"name":"exitQueueDuration","type":"uint64","internalType":"uint64"},{"name":"forceExitAllowed","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitRequest","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ExitRequest","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"scheduledAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"pending","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getExitStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum Types.ExitStatus"}],"stateMutability":"view"},{"type":"function","name":"getJobCall","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.JobCall","components":[{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"caller","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"resultCount","type":"uint32","internalType":"uint32"},{"name":"payment","type":"uint256","internalType":"uint256"},{"name":"completed","type":"bool","internalType":"bool"},{"name":"isRFQ","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getJobEventRate","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"rate","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getJobQuotedPrice","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOperatorBlsPubkey","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"blsPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorPreferences","components":[{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorPublicKey","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getOperatorRegistration","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.OperatorRegistration","components":[{"name":"registeredAt","type":"uint64","internalType":"uint64"},{"name":"updatedAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"},{"name":"online","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorTotalActiveServices","inputs":[{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"count","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.Service","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"terminatedAt","type":"uint64","internalType":"uint64"},{"name":"lastPaymentAt","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"pricing","type":"uint8","internalType":"enum Types.PricingModel"},{"name":"status","type":"uint8","internalType":"enum Types.ServiceStatus"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PaymentLib.ServiceEscrow","components":[{"name":"token","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"totalDeposited","type":"uint256","internalType":"uint256"},{"name":"totalReleased","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceOperator","components":[{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"joinedAt","type":"uint64","internalType":"uint64"},{"name":"leftAt","type":"uint64","internalType":"uint64"},{"name":"active","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getServiceRequest","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Types.ServiceRequest","components":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requester","type":"address","internalType":"address"},{"name":"createdAt","type":"uint64","internalType":"uint64"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"operatorCount","type":"uint32","internalType":"uint32"},{"name":"approvalCount","type":"uint32","internalType":"uint32"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"membership","type":"uint8","internalType":"enum Types.MembershipModel"},{"name":"minOperators","type":"uint32","internalType":"uint32"},{"name":"maxOperators","type":"uint32","internalType":"uint32"},{"name":"rejected","type":"bool","internalType":"bool"},{"name":"activated","type":"bool","internalType":"bool"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestResourceRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityCommitments","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceRequestSecurityRequirements","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceResourceCommitmentHash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getServiceSecurityRequirements","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTeeCommitmentRoot","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isOperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceActive","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isServiceOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"joinService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"joinServiceWithCommitments","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"exposureBps","type":"uint16","internalType":"uint16"},{"name":"commitments","type":"tuple[]","internalType":"struct Types.AssetSecurityCommitment[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"exposureBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"leaveService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxBlueprintsPerOperator","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"mbsmRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStatusRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paymentSplit","inputs":[],"outputs":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pendingRewards","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"preRegister","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"priceOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"},{"name":"registrationInputs","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rejectService","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removePermittedCaller","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestService","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithExposure","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"exposureBps","type":"uint16[]","internalType":"uint16[]"},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"requestServiceWithSecurity","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"securityRequirements","type":"tuple[]","internalType":"struct Types.AssetSecurityRequirement[]","components":[{"name":"asset","type":"tuple","internalType":"struct Types.Asset","components":[{"name":"kind","type":"uint8","internalType":"enum Types.AssetKind"},{"name":"token","type":"address","internalType":"address"}]},{"name":"minExposureBps","type":"uint16","internalType":"uint16"},{"name":"maxExposureBps","type":"uint16","internalType":"uint16"}]},{"name":"config","type":"bytes","internalType":"bytes"},{"name":"permittedCallers","type":"address[]","internalType":"address[]"},{"name":"ttl","type":"uint64","internalType":"uint64"},{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentAmount","type":"uint256","internalType":"uint256"},{"name":"confidentiality","type":"uint8","internalType":"enum Types.ConfidentialityPolicy"}],"outputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"rewardTokens","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"rewardVaults","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"scheduleExit","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceCount","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"serviceFeeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setBlueprintResourceRequirements","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"requirements","type":"tuple[]","internalType":"struct Types.ResourceCommitment[]","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"count","type":"uint64","internalType":"uint64"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultTntMinExposureBps","inputs":[{"name":"minExposureBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setJobEventRates","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"jobIndexes","type":"uint8[]","internalType":"uint8[]"},{"name":"rates","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMBSMRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMaxBlueprintsPerOperator","inputs":[{"name":"newMax","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorStatusRegistry","inputs":[{"name":"registry","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentSplit","inputs":[{"name":"split","type":"tuple","internalType":"struct Types.PaymentSplit","components":[{"name":"developerBps","type":"uint16","internalType":"uint16"},{"name":"protocolBps","type":"uint16","internalType":"uint16"},{"name":"operatorBps","type":"uint16","internalType":"uint16"},{"name":"stakerBps","type":"uint16","internalType":"uint16"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardVaults","inputs":[{"name":"vaults","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setServiceFeeDistributor","inputs":[{"name":"distributor","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStaking","inputs":[{"name":"staking","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntPaymentDiscountBps","inputs":[{"name":"discountBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTntToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setTreasury","inputs":[{"name":"treasury","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitAggregatedResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"signerBitmap","type":"uint256","internalType":"uint256"},{"name":"aggregatedSignature","type":"uint256[2]","internalType":"uint256[2]"},{"name":"aggregatedPubkey","type":"uint256[4]","internalType":"uint256[4]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitJob","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitJobFromQuote","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"inputs","type":"bytes","internalType":"bytes"},{"name":"quotes","type":"tuple[]","internalType":"struct Types.SignedJobQuote[]","components":[{"name":"details","type":"tuple","internalType":"struct Types.JobQuoteDetails","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"jobIndex","type":"uint8","internalType":"uint8"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"expiry","type":"uint64","internalType":"uint64"},{"name":"confidentiality","type":"uint8","internalType":"uint8"}]},{"name":"signature","type":"bytes","internalType":"bytes"},{"name":"operator","type":"address","internalType":"address"}]}],"outputs":[{"name":"callId","type":"uint64","internalType":"uint64"}],"stateMutability":"payable"},{"type":"function","name":"submitResult","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callId","type":"uint64","internalType":"uint64"},{"name":"result","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitResults","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"callIds","type":"uint64[]","internalType":"uint64[]"},{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"teeNonceFor","inputs":[{"name":"requestId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"terminateService","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"terminateServiceForNonPayment","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tntPaymentDiscountBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"tntToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregisterOperator","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateBlueprint","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"metadataUri","type":"string","internalType":"string"},{"name":"metadataHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateOperatorPreferences","inputs":[{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"ecdsaPublicKey","type":"bytes","internalType":"bytes"},{"name":"rpcAddress","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawRemainingEscrow","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlueprintCreated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"manager","type":"address","indexed":false,"internalType":"address"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BlueprintDeactivated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlueprintResourceRequirementsSet","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"count","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlueprintTransferred","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"BlueprintUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"metadataUri","type":"string","indexed":false,"internalType":"string"},{"name":"metadataHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"JobCompleted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"JobResultSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmitted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"JobSubmittedFromQuote","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"callId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"jobIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"quotedOperators","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"totalPrice","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"inputs","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"OperatorJoinedService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"exposureBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"OperatorLeftService","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorPreferencesUpdated","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"ecdsaPublicKey","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"rpcAddress","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorRewardAccrued","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"blueprintId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUnregistered","inputs":[{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentDistributed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"grossAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"developerRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"developerAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"stakerPoolAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ServiceActivated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceApproved","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRejected","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ServiceRequested","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceRequestedWithSecurity","inputs":[{"name":"requestId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"confidentiality","type":"uint8","indexed":false,"internalType":"enum Types.ConfidentialityPolicy"}],"anonymous":false},{"type":"event","name":"ServiceTerminated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"ServiceTerminatedForNonPayment","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"triggeredBy","type":"address","indexed":true,"internalType":"address"},{"name":"dueAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"graceEndsAt","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"requiredAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"escrowBalance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"SubscriptionBilled","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"period","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"addPermittedCaller(uint64,address)":"815d6a26","approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":"6a46006b","billSubscription(uint64)":"cf3806c6","billSubscriptionBatch(uint64[])":"da232ded","blsPopMessage(address,uint256[4])":"433615a2","blueprintCount()":"c602d4fa","blueprintMasterRevision(uint64)":"ff14a940","blueprintMetadata(uint64)":"430ce118","blueprintOperatorCount(uint64)":"8d3f65be","blueprintSources(uint64)":"335ea071","blueprintSupportedMemberships(uint64)":"df57f527","canScheduleExit(uint64,address)":"27b37565","cancelExit(uint64)":"cbd8da63","cancelSlash(uint64,string)":"06079dc5","claimRewards()":"372500ab","claimRewards(address)":"ef5cfb8c","claimRewardsAll()":"62b83dda","claimRewardsBatch(address[])":"8602bba0","createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":"3022f66c","createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":"458a69a0","deactivateBlueprint(uint64)":"449bb849","defaultTntMinExposureBps()":"8eb435a5","disputeSlash(uint64,string)":"77380c74","executeExit(uint64)":"b7c18207","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","expireServiceRequest(uint64)":"e07a86bd","extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":"ebb7d84b","forceExit(uint64,address)":"aea65925","forceRemoveOperator(uint64,address)":"684d89f5","fundService(uint64,uint256)":"970e08fe","getBillableServices(uint64[])":"93f3ddaf","getBlueprint(uint64)":"b7696dbb","getBlueprintConfig(uint64)":"563a89f9","getBlueprintDefinition(uint64)":"6171fea8","getBlueprintResourceRequirements(uint64)":"349e961a","getExecutableSlashes(uint64,uint64)":"110f829b","getExitConfig(uint64)":"d2672ed4","getExitRequest(uint64,address)":"9dcc5a93","getExitStatus(uint64,address)":"427ffde9","getJobCall(uint64,uint64)":"a672bc0a","getJobEventRate(uint64,uint8)":"f9333bb1","getJobQuotedOperators(uint64,uint64)":"038dda6c","getJobQuotedPrice(uint64,uint64,address)":"fca78d2d","getOperatorBlsPubkey(uint64,address)":"6ee5bcff","getOperatorPreferences(uint64,address)":"f32f9673","getOperatorPublicKey(uint64,address)":"180cae67","getOperatorRegistration(uint64,address)":"6bda42f3","getOperatorTotalActiveServices(address)":"0ded8bf9","getService(uint64)":"3dc0d5fe","getServiceEscrow(uint64)":"eb8c3bcd","getServiceOperator(uint64,address)":"842524bb","getServiceOperators(uint64)":"bb207f1f","getServiceRequest(uint64)":"5f9b4dfa","getServiceRequestResourceRequirements(uint64)":"a305fb44","getServiceRequestSecurityCommitments(uint64,address)":"05bb3aa3","getServiceRequestSecurityRequirements(uint64)":"e5f797f2","getServiceResourceCommitmentHash(uint64,address)":"e4c0b756","getServiceSecurityCommitments(uint64,address)":"a0b0c62a","getServiceSecurityRequirements(uint64)":"d8644e52","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","getTeeCommitmentRoot(uint64,address)":"a7d282f4","isOperatorRegistered(uint64,address)":"64462595","isPermittedCaller(uint64,address)":"2ec2bd03","isServiceActive(uint64)":"2f46279f","isServiceOperator(uint64,address)":"a595b21e","joinService(uint64,uint16)":"2b9da71a","joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":"d563701f","leaveService(uint64)":"6778afbc","maxBlueprintsPerOperator()":"5ece2405","mbsmRegistry()":"26c9887b","metricsRecorder()":"2dae1885","operatorStatusRegistry()":"d390bbbb","pause()":"8456cb59","paymentSplit()":"aac7416b","pendingRewards(address)":"31d7a262","pendingRewards(address,address)":"80ac8228","preRegister(uint64)":"18c68017","priceOracle()":"2630c12f","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","registerOperator(uint64,bytes,string)":"d4e1ab7c","registerOperator(uint64,bytes,string,bytes)":"7324e916","rejectService(uint64)":"6d8b88c3","removePermittedCaller(uint64,address)":"5f359924","requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":"c841e26e","requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":"327d6898","requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":"4c540ec1","rewardTokens(address)":"f5ab16cc","rewardVaults()":"9ebd65ad","scheduleExit(uint64)":"b607ba59","serviceCount()":"06237526","serviceFeeDistributor()":"2e40f7fb","setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":"e830bff6","setDefaultTntMinExposureBps(uint16)":"78d66be3","setJobEventRates(uint64,uint8[],uint256[])":"c1d71304","setMBSMRegistry(address)":"5f807d0a","setMaxBlueprintsPerOperator(uint32)":"1d77351b","setMetricsRecorder(address)":"20812956","setOperatorStatusRegistry(address)":"6a64a27e","setPaymentSplit((uint16,uint16,uint16,uint16))":"b81741ac","setPriceOracle(address)":"530e784f","setRewardVaults(address)":"43a6307d","setServiceFeeDistributor(address)":"fbcc7b3d","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50","setStaking(address)":"8ff39099","setTntPaymentDiscountBps(uint16)":"893a88cd","setTntToken(address)":"9fb43d4c","setTreasury(address)":"f0f44260","submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":"c325ae12","submitJob(uint64,uint8,bytes)":"3413e8ee","submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":"58a9e743","submitResult(uint64,uint64,bytes)":"2d07e655","submitResults(uint64,uint64[],bytes[])":"aacdba9f","teeNonceFor(uint64)":"365e1439","terminateService(uint64)":"5b71c934","terminateServiceForNonPayment(uint64)":"13d36a66","tntPaymentDiscountBps()":"cdd3d5ba","tntToken()":"e3969617","transferBlueprint(uint64,address)":"8a4cf763","treasury()":"61d027b3","unpause()":"3f4ba83a","unregisterOperator(uint64)":"0afd3738","updateBlueprint(uint64,string,bytes32)":"c77f959b","updateOperatorPreferences(uint64,bytes,string)":"909eac24","withdrawRemainingEscrow(uint64)":"9dfb6100"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"BlueprintDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"BlueprintResourceRequirementsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"BlueprintTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"BlueprintUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"JobCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"JobResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"quotedOperators\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"JobSubmittedFromQuote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"OperatorJoinedService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorLeftService\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorPreferencesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"OperatorRewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"grossAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"developerRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"developerAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorPoolAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stakerPoolAmount\",\"type\":\"uint256\"}],\"name\":\"PaymentDistributed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardsClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ServiceRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"ServiceRequestedWithSecurity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"ServiceTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"triggeredBy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"dueAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"graceEndsAt\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requiredAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"escrowBalance\",\"type\":\"uint256\"}],\"name\":\"ServiceTerminatedForNonPayment\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"period\",\"type\":\"uint64\"}],\"name\":\"SubscriptionBilled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"addPermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"},{\"internalType\":\"uint256[2]\",\"name\":\"blsPopSignature\",\"type\":\"uint256[2]\"},{\"components\":[{\"internalType\":\"enum Types.TeeBackend\",\"name\":\"backend\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"expectedMeasurement\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonceBinding\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"expiresAt\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.TeeAttestationCommitment[]\",\"name\":\"teeCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.ApprovalParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"approveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"billSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"billSubscriptionBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"billedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"blsPopMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blueprintCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMasterRevision\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintMetadata\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSources\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"blueprintSupportedMemberships\",\"outputs\":[{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"memberships\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"canScheduleExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"canExit\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"cancelExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimRewardsAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"claimRewardsBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"name\":\"createBlueprint\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"}],\"name\":\"createServiceFromQuotes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"deactivateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultTntMinExposureBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"executeExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"expireServiceRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttlBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"totalCost\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"securityCommitments\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"resourceCommitments\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.QuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint64\",\"name\":\"extensionDuration\",\"type\":\"uint64\"}],\"name\":\"extendServiceFromQuotes\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"forceRemoveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundService\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"serviceIds\",\"type\":\"uint64[]\"}],\"name\":\"getBillableServices\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"billable\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprint\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.Blueprint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintDefinition\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"masterManagerRevision\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"hasConfig\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"subscriptionRate\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"subscriptionInterval\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"eventRate\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.BlueprintConfig\",\"name\":\"config\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"author\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"category\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"codeRepository\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"logo\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"website\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"license\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"profilingData\",\"type\":\"string\"}],\"internalType\":\"struct Types.BlueprintMetadata\",\"name\":\"metadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"paramsSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resultSchema\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.JobDefinition[]\",\"name\":\"jobs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"registrationSchema\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"requestSchema\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintSourceKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"registry\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"image\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag\",\"type\":\"string\"}],\"internalType\":\"struct Types.ImageRegistrySource\",\"name\":\"container\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.WasmRuntime\",\"name\":\"runtime\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.WasmSource\",\"name\":\"wasm\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintFetcherKind\",\"name\":\"fetcher\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"artifactUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"entrypoint\",\"type\":\"string\"}],\"internalType\":\"struct Types.NativeSource\",\"name\":\"native\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"cargoPackage\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"cargoBin\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"basePath\",\"type\":\"string\"}],\"internalType\":\"struct Types.TestingSource\",\"name\":\"testing\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Types.BlueprintArchitecture\",\"name\":\"arch\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.BlueprintOperatingSystem\",\"name\":\"os\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"sha256\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.BlueprintBinary[]\",\"name\":\"binaries\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Types.BlueprintSource[]\",\"name\":\"sources\",\"type\":\"tuple[]\"},{\"internalType\":\"enum Types.MembershipModel[]\",\"name\":\"supportedMemberships\",\"type\":\"uint8[]\"}],\"internalType\":\"struct Types.BlueprintDefinition\",\"name\":\"definition\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"getBlueprintResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getExitConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"minCommitmentDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"exitQueueDuration\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"forceExitAllowed\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"scheduledAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"pending\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ExitRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getExitStatus\",\"outputs\":[{\"internalType\":\"enum Types.ExitStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobCall\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"resultCount\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"payment\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRFQ\",\"type\":\"bool\"}],\"internalType\":\"struct Types.JobCall\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"}],\"name\":\"getJobEventRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"name\":\"getJobQuotedOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getJobQuotedPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorBlsPubkey\",\"outputs\":[{\"internalType\":\"uint256[4]\",\"name\":\"blsPubkey\",\"type\":\"uint256[4]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPreferences\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"internalType\":\"struct Types.OperatorPreferences\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorRegistration\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"updatedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"online\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorRegistration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorTotalActiveServices\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"terminatedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastPaymentAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.PricingModel\",\"name\":\"pricing\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ServiceStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.Service\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceEscrow\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalDeposited\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalReleased\",\"type\":\"uint256\"}],\"internalType\":\"struct PaymentLib.ServiceEscrow\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"joinedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"leftAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"}],\"internalType\":\"struct Types.ServiceOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"createdAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"operatorCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"approvalCount\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.MembershipModel\",\"name\":\"membership\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"minOperators\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxOperators\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"rejected\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"activated\",\"type\":\"bool\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.ServiceRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestResourceRequirements\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceRequestSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"getServiceRequestSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceResourceCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getServiceSecurityCommitments\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getServiceSecurityRequirements\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getTeeCommitmentRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"isPermittedCaller\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"isServiceActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isServiceOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"name\":\"joinService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"exposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityCommitment[]\",\"name\":\"commitments\",\"type\":\"tuple[]\"}],\"name\":\"joinServiceWithCommitments\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"leaveService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxBlueprintsPerOperator\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mbsmRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorStatusRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paymentSplit\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"pendingRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"preRegister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"priceOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"registrationInputs\",\"type\":\"bytes\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"rejectService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"removePermittedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestService\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"exposureBps\",\"type\":\"uint16[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithExposure\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum Types.AssetKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"struct Types.Asset\",\"name\":\"asset\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"maxExposureBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.AssetSecurityRequirement[]\",\"name\":\"securityRequirements\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"permittedCallers\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"ttl\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum Types.ConfidentialityPolicy\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"name\":\"requestServiceWithSecurity\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"rewardTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardVaults\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"scheduleExit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"serviceFeeDistributor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"count\",\"type\":\"uint64\"}],\"internalType\":\"struct Types.ResourceCommitment[]\",\"name\":\"requirements\",\"type\":\"tuple[]\"}],\"name\":\"setBlueprintResourceRequirements\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minExposureBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultTntMinExposureBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8[]\",\"name\":\"jobIndexes\",\"type\":\"uint8[]\"},{\"internalType\":\"uint256[]\",\"name\":\"rates\",\"type\":\"uint256[]\"}],\"name\":\"setJobEventRates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setMBSMRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newMax\",\"type\":\"uint32\"}],\"name\":\"setMaxBlueprintsPerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"registry\",\"type\":\"address\"}],\"name\":\"setOperatorStatusRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"developerBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"protocolBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"operatorBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"stakerBps\",\"type\":\"uint16\"}],\"internalType\":\"struct Types.PaymentSplit\",\"name\":\"split\",\"type\":\"tuple\"}],\"name\":\"setPaymentSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setPriceOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vaults\",\"type\":\"address\"}],\"name\":\"setRewardVaults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"setServiceFeeDistributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"discountBps\",\"type\":\"uint16\"}],\"name\":\"setTntPaymentDiscountBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setTntToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"signerBitmap\",\"type\":\"uint256\"},{\"internalType\":\"uint256[2]\",\"name\":\"aggregatedSignature\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[4]\",\"name\":\"aggregatedPubkey\",\"type\":\"uint256[4]\"}],\"name\":\"submitAggregatedResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"}],\"name\":\"submitJob\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"inputs\",\"type\":\"bytes\"},{\"components\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"jobIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expiry\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"confidentiality\",\"type\":\"uint8\"}],\"internalType\":\"struct Types.JobQuoteDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"internalType\":\"struct Types.SignedJobQuote[]\",\"name\":\"quotes\",\"type\":\"tuple[]\"}],\"name\":\"submitJobFromQuote\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"callId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"submitResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64[]\",\"name\":\"callIds\",\"type\":\"uint64[]\"},{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"name\":\"submitResults\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"requestId\",\"type\":\"uint64\"}],\"name\":\"teeNonceFor\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"terminateServiceForNonPayment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntPaymentDiscountBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tntToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"}],\"name\":\"unregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"metadataUri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"updateBlueprint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"rpcAddress\",\"type\":\"string\"}],\"name\":\"updateOperatorPreferences\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"withdrawRemainingEscrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"details\":\"Derive resultCount from getJobCall(serviceId, callId).resultCount\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The updated ECDSA public key (may be empty if unchanged)\",\"operator\":\"The operator address\",\"rpcAddress\":\"The updated RPC endpoint (may be empty if unchanged)\"}},\"OperatorRegistered(uint64,address,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint ID\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity\",\"operator\":\"The operator address (wallet)\",\"rpcAddress\":\"The operator's RPC endpoint\"}}},\"kind\":\"dev\",\"methods\":{\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"details\":\"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in \\u2014 protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile.\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"params\":{\"definition\":\"Fully populated blueprint definition struct\"},\"returns\":{\"blueprintId\":\"The new blueprint ID\"}},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"details\":\"No approval flow needed - operators have pre-committed via signatures\",\"params\":{\"blueprintId\":\"The blueprint to use\",\"config\":\"Service configuration\",\"permittedCallers\":\"Addresses allowed to call jobs\",\"quotes\":\"Array of signed quotes from operators\",\"ttl\":\"Service time-to-live (must match quotes)\"}},\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"expireServiceRequest(uint64)\":{\"details\":\"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window.\"},\"forceRemoveOperator(uint64,address)\":{\"params\":{\"operator\":\"The operator to remove\",\"serviceId\":\"The service ID\"}},\"getOperatorBlsPubkey(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"blsPubkey\":\"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered\"}},\"getOperatorPublicKey(uint64,address)\":{\"details\":\"Returns the key used for signing/verifying gossip messages\"},\"getOperatorTotalActiveServices(address)\":{\"params\":{\"operator\":\"The operator address\"},\"returns\":{\"count\":\"Total number of active services the operator is part of\"}},\"getServiceResourceCommitmentHash(uint64,address)\":{\"params\":{\"operator\":\"The operator address\",\"serviceId\":\"The service ID\"},\"returns\":{\"_0\":\"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)\"}},\"getTeeCommitmentRoot(uint64,address)\":{\"details\":\"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"registerOperator(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to register for\",\"ecdsaPublicKey\":\"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)\",\"rpcAddress\":\"The operator's RPC endpoint URL\"}},\"registerOperator(uint64,bytes,string,bytes)\":{\"params\":{\"registrationInputs\":\"Encoded payload validated by blueprint's schema\"}},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"details\":\"Each operator must provide security commitments matching these requirements when approving\"},\"rewardTokens(address)\":{\"details\":\"Convenience view; mappings are not enumerable.\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"params\":{\"split\":\"The new split configuration\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}},\"setStaking(address)\":{\"params\":{\"staking\":\"The IStaking implementation\"}},\"setTreasury(address)\":{\"params\":{\"treasury\":\"The treasury address\"}},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"details\":\"Only valid for jobs where requiresAggregation returns true\",\"params\":{\"aggregatedPubkey\":\"The aggregated public key [x0, x1, y0, y1]\",\"aggregatedSignature\":\"The aggregated BLS signature [x, y]\",\"callId\":\"The job call ID\",\"output\":\"The aggregated output data\",\"serviceId\":\"The service ID\",\"signerBitmap\":\"Bitmap indicating which operators signed (bit i = operator i in service)\"}},\"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"params\":{\"inputs\":\"Encoded job parameters\",\"jobIndex\":\"The job type index\",\"quotes\":\"Array of signed quotes from operators\",\"serviceId\":\"The service ID\"}},\"updateOperatorPreferences(uint64,bytes,string)\":{\"params\":{\"blueprintId\":\"The blueprint to update preferences for\",\"ecdsaPublicKey\":\"New ECDSA public key (pass empty bytes to keep unchanged)\",\"rpcAddress\":\"New RPC endpoint (pass empty string to keep unchanged)\"}}},\"title\":\"ITangleFull\",\"version\":1},\"userdoc\":{\"events\":{\"JobCompleted(uint64,uint64)\":{\"notice\":\"Emitted when a job reaches its required result threshold\"},\"JobSubmittedFromQuote(uint64,uint64,uint8,address,address[],uint256,bytes)\":{\"notice\":\"Emitted when a job is submitted via RFQ with signed operator quotes\"},\"OperatorPreferencesUpdated(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator updates their preferences\"},\"OperatorRegistered(uint64,address,bytes,string)\":{\"notice\":\"Emitted when an operator registers for a blueprint\"}},\"kind\":\"user\",\"methods\":{\"addPermittedCaller(uint64,address)\":{\"notice\":\"Add a permitted caller to a service\"},\"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))\":{\"notice\":\"Approve a service request as one of its operators.\"},\"billSubscription(uint64)\":{\"notice\":\"Bill a subscription service for the current period\"},\"billSubscriptionBatch(uint64[])\":{\"notice\":\"Bill multiple subscription services in one call\"},\"blsPopMessage(address,uint256[4])\":{\"notice\":\"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator.\"},\"blueprintCount()\":{\"notice\":\"Get current blueprint count\"},\"blueprintMasterRevision(uint64)\":{\"notice\":\"Get master blueprint revision\"},\"blueprintMetadata(uint64)\":{\"notice\":\"Get blueprint metadata and URI\"},\"blueprintOperatorCount(uint64)\":{\"notice\":\"Get number of operators for a blueprint\"},\"blueprintSources(uint64)\":{\"notice\":\"Get blueprint sources\"},\"blueprintSupportedMemberships(uint64)\":{\"notice\":\"Get blueprint supported membership models\"},\"canScheduleExit(uint64,address)\":{\"notice\":\"Check if operator can schedule exit now\"},\"cancelExit(uint64)\":{\"notice\":\"Cancel a scheduled exit before execution\"},\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"claimRewards()\":{\"notice\":\"Claim accumulated rewards (native token)\"},\"claimRewards(address)\":{\"notice\":\"Claim accumulated rewards for a specific token\"},\"claimRewardsAll()\":{\"notice\":\"Claim accumulated rewards for all pending tokens\"},\"claimRewardsBatch(address[])\":{\"notice\":\"Claim accumulated rewards for multiple tokens\"},\"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))\":{\"notice\":\"Create a blueprint from an encoded definition that includes schemas and job metadata\"},\"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)\":{\"notice\":\"Create a service instantly using pre-signed operator quotes\"},\"deactivateBlueprint(uint64)\":{\"notice\":\"Deactivate a blueprint\"},\"defaultTntMinExposureBps()\":{\"notice\":\"Get default TNT min exposure bps\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeExit(uint64)\":{\"notice\":\"Execute a scheduled exit after the queue delay\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"expireServiceRequest(uint64)\":{\"notice\":\"Permissionlessly expire a stale service request and refund the requester.\"},\"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)\":{\"notice\":\"Extend a service using pre-signed operator quotes\"},\"forceExit(uint64,address)\":{\"notice\":\"Force exit an operator from a service (if permitted by config)\"},\"forceRemoveOperator(uint64,address)\":{\"notice\":\"Force remove an operator from a service (blueprint manager only)\"},\"fundService(uint64,uint256)\":{\"notice\":\"Fund a service escrow balance\"},\"getBillableServices(uint64[])\":{\"notice\":\"Get billable services from a list of candidates\"},\"getBlueprint(uint64)\":{\"notice\":\"Get blueprint info\"},\"getBlueprintConfig(uint64)\":{\"notice\":\"Get blueprint configuration\"},\"getBlueprintDefinition(uint64)\":{\"notice\":\"Get the original blueprint definition\"},\"getBlueprintResourceRequirements(uint64)\":{\"notice\":\"Get default resource requirements for a blueprint\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getExitConfig(uint64)\":{\"notice\":\"Get exit configuration for a service\"},\"getExitRequest(uint64,address)\":{\"notice\":\"Get exit request for an operator\"},\"getExitStatus(uint64,address)\":{\"notice\":\"Get exit status for an operator\"},\"getJobCall(uint64,uint64)\":{\"notice\":\"Get job call info\"},\"getJobEventRate(uint64,uint8)\":{\"notice\":\"Get the effective event rate for a specific job type\"},\"getJobQuotedOperators(uint64,uint64)\":{\"notice\":\"Get the quoted operators for an RFQ job\"},\"getJobQuotedPrice(uint64,uint64,address)\":{\"notice\":\"Get a quoted operator's price for an RFQ job\"},\"getOperatorBlsPubkey(uint64,address)\":{\"notice\":\"Get operator's BLS public key for a service\"},\"getOperatorPreferences(uint64,address)\":{\"notice\":\"Get operator preferences for a blueprint (includes ECDSA public key)\"},\"getOperatorPublicKey(uint64,address)\":{\"notice\":\"Get operator's ECDSA public key for gossip network identity\"},\"getOperatorRegistration(uint64,address)\":{\"notice\":\"Get operator registration for a blueprint\"},\"getOperatorTotalActiveServices(address)\":{\"notice\":\"Get total count of active services for an operator across all blueprints\"},\"getService(uint64)\":{\"notice\":\"Get service info\"},\"getServiceEscrow(uint64)\":{\"notice\":\"Get service escrow details\"},\"getServiceOperator(uint64,address)\":{\"notice\":\"Get operator info for a service\"},\"getServiceOperators(uint64)\":{\"notice\":\"Get the list of operators for a service\"},\"getServiceRequest(uint64)\":{\"notice\":\"Get service request\"},\"getServiceRequestResourceRequirements(uint64)\":{\"notice\":\"Get resource requirements for a service request\"},\"getServiceRequestSecurityCommitments(uint64,address)\":{\"notice\":\"Get security commitments for a service request by operator\"},\"getServiceRequestSecurityRequirements(uint64)\":{\"notice\":\"Get security requirements for a service request\"},\"getServiceResourceCommitmentHash(uint64,address)\":{\"notice\":\"Get the resource commitment hash for an operator in a service\"},\"getServiceSecurityCommitments(uint64,address)\":{\"notice\":\"Get persisted security commitments for an active service by operator\"},\"getServiceSecurityRequirements(uint64)\":{\"notice\":\"Get persisted security requirements for an active service\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"getTeeCommitmentRoot(uint64,address)\":{\"notice\":\"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service.\"},\"isOperatorRegistered(uint64,address)\":{\"notice\":\"Check if operator is registered for a blueprint\"},\"isPermittedCaller(uint64,address)\":{\"notice\":\"Check if address can call jobs on service\"},\"isServiceActive(uint64)\":{\"notice\":\"Check if service is active\"},\"isServiceOperator(uint64,address)\":{\"notice\":\"Check if address is operator in service\"},\"joinService(uint64,uint16)\":{\"notice\":\"Join an active service (Dynamic membership only)\"},\"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])\":{\"notice\":\"Join an active service with per-asset security commitments (Dynamic membership only)\"},\"leaveService(uint64)\":{\"notice\":\"Leave an active service (Dynamic membership only)\"},\"maxBlueprintsPerOperator()\":{\"notice\":\"Get max blueprints per operator\"},\"mbsmRegistry()\":{\"notice\":\"Get Master Blueprint Service Manager registry\"},\"metricsRecorder()\":{\"notice\":\"Get the metrics recorder address\"},\"operatorStatusRegistry()\":{\"notice\":\"Get operator status registry\"},\"pause()\":{\"notice\":\"Pause the protocol\"},\"paymentSplit()\":{\"notice\":\"Get the current payment split\"},\"pendingRewards(address)\":{\"notice\":\"Get pending rewards for an account (native token)\"},\"pendingRewards(address,address)\":{\"notice\":\"Get pending rewards for an account and token\"},\"preRegister(uint64)\":{\"notice\":\"Signal intent to register for a blueprint\"},\"priceOracle()\":{\"notice\":\"Get price oracle\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"registerOperator(uint64,bytes,string)\":{\"notice\":\"Register as operator for a blueprint\"},\"registerOperator(uint64,bytes,string,bytes)\":{\"notice\":\"Register as operator providing blueprint-specific registration inputs\"},\"rejectService(uint64)\":{\"notice\":\"Reject a service request (as operator)\"},\"removePermittedCaller(uint64,address)\":{\"notice\":\"Remove a permitted caller from a service\"},\"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a new service\"},\"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with explicit exposure commitments\"},\"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)\":{\"notice\":\"Request a service with multi-asset security requirements\"},\"rewardTokens(address)\":{\"notice\":\"List tokens with non-zero pending rewards for an account\"},\"rewardVaults()\":{\"notice\":\"Get reward vaults address\"},\"scheduleExit(uint64)\":{\"notice\":\"Schedule exit from an active service when exit queues are enabled\"},\"serviceCount()\":{\"notice\":\"Get current service count\"},\"serviceFeeDistributor()\":{\"notice\":\"Get service fee distributor\"},\"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])\":{\"notice\":\"Set default resource requirements for a blueprint (owner only)\"},\"setDefaultTntMinExposureBps(uint16)\":{\"notice\":\"Set default TNT min exposure bps\"},\"setJobEventRates(uint64,uint8[],uint256[])\":{\"notice\":\"Set event rate overrides for one or more job types in a blueprint\"},\"setMBSMRegistry(address)\":{\"notice\":\"Configure Master Blueprint Service Manager registry\"},\"setMaxBlueprintsPerOperator(uint32)\":{\"notice\":\"Set max blueprints per operator\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set the metrics recorder (optional)\"},\"setOperatorStatusRegistry(address)\":{\"notice\":\"Set operator status registry\"},\"setPaymentSplit((uint16,uint16,uint16,uint16))\":{\"notice\":\"Set the payment split configuration\"},\"setPriceOracle(address)\":{\"notice\":\"Configure price oracle\"},\"setRewardVaults(address)\":{\"notice\":\"Set reward vaults address\"},\"setServiceFeeDistributor(address)\":{\"notice\":\"Configure service fee distributor\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"},\"setStaking(address)\":{\"notice\":\"Set the staking module\"},\"setTntPaymentDiscountBps(uint16)\":{\"notice\":\"Set TNT payment discount bps\"},\"setTntToken(address)\":{\"notice\":\"Set TNT token address\"},\"setTreasury(address)\":{\"notice\":\"Set the protocol treasury\"},\"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])\":{\"notice\":\"Submit an aggregated BLS result for a job\"},\"submitJob(uint64,uint8,bytes)\":{\"notice\":\"Submit a job to a service\"},\"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])\":{\"notice\":\"Submit a job using signed operator price quotes (RFQ)\"},\"submitResult(uint64,uint64,bytes)\":{\"notice\":\"Submit a job result (as operator)\"},\"submitResults(uint64,uint64[],bytes[])\":{\"notice\":\"Submit multiple results in one transaction\"},\"teeNonceFor(uint64)\":{\"notice\":\"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request \\u2014 it eliminates cross-request attestation replay at approval time.\"},\"terminateService(uint64)\":{\"notice\":\"Terminate a service (as owner)\"},\"terminateServiceForNonPayment(uint64)\":{\"notice\":\"Permissionlessly terminate an unpaid subscription after grace period\"},\"tntPaymentDiscountBps()\":{\"notice\":\"Get TNT payment discount bps\"},\"tntToken()\":{\"notice\":\"Get TNT token address\"},\"transferBlueprint(uint64,address)\":{\"notice\":\"Transfer blueprint ownership\"},\"treasury()\":{\"notice\":\"Get the configured treasury\"},\"unpause()\":{\"notice\":\"Unpause the protocol\"},\"unregisterOperator(uint64)\":{\"notice\":\"Unregister from a blueprint\"},\"updateBlueprint(uint64,string,bytes32)\":{\"notice\":\"Update blueprint metadata\"},\"updateOperatorPreferences(uint64,bytes,string)\":{\"notice\":\"Update operator preferences for a blueprint\"},\"withdrawRemainingEscrow(uint64)\":{\"notice\":\"Withdraw remaining escrow after termination\"}},\"notice\":\"Complete Tangle interface including admin and slashing\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangle.sol\":\"ITangleFull\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/ITangle.sol\":{\"keccak256\":\"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494\",\"dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu\"]},\"src/interfaces/ITangleBlueprints.sol\":{\"keccak256\":\"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798\",\"dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF\"]},\"src/interfaces/ITangleJobs.sol\":{\"keccak256\":\"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47\",\"dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd\"]},\"src/interfaces/ITangleOperators.sol\":{\"keccak256\":\"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165\",\"dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve\"]},\"src/interfaces/ITangleRewards.sol\":{\"keccak256\":\"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5\",\"dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR\"]},\"src/interfaces/ITangleServices.sol\":{\"keccak256\":\"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0\",\"dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E\"]},\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x80b2cc257b1b9e0aa0ce4c14e3173cc38e9fa406fe0798da26c3c350d0e7cb1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62161bcc6cb8839b33fd5a17a93e20663b514223127013ca9c70c8603df29ef4\",\"dweb:/ipfs/QmUBMLjNafTujTr9AjjPQ9ptPM6HMcL3P1A4A5GZWPegB3\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9\",\"dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7\"]},\"src/libraries/PaymentLib.sol\":{\"keccak256\":\"0xcdc85aeb8967849d613ce0293e4e64729ea74ffe5f5c98baa156ddddd422e46d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c3a017ac3518db94e065fa9404177d411c57ef3fd8d7a9ab6782f56e80b4e86\",\"dweb:/ipfs/QmcUD7TpV4vrpnKAFHA1Ps6dpVfyKimkcAFeSZpRTs7psA\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x2655d450cf1d777e686db636e9043d1a254f9827914a21e402af855807158681\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3004a6cc8b98c48a0116b41b2583a5a569e0aed12de4d1392a6728f9f3337289\",\"dweb:/ipfs/QmcsuBJCvndcsppxdonTAkUXAqzyE2rk4kzTsRrj4DQHSW\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x8f5f084d6593a56434265e9dcafe8bfbab922ac37a258834f21dc1903373b7aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efb3d3a9a10137d424dba09091f4a4ca4998a7b1a99402eacdd5f82f2e51a996\",\"dweb:/ipfs/QmcnogjJFWN8UZVpSZbv4f3KbXcibPbd8cDUyZZgZxhP2f\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"manager","type":"address","indexed":false},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintCreated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true}],"type":"event","name":"BlueprintDeactivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"uint256","name":"count","type":"uint256","indexed":false}],"type":"event","name":"BlueprintResourceRequirementsSet","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true}],"type":"event","name":"BlueprintTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"string","name":"metadataUri","type":"string","indexed":false},{"internalType":"bytes32","name":"metadataHash","type":"bytes32","indexed":false}],"type":"event","name":"BlueprintUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true}],"type":"event","name":"JobCompleted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"JobResultSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"callId","type":"uint64","indexed":true},{"internalType":"uint8","name":"jobIndex","type":"uint8","indexed":false},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address[]","name":"quotedOperators","type":"address[]","indexed":false},{"internalType":"uint256","name":"totalPrice","type":"uint256","indexed":false},{"internalType":"bytes","name":"inputs","type":"bytes","indexed":false}],"type":"event","name":"JobSubmittedFromQuote","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"exposureBps","type":"uint16","indexed":false}],"type":"event","name":"OperatorJoinedService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorLeftService","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorPreferencesUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes","indexed":false},{"internalType":"string","name":"rpcAddress","type":"string","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"OperatorRewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorUnregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"grossAmount","type":"uint256","indexed":false},{"internalType":"address","name":"developerRecipient","type":"address","indexed":false},{"internalType":"uint256","name":"developerAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"operatorPoolAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"stakerPoolAmount","type":"uint256","indexed":false}],"type":"event","name":"PaymentDistributed","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"RewardsClaimed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceActivated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceApproved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"ServiceRejected","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8","indexed":false}],"type":"event","name":"ServiceRequestedWithSecurity","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true}],"type":"event","name":"ServiceTerminated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"triggeredBy","type":"address","indexed":true},{"internalType":"uint64","name":"dueAt","type":"uint64","indexed":false},{"internalType":"uint64","name":"graceEndsAt","type":"uint64","indexed":false},{"internalType":"uint256","name":"requiredAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"escrowBalance","type":"uint256","indexed":false}],"type":"event","name":"ServiceTerminatedForNonPayment","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint64","name":"period","type":"uint64","indexed":false}],"type":"event","name":"SubscriptionBilled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"addPermittedCaller"},{"inputs":[{"internalType":"struct Types.ApprovalParams","name":"params","type":"tuple","components":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"},{"internalType":"uint256[2]","name":"blsPopSignature","type":"uint256[2]"},{"internalType":"struct Types.TeeAttestationCommitment[]","name":"teeCommitments","type":"tuple[]","components":[{"internalType":"enum Types.TeeBackend","name":"backend","type":"uint8"},{"internalType":"bytes32","name":"expectedMeasurement","type":"bytes32"},{"internalType":"bytes32","name":"nonceBinding","type":"bytes32"},{"internalType":"uint64","name":"expiresAt","type":"uint64"}]}]}],"stateMutability":"nonpayable","type":"function","name":"approveService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"billSubscription"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"billSubscriptionBatch","outputs":[{"internalType":"uint256","name":"totalBilled","type":"uint256"},{"internalType":"uint256","name":"billedCount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}],"stateMutability":"view","type":"function","name":"blsPopMessage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blueprintCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMasterRevision","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintMetadata","outputs":[{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSources","outputs":[{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"blueprintSupportedMemberships","outputs":[{"internalType":"enum Types.MembershipModel[]","name":"memberships","type":"uint8[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"canScheduleExit","outputs":[{"internalType":"bool","name":"canExit","type":"bool"},{"internalType":"string","name":"reason","type":"string"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"cancelExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"claimRewards"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimRewardsAll"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"claimRewardsBatch"},{"inputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}],"stateMutability":"nonpayable","type":"function","name":"createBlueprint","outputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"stateMutability":"payable","type":"function","name":"createServiceFromQuotes","outputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"deactivateBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"defaultTntMinExposureBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeExit"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"expireServiceRequest"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct Types.SignedQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.QuoteDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint64","name":"ttlBlocks","type":"uint64"},{"internalType":"uint256","name":"totalCost","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"securityCommitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]},{"internalType":"struct Types.ResourceCommitment[]","name":"resourceCommitments","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]},{"internalType":"uint64","name":"extensionDuration","type":"uint64"}],"stateMutability":"payable","type":"function","name":"extendServiceFromQuotes"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceExit"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"forceRemoveOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"fundService"},{"inputs":[{"internalType":"uint64[]","name":"serviceIds","type":"uint64[]"}],"stateMutability":"view","type":"function","name":"getBillableServices","outputs":[{"internalType":"uint64[]","name":"billable","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprint","outputs":[{"internalType":"struct Types.Blueprint","name":"","type":"tuple","components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintConfig","outputs":[{"internalType":"struct Types.BlueprintConfig","name":"","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintDefinition","outputs":[{"internalType":"struct Types.BlueprintDefinition","name":"definition","type":"tuple","components":[{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint32","name":"masterManagerRevision","type":"uint32"},{"internalType":"bool","name":"hasConfig","type":"bool"},{"internalType":"struct Types.BlueprintConfig","name":"config","type":"tuple","components":[{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"uint256","name":"subscriptionRate","type":"uint256"},{"internalType":"uint64","name":"subscriptionInterval","type":"uint64"},{"internalType":"uint256","name":"eventRate","type":"uint256"}]},{"internalType":"struct Types.BlueprintMetadata","name":"metadata","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"author","type":"string"},{"internalType":"string","name":"category","type":"string"},{"internalType":"string","name":"codeRepository","type":"string"},{"internalType":"string","name":"logo","type":"string"},{"internalType":"string","name":"website","type":"string"},{"internalType":"string","name":"license","type":"string"},{"internalType":"string","name":"profilingData","type":"string"}]},{"internalType":"struct Types.JobDefinition[]","name":"jobs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes","name":"paramsSchema","type":"bytes"},{"internalType":"bytes","name":"resultSchema","type":"bytes"}]},{"internalType":"bytes","name":"registrationSchema","type":"bytes"},{"internalType":"bytes","name":"requestSchema","type":"bytes"},{"internalType":"struct Types.BlueprintSource[]","name":"sources","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintSourceKind","name":"kind","type":"uint8"},{"internalType":"struct Types.ImageRegistrySource","name":"container","type":"tuple","components":[{"internalType":"string","name":"registry","type":"string"},{"internalType":"string","name":"image","type":"string"},{"internalType":"string","name":"tag","type":"string"}]},{"internalType":"struct Types.WasmSource","name":"wasm","type":"tuple","components":[{"internalType":"enum Types.WasmRuntime","name":"runtime","type":"uint8"},{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.NativeSource","name":"native","type":"tuple","components":[{"internalType":"enum Types.BlueprintFetcherKind","name":"fetcher","type":"uint8"},{"internalType":"string","name":"artifactUri","type":"string"},{"internalType":"string","name":"entrypoint","type":"string"}]},{"internalType":"struct Types.TestingSource","name":"testing","type":"tuple","components":[{"internalType":"string","name":"cargoPackage","type":"string"},{"internalType":"string","name":"cargoBin","type":"string"},{"internalType":"string","name":"basePath","type":"string"}]},{"internalType":"struct Types.BlueprintBinary[]","name":"binaries","type":"tuple[]","components":[{"internalType":"enum Types.BlueprintArchitecture","name":"arch","type":"uint8"},{"internalType":"enum Types.BlueprintOperatingSystem","name":"os","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes32","name":"sha256","type":"bytes32"}]}]},{"internalType":"enum Types.MembershipModel[]","name":"supportedMemberships","type":"uint8[]"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBlueprintResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExitConfig","outputs":[{"internalType":"struct Types.ExitConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"minCommitmentDuration","type":"uint64"},{"internalType":"uint64","name":"exitQueueDuration","type":"uint64"},{"internalType":"bool","name":"forceExitAllowed","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitRequest","outputs":[{"internalType":"struct Types.ExitRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"scheduledAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"pending","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getExitStatus","outputs":[{"internalType":"enum Types.ExitStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobCall","outputs":[{"internalType":"struct Types.JobCall","name":"","type":"tuple","components":[{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint32","name":"resultCount","type":"uint32"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"bool","name":"completed","type":"bool"},{"internalType":"bool","name":"isRFQ","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"}],"stateMutability":"view","type":"function","name":"getJobEventRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getJobQuotedOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getJobQuotedPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorBlsPubkey","outputs":[{"internalType":"uint256[4]","name":"blsPubkey","type":"uint256[4]"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPreferences","outputs":[{"internalType":"struct Types.OperatorPreferences","name":"","type":"tuple","components":[{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}]}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorPublicKey","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorRegistration","outputs":[{"internalType":"struct Types.OperatorRegistration","name":"","type":"tuple","components":[{"internalType":"uint64","name":"registeredAt","type":"uint64"},{"internalType":"uint64","name":"updatedAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"},{"internalType":"bool","name":"online","type":"bool"}]}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorTotalActiveServices","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getService","outputs":[{"internalType":"struct Types.Service","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint64","name":"terminatedAt","type":"uint64"},{"internalType":"uint64","name":"lastPaymentAt","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"enum Types.PricingModel","name":"pricing","type":"uint8"},{"internalType":"enum Types.ServiceStatus","name":"status","type":"uint8"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceEscrow","outputs":[{"internalType":"struct PaymentLib.ServiceEscrow","name":"","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalDeposited","type":"uint256"},{"internalType":"uint256","name":"totalReleased","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceOperator","outputs":[{"internalType":"struct Types.ServiceOperator","name":"","type":"tuple","components":[{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"uint64","name":"joinedAt","type":"uint64"},{"internalType":"uint64","name":"leftAt","type":"uint64"},{"internalType":"bool","name":"active","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequest","outputs":[{"internalType":"struct Types.ServiceRequest","name":"","type":"tuple","components":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"requester","type":"address"},{"internalType":"uint64","name":"createdAt","type":"uint64"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"operatorCount","type":"uint32"},{"internalType":"uint32","name":"approvalCount","type":"uint32"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.MembershipModel","name":"membership","type":"uint8"},{"internalType":"uint32","name":"minOperators","type":"uint32"},{"internalType":"uint32","name":"maxOperators","type":"uint32"},{"internalType":"bool","name":"rejected","type":"bool"},{"internalType":"bool","name":"activated","type":"bool"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestResourceRequirements","outputs":[{"internalType":"struct Types.ResourceCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceRequestSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceResourceCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getServiceSecurityCommitments","outputs":[{"internalType":"struct Types.AssetSecurityCommitment[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getServiceSecurityRequirements","outputs":[{"internalType":"struct Types.AssetSecurityRequirement[]","name":"","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getTeeCommitmentRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperatorRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"view","type":"function","name":"isPermittedCaller","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"isServiceActive","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isServiceOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"joinService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint16","name":"exposureBps","type":"uint16"},{"internalType":"struct Types.AssetSecurityCommitment[]","name":"commitments","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"exposureBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"joinServiceWithCommitments"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"leaveService"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxBlueprintsPerOperator","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mbsmRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorStatusRegistry","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paymentSplit","outputs":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"preRegister"},{"inputs":[],"stateMutability":"view","type":"function","name":"priceOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"},{"internalType":"bytes","name":"registrationInputs","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"rejectService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"caller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removePermittedCaller"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestService","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint16[]","name":"exposureBps","type":"uint16[]"},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithExposure","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"struct Types.AssetSecurityRequirement[]","name":"securityRequirements","type":"tuple[]","components":[{"internalType":"struct Types.Asset","name":"asset","type":"tuple","components":[{"internalType":"enum Types.AssetKind","name":"kind","type":"uint8"},{"internalType":"address","name":"token","type":"address"}]},{"internalType":"uint16","name":"minExposureBps","type":"uint16"},{"internalType":"uint16","name":"maxExposureBps","type":"uint16"}]},{"internalType":"bytes","name":"config","type":"bytes"},{"internalType":"address[]","name":"permittedCallers","type":"address[]"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"paymentAmount","type":"uint256"},{"internalType":"enum Types.ConfidentialityPolicy","name":"confidentiality","type":"uint8"}],"stateMutability":"payable","type":"function","name":"requestServiceWithSecurity","outputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"rewardTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardVaults","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"scheduleExit"},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceCount","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"serviceFeeDistributor","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"struct Types.ResourceCommitment[]","name":"requirements","type":"tuple[]","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"uint64","name":"count","type":"uint64"}]}],"stateMutability":"nonpayable","type":"function","name":"setBlueprintResourceRequirements"},{"inputs":[{"internalType":"uint16","name":"minExposureBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setDefaultTntMinExposureBps"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8[]","name":"jobIndexes","type":"uint8[]"},{"internalType":"uint256[]","name":"rates","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setJobEventRates"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMBSMRegistry"},{"inputs":[{"internalType":"uint32","name":"newMax","type":"uint32"}],"stateMutability":"nonpayable","type":"function","name":"setMaxBlueprintsPerOperator"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorStatusRegistry"},{"inputs":[{"internalType":"struct Types.PaymentSplit","name":"split","type":"tuple","components":[{"internalType":"uint16","name":"developerBps","type":"uint16"},{"internalType":"uint16","name":"protocolBps","type":"uint16"},{"internalType":"uint16","name":"operatorBps","type":"uint16"},{"internalType":"uint16","name":"stakerBps","type":"uint16"}]}],"stateMutability":"nonpayable","type":"function","name":"setPaymentSplit"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPriceOracle"},{"inputs":[{"internalType":"address","name":"vaults","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setRewardVaults"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setServiceFeeDistributor"},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"},{"inputs":[{"internalType":"address","name":"staking","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setStaking"},{"inputs":[{"internalType":"uint16","name":"discountBps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setTntPaymentDiscountBps"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTntToken"},{"inputs":[{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setTreasury"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"uint256","name":"signerBitmap","type":"uint256"},{"internalType":"uint256[2]","name":"aggregatedSignature","type":"uint256[2]"},{"internalType":"uint256[4]","name":"aggregatedPubkey","type":"uint256[4]"}],"stateMutability":"nonpayable","type":"function","name":"submitAggregatedResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"}],"stateMutability":"payable","type":"function","name":"submitJob","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"bytes","name":"inputs","type":"bytes"},{"internalType":"struct Types.SignedJobQuote[]","name":"quotes","type":"tuple[]","components":[{"internalType":"struct Types.JobQuoteDetails","name":"details","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint8","name":"jobIndex","type":"uint8"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"expiry","type":"uint64"},{"internalType":"uint8","name":"confidentiality","type":"uint8"}]},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"address","name":"operator","type":"address"}]}],"stateMutability":"payable","type":"function","name":"submitJobFromQuote","outputs":[{"internalType":"uint64","name":"callId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"callId","type":"uint64"},{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitResult"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64[]","name":"callIds","type":"uint64[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"submitResults"},{"inputs":[{"internalType":"uint64","name":"requestId","type":"uint64"}],"stateMutability":"view","type":"function","name":"teeNonceFor","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateService"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"terminateServiceForNonPayment"},{"inputs":[],"stateMutability":"view","type":"function","name":"tntPaymentDiscountBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tntToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferBlueprint"},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"unregisterOperator"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"string","name":"metadataUri","type":"string"},{"internalType":"bytes32","name":"metadataHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateBlueprint"},{"inputs":[{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"bytes","name":"ecdsaPublicKey","type":"bytes"},{"internalType":"string","name":"rpcAddress","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"updateOperatorPreferences"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"withdrawRemainingEscrow"}],"devdoc":{"kind":"dev","methods":{"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"details":"Single entrypoint covering every approval mode. Pass empty/zero fields on `ApprovalParams` to opt out of the corresponding capability: - `securityCommitments == []`: no per-asset commitment supplied (only valid when the request has no security requirements OR the only requirement is the protocol-default TNT requirement, which is auto-filled at min-exposure). - `blsPubkey == [0,0,0,0]`: operator does NOT register a BLS pubkey for aggregated job-result signing. BLS is opt-in — protocol accepts any operator. - `teeCommitments == []`: operator does NOT bind to a TEE attestation profile."},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"params":{"definition":"Fully populated blueprint definition struct"},"returns":{"blueprintId":"The new blueprint ID"}},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"details":"No approval flow needed - operators have pre-committed via signatures","params":{"blueprintId":"The blueprint to use","config":"Service configuration","permittedCallers":"Addresses allowed to call jobs","quotes":"Array of signed quotes from operators","ttl":"Service time-to-live (must match quotes)"}},"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"expireServiceRequest(uint64)":{"details":"Anyone may call once `block.timestamp > req.createdAt + grace` (grace is `_requestExpiryGracePeriod` or `ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD`). Reverts if the request was already rejected, already activated, or still within its grace window."},"forceRemoveOperator(uint64,address)":{"params":{"operator":"The operator to remove","serviceId":"The service ID"}},"getOperatorBlsPubkey(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"blsPubkey":"The BLS G2 public key [x0, x1, y0, y1], all zeros if not registered"}},"getOperatorPublicKey(uint64,address)":{"details":"Returns the key used for signing/verifying gossip messages"},"getOperatorTotalActiveServices(address)":{"params":{"operator":"The operator address"},"returns":{"count":"Total number of active services the operator is part of"}},"getServiceResourceCommitmentHash(uint64,address)":{"params":{"operator":"The operator address","serviceId":"The service ID"},"returns":{"_0":"The keccak256 of EIP-712-hashed ResourceCommitment[] (bytes32(0) if none)"}},"getTeeCommitmentRoot(uint64,address)":{"details":"Returns `bytes32(0)` if the operator approved without TEE commitments. The full array was emitted at approval time in `TeeCommitmentsRecorded`; slashing / provisioning oracles supply the array as a witness and verify `keccak256(abi.encode(witness)) == getTeeCommitmentRoot(serviceId, operator)`."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"registerOperator(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to register for","ecdsaPublicKey":"The ECDSA public key for gossip network identity This key is used for signing/verifying messages in the P2P gossip network and may differ from the wallet key (msg.sender)","rpcAddress":"The operator's RPC endpoint URL"}},"registerOperator(uint64,bytes,string,bytes)":{"params":{"registrationInputs":"Encoded payload validated by blueprint's schema"}},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"details":"Each operator must provide security commitments matching these requirements when approving"},"rewardTokens(address)":{"details":"Convenience view; mappings are not enumerable."},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"params":{"split":"The new split configuration"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}},"setStaking(address)":{"params":{"staking":"The IStaking implementation"}},"setTreasury(address)":{"params":{"treasury":"The treasury address"}},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"details":"Only valid for jobs where requiresAggregation returns true","params":{"aggregatedPubkey":"The aggregated public key [x0, x1, y0, y1]","aggregatedSignature":"The aggregated BLS signature [x, y]","callId":"The job call ID","output":"The aggregated output data","serviceId":"The service ID","signerBitmap":"Bitmap indicating which operators signed (bit i = operator i in service)"}},"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"params":{"inputs":"Encoded job parameters","jobIndex":"The job type index","quotes":"Array of signed quotes from operators","serviceId":"The service ID"}},"updateOperatorPreferences(uint64,bytes,string)":{"params":{"blueprintId":"The blueprint to update preferences for","ecdsaPublicKey":"New ECDSA public key (pass empty bytes to keep unchanged)","rpcAddress":"New RPC endpoint (pass empty string to keep unchanged)"}}},"version":1},"userdoc":{"kind":"user","methods":{"addPermittedCaller(uint64,address)":{"notice":"Add a permitted caller to a service"},"approveService((uint64,((uint8,address),uint16)[],uint256[4],uint256[2],(uint8,bytes32,bytes32,uint64)[]))":{"notice":"Approve a service request as one of its operators."},"billSubscription(uint64)":{"notice":"Bill a subscription service for the current period"},"billSubscriptionBatch(uint64[])":{"notice":"Bill multiple subscription services in one call"},"blsPopMessage(address,uint256[4])":{"notice":"Build the canonical message an operator must sign with their BLS secret key to register a public key. Bound to chainId + verifying contract + operator."},"blueprintCount()":{"notice":"Get current blueprint count"},"blueprintMasterRevision(uint64)":{"notice":"Get master blueprint revision"},"blueprintMetadata(uint64)":{"notice":"Get blueprint metadata and URI"},"blueprintOperatorCount(uint64)":{"notice":"Get number of operators for a blueprint"},"blueprintSources(uint64)":{"notice":"Get blueprint sources"},"blueprintSupportedMemberships(uint64)":{"notice":"Get blueprint supported membership models"},"canScheduleExit(uint64,address)":{"notice":"Check if operator can schedule exit now"},"cancelExit(uint64)":{"notice":"Cancel a scheduled exit before execution"},"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"claimRewards()":{"notice":"Claim accumulated rewards (native token)"},"claimRewards(address)":{"notice":"Claim accumulated rewards for a specific token"},"claimRewardsAll()":{"notice":"Claim accumulated rewards for all pending tokens"},"claimRewardsBatch(address[])":{"notice":"Claim accumulated rewards for multiple tokens"},"createBlueprint((string,bytes32,address,uint32,bool,(uint8,uint8,uint32,uint32,uint256,uint64,uint256),(string,string,string,string,string,string,string,string,string),(string,string,string,bytes,bytes)[],bytes,bytes,(uint8,(string,string,string),(uint8,uint8,string,string),(uint8,string,string),(string,string,string),(uint8,uint8,string,bytes32)[])[],uint8[]))":{"notice":"Create a blueprint from an encoded definition that includes schemas and job metadata"},"createServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],bytes,address[],uint64)":{"notice":"Create a service instantly using pre-signed operator quotes"},"deactivateBlueprint(uint64)":{"notice":"Deactivate a blueprint"},"defaultTntMinExposureBps()":{"notice":"Get default TNT min exposure bps"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeExit(uint64)":{"notice":"Execute a scheduled exit after the queue delay"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"expireServiceRequest(uint64)":{"notice":"Permissionlessly expire a stale service request and refund the requester."},"extendServiceFromQuotes(uint64,((address,uint64,uint64,uint256,uint64,uint64,uint8,((uint8,address),uint16)[],(uint8,uint64)[]),bytes,address)[],uint64)":{"notice":"Extend a service using pre-signed operator quotes"},"forceExit(uint64,address)":{"notice":"Force exit an operator from a service (if permitted by config)"},"forceRemoveOperator(uint64,address)":{"notice":"Force remove an operator from a service (blueprint manager only)"},"fundService(uint64,uint256)":{"notice":"Fund a service escrow balance"},"getBillableServices(uint64[])":{"notice":"Get billable services from a list of candidates"},"getBlueprint(uint64)":{"notice":"Get blueprint info"},"getBlueprintConfig(uint64)":{"notice":"Get blueprint configuration"},"getBlueprintDefinition(uint64)":{"notice":"Get the original blueprint definition"},"getBlueprintResourceRequirements(uint64)":{"notice":"Get default resource requirements for a blueprint"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getExitConfig(uint64)":{"notice":"Get exit configuration for a service"},"getExitRequest(uint64,address)":{"notice":"Get exit request for an operator"},"getExitStatus(uint64,address)":{"notice":"Get exit status for an operator"},"getJobCall(uint64,uint64)":{"notice":"Get job call info"},"getJobEventRate(uint64,uint8)":{"notice":"Get the effective event rate for a specific job type"},"getJobQuotedOperators(uint64,uint64)":{"notice":"Get the quoted operators for an RFQ job"},"getJobQuotedPrice(uint64,uint64,address)":{"notice":"Get a quoted operator's price for an RFQ job"},"getOperatorBlsPubkey(uint64,address)":{"notice":"Get operator's BLS public key for a service"},"getOperatorPreferences(uint64,address)":{"notice":"Get operator preferences for a blueprint (includes ECDSA public key)"},"getOperatorPublicKey(uint64,address)":{"notice":"Get operator's ECDSA public key for gossip network identity"},"getOperatorRegistration(uint64,address)":{"notice":"Get operator registration for a blueprint"},"getOperatorTotalActiveServices(address)":{"notice":"Get total count of active services for an operator across all blueprints"},"getService(uint64)":{"notice":"Get service info"},"getServiceEscrow(uint64)":{"notice":"Get service escrow details"},"getServiceOperator(uint64,address)":{"notice":"Get operator info for a service"},"getServiceOperators(uint64)":{"notice":"Get the list of operators for a service"},"getServiceRequest(uint64)":{"notice":"Get service request"},"getServiceRequestResourceRequirements(uint64)":{"notice":"Get resource requirements for a service request"},"getServiceRequestSecurityCommitments(uint64,address)":{"notice":"Get security commitments for a service request by operator"},"getServiceRequestSecurityRequirements(uint64)":{"notice":"Get security requirements for a service request"},"getServiceResourceCommitmentHash(uint64,address)":{"notice":"Get the resource commitment hash for an operator in a service"},"getServiceSecurityCommitments(uint64,address)":{"notice":"Get persisted security commitments for an active service by operator"},"getServiceSecurityRequirements(uint64)":{"notice":"Get persisted security requirements for an active service"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"getTeeCommitmentRoot(uint64,address)":{"notice":"keccak256 root over an operator's `TeeAttestationCommitment[]` for a service."},"isOperatorRegistered(uint64,address)":{"notice":"Check if operator is registered for a blueprint"},"isPermittedCaller(uint64,address)":{"notice":"Check if address can call jobs on service"},"isServiceActive(uint64)":{"notice":"Check if service is active"},"isServiceOperator(uint64,address)":{"notice":"Check if address is operator in service"},"joinService(uint64,uint16)":{"notice":"Join an active service (Dynamic membership only)"},"joinServiceWithCommitments(uint64,uint16,((uint8,address),uint16)[])":{"notice":"Join an active service with per-asset security commitments (Dynamic membership only)"},"leaveService(uint64)":{"notice":"Leave an active service (Dynamic membership only)"},"maxBlueprintsPerOperator()":{"notice":"Get max blueprints per operator"},"mbsmRegistry()":{"notice":"Get Master Blueprint Service Manager registry"},"metricsRecorder()":{"notice":"Get the metrics recorder address"},"operatorStatusRegistry()":{"notice":"Get operator status registry"},"pause()":{"notice":"Pause the protocol"},"paymentSplit()":{"notice":"Get the current payment split"},"pendingRewards(address)":{"notice":"Get pending rewards for an account (native token)"},"pendingRewards(address,address)":{"notice":"Get pending rewards for an account and token"},"preRegister(uint64)":{"notice":"Signal intent to register for a blueprint"},"priceOracle()":{"notice":"Get price oracle"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"registerOperator(uint64,bytes,string)":{"notice":"Register as operator for a blueprint"},"registerOperator(uint64,bytes,string,bytes)":{"notice":"Register as operator providing blueprint-specific registration inputs"},"rejectService(uint64)":{"notice":"Reject a service request (as operator)"},"removePermittedCaller(uint64,address)":{"notice":"Remove a permitted caller from a service"},"requestService(uint64,address[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a new service"},"requestServiceWithExposure(uint64,address[],uint16[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with explicit exposure commitments"},"requestServiceWithSecurity(uint64,address[],((uint8,address),uint16,uint16)[],bytes,address[],uint64,address,uint256,uint8)":{"notice":"Request a service with multi-asset security requirements"},"rewardTokens(address)":{"notice":"List tokens with non-zero pending rewards for an account"},"rewardVaults()":{"notice":"Get reward vaults address"},"scheduleExit(uint64)":{"notice":"Schedule exit from an active service when exit queues are enabled"},"serviceCount()":{"notice":"Get current service count"},"serviceFeeDistributor()":{"notice":"Get service fee distributor"},"setBlueprintResourceRequirements(uint64,(uint8,uint64)[])":{"notice":"Set default resource requirements for a blueprint (owner only)"},"setDefaultTntMinExposureBps(uint16)":{"notice":"Set default TNT min exposure bps"},"setJobEventRates(uint64,uint8[],uint256[])":{"notice":"Set event rate overrides for one or more job types in a blueprint"},"setMBSMRegistry(address)":{"notice":"Configure Master Blueprint Service Manager registry"},"setMaxBlueprintsPerOperator(uint32)":{"notice":"Set max blueprints per operator"},"setMetricsRecorder(address)":{"notice":"Set the metrics recorder (optional)"},"setOperatorStatusRegistry(address)":{"notice":"Set operator status registry"},"setPaymentSplit((uint16,uint16,uint16,uint16))":{"notice":"Set the payment split configuration"},"setPriceOracle(address)":{"notice":"Configure price oracle"},"setRewardVaults(address)":{"notice":"Set reward vaults address"},"setServiceFeeDistributor(address)":{"notice":"Configure service fee distributor"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"},"setStaking(address)":{"notice":"Set the staking module"},"setTntPaymentDiscountBps(uint16)":{"notice":"Set TNT payment discount bps"},"setTntToken(address)":{"notice":"Set TNT token address"},"setTreasury(address)":{"notice":"Set the protocol treasury"},"submitAggregatedResult(uint64,uint64,bytes,uint256,uint256[2],uint256[4])":{"notice":"Submit an aggregated BLS result for a job"},"submitJob(uint64,uint8,bytes)":{"notice":"Submit a job to a service"},"submitJobFromQuote(uint64,uint8,bytes,((uint64,uint8,uint256,uint64,uint64,uint8),bytes,address)[])":{"notice":"Submit a job using signed operator price quotes (RFQ)"},"submitResult(uint64,uint64,bytes)":{"notice":"Submit a job result (as operator)"},"submitResults(uint64,uint64[],bytes[])":{"notice":"Submit multiple results in one transaction"},"teeNonceFor(uint64)":{"notice":"Canonical TEE attestation nonce binding for `requestId` on this contract on this chain. Operators MUST submit this exact value as `nonceBinding` in any `TeeAttestationCommitment` for the request — it eliminates cross-request attestation replay at approval time."},"terminateService(uint64)":{"notice":"Terminate a service (as owner)"},"terminateServiceForNonPayment(uint64)":{"notice":"Permissionlessly terminate an unpaid subscription after grace period"},"tntPaymentDiscountBps()":{"notice":"Get TNT payment discount bps"},"tntToken()":{"notice":"Get TNT token address"},"transferBlueprint(uint64,address)":{"notice":"Transfer blueprint ownership"},"treasury()":{"notice":"Get the configured treasury"},"unpause()":{"notice":"Unpause the protocol"},"unregisterOperator(uint64)":{"notice":"Unregister from a blueprint"},"updateBlueprint(uint64,string,bytes32)":{"notice":"Update blueprint metadata"},"updateOperatorPreferences(uint64,bytes,string)":{"notice":"Update operator preferences for a blueprint"},"withdrawRemainingEscrow(uint64)":{"notice":"Withdraw remaining escrow after termination"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangle.sol":"ITangleFull"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310","urls":["bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862","dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"src/interfaces/ITangle.sol":{"keccak256":"0x65317ba5e082e0085ecf1e2e6afff10d816eceaa8f38104bb77a3ed137a02251","urls":["bzz-raw://bf80e83e92eef7c581c769c4c241b00580bc0f278a5d137b6b7aee38a4e33494","dweb:/ipfs/QmSTu4i4TazNfmJrMhGQav8k24FWNZfr11i2E3k5U23Jeu"],"license":"MIT"},"src/interfaces/ITangleBlueprints.sol":{"keccak256":"0xaf9152e0f85700a269ac4683be7f14d604c28adffac9d3f598c4d636e2cd085d","urls":["bzz-raw://9167520c084b608a14718866e42541876b7e15c8f3c68a720087edb170e3e798","dweb:/ipfs/QmVEC2vw2VuNfqMJzpNe39yK6dVAUHRHnLG3dEbULeybqF"],"license":"MIT"},"src/interfaces/ITangleJobs.sol":{"keccak256":"0xc6d64b165aae31a3815a402fef19f6336ed0eafa60d64fc05323bb52ca79a0f0","urls":["bzz-raw://e314d4effb00258fbcaccc9ed3efc69500da729565798be483916c3ef0aabe47","dweb:/ipfs/QmRVUCQs688jmtrpzTWyBpJtHz4GsMvnxkXdiciMqXhPjd"],"license":"MIT"},"src/interfaces/ITangleOperators.sol":{"keccak256":"0x02f071be69aa0d19e5d8e2f46d7eb95f31e2b6a4801700fd5b2e6728d4940223","urls":["bzz-raw://a4581cf0c4f6ce041ca72dd65f55f7507b9dd548830c548a36adaba950cfa165","dweb:/ipfs/QmWr2cLcKXZFkDpaFm6CbHRcdbzBfpqaDTQwyYAR9Qc1ve"],"license":"MIT"},"src/interfaces/ITangleRewards.sol":{"keccak256":"0xc17384e99e1c19c8ce4b05c081ac9d63b6414f1d17c75de58f2e0919e7831741","urls":["bzz-raw://e34cc51ec1bdecf0f0909fa375bc245cd2761e00f0f60e7fff31c40728b48bb5","dweb:/ipfs/QmPPkdfawYRdLoV83G6YkFFCnh5qKqPH1nodaLTmVD5ALR"],"license":"MIT"},"src/interfaces/ITangleServices.sol":{"keccak256":"0xcd35629b25a9847d724bddc21486da34d8c44b0d00797b64ae1214da40e61cd4","urls":["bzz-raw://fc6f9e1b3213fe403193fc265332a51c18682ec5ccd91afae6686812dff2f5e0","dweb:/ipfs/QmSCeKYPezdMFymA2FeKZNjxFiDNj8UW8wj1p1WmbZ227E"],"license":"MIT"},"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x80b2cc257b1b9e0aa0ce4c14e3173cc38e9fa406fe0798da26c3c350d0e7cb1e","urls":["bzz-raw://62161bcc6cb8839b33fd5a17a93e20663b514223127013ca9c70c8603df29ef4","dweb:/ipfs/QmUBMLjNafTujTr9AjjPQ9ptPM6HMcL3P1A4A5GZWPegB3"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5","urls":["bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9","dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7"],"license":"MIT"},"src/libraries/PaymentLib.sol":{"keccak256":"0xcdc85aeb8967849d613ce0293e4e64729ea74ffe5f5c98baa156ddddd422e46d","urls":["bzz-raw://2c3a017ac3518db94e065fa9404177d411c57ef3fd8d7a9ab6782f56e80b4e86","dweb:/ipfs/QmcUD7TpV4vrpnKAFHA1Ps6dpVfyKimkcAFeSZpRTs7psA"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x2655d450cf1d777e686db636e9043d1a254f9827914a21e402af855807158681","urls":["bzz-raw://3004a6cc8b98c48a0116b41b2583a5a569e0aed12de4d1392a6728f9f3337289","dweb:/ipfs/QmcsuBJCvndcsppxdonTAkUXAqzyE2rk4kzTsRrj4DQHSW"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x8f5f084d6593a56434265e9dcafe8bfbab922ac37a258834f21dc1903373b7aa","urls":["bzz-raw://efb3d3a9a10137d424dba09091f4a4ca4998a7b1a99402eacdd5f82f2e51a996","dweb:/ipfs/QmcnogjJFWN8UZVpSZbv4f3KbXcibPbd8cDUyZZgZxhP2f"],"license":"MIT"}},"version":1},"id":76} \ No newline at end of file diff --git a/bindings/abi/ITangleSlashing.json b/bindings/abi/ITangleSlashing.json index b3d26d5e..d6b096dd 100644 --- a/bindings/abi/ITangleSlashing.json +++ b/bindings/abi/ITangleSlashing.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlashExecuted","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"cancelSlash(uint64,string)":"06079dc5","disputeSlash(uint64,string)":"77380c74","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","getExecutableSlashes(uint64,uint64)":"110f829b","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}}},\"title\":\"ITangleSlashing\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"}},\"notice\":\"Slashing interface for Tangle protocol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangleSlashing.sol\":\"ITangleSlashing\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x3e4b0ebc4520d36adb5cef0c4ba1d6224afae0f5b1996f11f38c61341ddae8b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6367a2fd47b3f699d5005cb192b03644690ec793f30ae2f17919be2ed2c191e8\",\"dweb:/ipfs/QmaatvcvEHjNeb3jtVv8sYH8ykMsJM2xu66K9Zt6mMZyWP\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9\",\"dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x0e38b96bd0160a2ca87b4da190c554b57d652ca10f5b17aa96b16fa2c7e8f6a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3955feb7a169072badab91245e85e1368395724b077d6372ad93bc2cc01f30c2\",\"dweb:/ipfs/QmeMHyuUqbvobygebBXrB8cSJgi1Kgs6zDcyh8mcBVTpy2\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"}],"devdoc":{"kind":"dev","methods":{"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangleSlashing.sol":"ITangleSlashing"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x3e4b0ebc4520d36adb5cef0c4ba1d6224afae0f5b1996f11f38c61341ddae8b6","urls":["bzz-raw://6367a2fd47b3f699d5005cb192b03644690ec793f30ae2f17919be2ed2c191e8","dweb:/ipfs/QmaatvcvEHjNeb3jtVv8sYH8ykMsJM2xu66K9Zt6mMZyWP"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5","urls":["bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9","dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x0e38b96bd0160a2ca87b4da190c554b57d652ca10f5b17aa96b16fa2c7e8f6a1","urls":["bzz-raw://3955feb7a169072badab91245e85e1368395724b077d6372ad93bc2cc01f30c2","dweb:/ipfs/QmeMHyuUqbvobygebBXrB8cSJgi1Kgs6zDcyh8mcBVTpy2"],"license":"MIT"}},"version":1},"id":46} \ No newline at end of file +{"abi":[{"type":"function","name":"cancelSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"disputeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeSlash","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"actualSlashed","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"executeSlashBatch","inputs":[{"name":"slashIds","type":"uint64[]","internalType":"uint64[]"}],"outputs":[{"name":"totalSlashed","type":"uint256","internalType":"uint256"},{"name":"executedCount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getExecutableSlashes","inputs":[{"name":"fromId","type":"uint64","internalType":"uint64"},{"name":"toId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"ids","type":"uint64[]","internalType":"uint64[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashConfig","components":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}]}],"stateMutability":"view"},{"type":"function","name":"getSlashProposal","inputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct SlashingLib.SlashProposal","components":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"proposer","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"},{"name":"proposedAt","type":"uint64","internalType":"uint64"},{"name":"executeAfter","type":"uint64","internalType":"uint64"},{"name":"status","type":"uint8","internalType":"enum SlashingLib.SlashStatus"},{"name":"disputeReason","type":"string","internalType":"string"},{"name":"disputer","type":"address","internalType":"address"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"disputedAt","type":"uint64","internalType":"uint64"},{"name":"disputeDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"proposeSlash","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"slashBps","type":"uint16","internalType":"uint16"},{"name":"evidence","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"slashId","type":"uint64","internalType":"uint64"}],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashConfig","inputs":[{"name":"disputeWindow","type":"uint64","internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","internalType":"bool"},{"name":"maxSlashBps","type":"uint16","internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","internalType":"uint64"},{"name":"disputeBond","type":"uint256","internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"SlashCancelled","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"canceller","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashConfigUpdated","inputs":[{"name":"disputeWindow","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"instantSlashEnabled","type":"bool","indexed":false,"internalType":"bool"},{"name":"maxSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"disputeResolutionDeadline","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"disputeBond","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SlashDisputed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"disputer","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SlashExecuted","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"actualSlashed","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SlashProposed","inputs":[{"name":"slashId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"proposer","type":"address","indexed":false,"internalType":"address"},{"name":"slashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"effectiveSlashBps","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidence","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"executeAfter","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"cancelSlash(uint64,string)":"06079dc5","disputeSlash(uint64,string)":"77380c74","executeSlash(uint64)":"a5bfbae4","executeSlashBatch(uint64[])":"b055449b","getExecutableSlashes(uint64,uint64)":"110f829b","getSlashConfig()":"8fc3b8b3","getSlashProposal(uint64)":"ef1b42a2","proposeSlash(uint64,address,uint16,bytes32)":"0472d2ff","setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":"72155d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"canceller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"SlashConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"name\":\"SlashExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"}],\"name\":\"SlashProposed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"cancelSlash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"disputeSlash\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"executeSlash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"actualSlashed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"slashIds\",\"type\":\"uint64[]\"}],\"name\":\"executeSlashBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSlashed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executedCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"fromId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"toId\",\"type\":\"uint64\"}],\"name\":\"getExecutableSlashes\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"ids\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSlashConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"internalType\":\"struct SlashingLib.SlashConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"name\":\"getSlashProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"effectiveSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"executeAfter\",\"type\":\"uint64\"},{\"internalType\":\"enum SlashingLib.SlashStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"disputeReason\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"disputedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"disputeDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct SlashingLib.SlashProposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"slashBps\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidence\",\"type\":\"bytes32\"}],\"name\":\"proposeSlash\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"slashId\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"disputeWindow\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"instantSlashEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxSlashBps\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"disputeResolutionDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"disputeBond\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"maxPendingSlashesPerOperator\",\"type\":\"uint16\"}],\"name\":\"setSlashConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"disputeSlash(uint64,string)\":{\"details\":\"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles.\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"params\":{\"evidence\":\"Evidence hash\",\"operator\":\"The operator to slash\",\"serviceId\":\"The service where violation occurred\",\"slashBps\":\"Slash percentage in basis points\"},\"returns\":{\"slashId\":\"The ID of the created slash proposal\"}},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"params\":{\"disputeBond\":\"Native asset bond required to dispute (0 = disabled)\",\"disputeResolutionDeadline\":\"How long SLASH_ADMIN has to resolve a dispute\",\"maxPendingSlashesPerOperator\":\"Cap on concurrent pending slashes per operator\"}}},\"title\":\"ITangleSlashing\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancelSlash(uint64,string)\":{\"notice\":\"Cancel a slash proposal\"},\"disputeSlash(uint64,string)\":{\"notice\":\"Dispute a slash proposal\"},\"executeSlash(uint64)\":{\"notice\":\"Execute a slash proposal\"},\"executeSlashBatch(uint64[])\":{\"notice\":\"Execute a batch of slashes\"},\"getExecutableSlashes(uint64,uint64)\":{\"notice\":\"Get list of executable slash IDs in a range\"},\"getSlashConfig()\":{\"notice\":\"Get current slashing configuration\"},\"getSlashProposal(uint64)\":{\"notice\":\"Get slash proposal details\"},\"proposeSlash(uint64,address,uint16,bytes32)\":{\"notice\":\"Propose a slash against an operator\"},\"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)\":{\"notice\":\"Update slashing configuration\"}},\"notice\":\"Slashing interface for Tangle protocol\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ITangleSlashing.sol\":\"ITangleSlashing\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/ITangleSlashing.sol\":{\"keccak256\":\"0x80b2cc257b1b9e0aa0ce4c14e3173cc38e9fa406fe0798da26c3c350d0e7cb1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62161bcc6cb8839b33fd5a17a93e20663b514223127013ca9c70c8603df29ef4\",\"dweb:/ipfs/QmUBMLjNafTujTr9AjjPQ9ptPM6HMcL3P1A4A5GZWPegB3\"]},\"src/libraries/Errors.sol\":{\"keccak256\":\"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9\",\"dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7\"]},\"src/libraries/SlashingLib.sol\":{\"keccak256\":\"0x2655d450cf1d777e686db636e9043d1a254f9827914a21e402af855807158681\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3004a6cc8b98c48a0116b41b2583a5a569e0aed12de4d1392a6728f9f3337289\",\"dweb:/ipfs/QmcsuBJCvndcsppxdonTAkUXAqzyE2rk4kzTsRrj4DQHSW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"canceller","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashCancelled","anonymous":false},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64","indexed":false},{"internalType":"bool","name":"instantSlashEnabled","type":"bool","indexed":false},{"internalType":"uint16","name":"maxSlashBps","type":"uint16","indexed":false},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64","indexed":false},{"internalType":"uint256","name":"disputeBond","type":"uint256","indexed":false},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16","indexed":false}],"type":"event","name":"SlashConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"address","name":"disputer","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashDisputed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"actualSlashed","type":"uint256","indexed":false}],"type":"event","name":"SlashExecuted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64","indexed":true},{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"address","name":"proposer","type":"address","indexed":false},{"internalType":"uint16","name":"slashBps","type":"uint16","indexed":false},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidence","type":"bytes32","indexed":false},{"internalType":"uint64","name":"executeAfter","type":"uint64","indexed":false}],"type":"event","name":"SlashProposed","anonymous":false},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"cancelSlash"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"payable","type":"function","name":"disputeSlash"},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"executeSlash","outputs":[{"internalType":"uint256","name":"actualSlashed","type":"uint256"}]},{"inputs":[{"internalType":"uint64[]","name":"slashIds","type":"uint64[]"}],"stateMutability":"nonpayable","type":"function","name":"executeSlashBatch","outputs":[{"internalType":"uint256","name":"totalSlashed","type":"uint256"},{"internalType":"uint256","name":"executedCount","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"fromId","type":"uint64"},{"internalType":"uint64","name":"toId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getExecutableSlashes","outputs":[{"internalType":"uint64[]","name":"ids","type":"uint64[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getSlashConfig","outputs":[{"internalType":"struct SlashingLib.SlashConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}]}]},{"inputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashProposal","outputs":[{"internalType":"struct SlashingLib.SlashProposal","name":"","type":"tuple","components":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"uint16","name":"effectiveSlashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"},{"internalType":"uint64","name":"proposedAt","type":"uint64"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"enum SlashingLib.SlashStatus","name":"status","type":"uint8"},{"internalType":"string","name":"disputeReason","type":"string"},{"internalType":"address","name":"disputer","type":"address"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint64","name":"disputedAt","type":"uint64"},{"internalType":"uint64","name":"disputeDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint16","name":"slashBps","type":"uint16"},{"internalType":"bytes32","name":"evidence","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"proposeSlash","outputs":[{"internalType":"uint64","name":"slashId","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"disputeWindow","type":"uint64"},{"internalType":"bool","name":"instantSlashEnabled","type":"bool"},{"internalType":"uint16","name":"maxSlashBps","type":"uint16"},{"internalType":"uint64","name":"disputeResolutionDeadline","type":"uint64"},{"internalType":"uint256","name":"disputeBond","type":"uint256"},{"internalType":"uint16","name":"maxPendingSlashesPerOperator","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setSlashConfig"}],"devdoc":{"kind":"dev","methods":{"disputeSlash(uint64,string)":{"details":"`payable` because the implementation requires `msg.value == config.disputeBond` when the bond is non-zero (and zero otherwise). Typed callers must use a payable reference so `disputeSlash{value: bond}(...)` compiles."},"proposeSlash(uint64,address,uint16,bytes32)":{"params":{"evidence":"Evidence hash","operator":"The operator to slash","serviceId":"The service where violation occurred","slashBps":"Slash percentage in basis points"},"returns":{"slashId":"The ID of the created slash proposal"}},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"params":{"disputeBond":"Native asset bond required to dispute (0 = disabled)","disputeResolutionDeadline":"How long SLASH_ADMIN has to resolve a dispute","maxPendingSlashesPerOperator":"Cap on concurrent pending slashes per operator"}}},"version":1},"userdoc":{"kind":"user","methods":{"cancelSlash(uint64,string)":{"notice":"Cancel a slash proposal"},"disputeSlash(uint64,string)":{"notice":"Dispute a slash proposal"},"executeSlash(uint64)":{"notice":"Execute a slash proposal"},"executeSlashBatch(uint64[])":{"notice":"Execute a batch of slashes"},"getExecutableSlashes(uint64,uint64)":{"notice":"Get list of executable slash IDs in a range"},"getSlashConfig()":{"notice":"Get current slashing configuration"},"getSlashProposal(uint64)":{"notice":"Get slash proposal details"},"proposeSlash(uint64,address,uint16,bytes32)":{"notice":"Propose a slash against an operator"},"setSlashConfig(uint64,bool,uint16,uint64,uint256,uint16)":{"notice":"Update slashing configuration"}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ITangleSlashing.sol":"ITangleSlashing"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/ITangleSlashing.sol":{"keccak256":"0x80b2cc257b1b9e0aa0ce4c14e3173cc38e9fa406fe0798da26c3c350d0e7cb1e","urls":["bzz-raw://62161bcc6cb8839b33fd5a17a93e20663b514223127013ca9c70c8603df29ef4","dweb:/ipfs/QmUBMLjNafTujTr9AjjPQ9ptPM6HMcL3P1A4A5GZWPegB3"],"license":"MIT"},"src/libraries/Errors.sol":{"keccak256":"0x4856286cacd45c9173fa2f914de0ba91dbfcae97d757004a88508f3a4eb852a5","urls":["bzz-raw://9373b7becbc4b97de5e80ccf7d322857fd10857ebbae7cb0fb8d5f94ef53ebf9","dweb:/ipfs/QmQcDod47GU7S7iTakK6z25UqrMfrMYYuNyRNHdgHreoT7"],"license":"MIT"},"src/libraries/SlashingLib.sol":{"keccak256":"0x2655d450cf1d777e686db636e9043d1a254f9827914a21e402af855807158681","urls":["bzz-raw://3004a6cc8b98c48a0116b41b2583a5a569e0aed12de4d1392a6728f9f3337289","dweb:/ipfs/QmcsuBJCvndcsppxdonTAkUXAqzyE2rk4kzTsRrj4DQHSW"],"license":"MIT"}},"version":1},"id":83} \ No newline at end of file diff --git a/bindings/abi/OperatorStatusRegistry.json b/bindings/abi/OperatorStatusRegistry.json index 6bc25853..fb636fb0 100644 --- a/bindings/abi/OperatorStatusRegistry.json +++ b/bindings/abi/OperatorStatusRegistry.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_tangleCore","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_MAX_AGE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_DEFINITIONS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_NAME_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_PAGE_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASH_ALERT_COOLDOWN","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addMetricDefinition","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorsStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"configureHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeMetricPairs","inputs":[{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"stateMutability":"pure"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableCustomMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","components":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getLastCriticalHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getLastHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getMetricValue","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"metricName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorState","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.OperatorState","components":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperatorsPaginated","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"goOffline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"goOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"heartbeatConfigs","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isHeartbeatCurrent","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRegisteredOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"metricValues","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStates","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerServiceOwner","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeInactiveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reportForSlashing","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceMetrics","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"serviceOwners","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"definitions","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashingOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashingOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"submitHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitHeartbeatDirect","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tangleCore","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateAndStoreMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"name":"pairsLen","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"HeartbeatConfigUpdated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"interval","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"maxMissed","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"HeartbeatReceived","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"statusCode","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricReported","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricViolation","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorCameOnline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorWentOffline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"missedBeats","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingTriggered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StatusChanged","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"oldStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"newStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"HeartbeatFromFuture","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"HeartbeatStale","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c0604052346100655761001a610014610139565b90610216565b61002261006a565b617ab96104d38239608051818181610edf015261388d015260a051818181611460015281816126cd015281816133ad015281816156a501526162620152617ab990f35b610070565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009c90610074565b810190811060018060401b038211176100b457604052565b61007e565b906100cc6100c561006a565b9283610092565b565b5f80fd5b60018060a01b031690565b6100e6906100d2565b90565b6100f2816100dd565b036100f957565b5f80fd5b9050519061010a826100e9565b565b91906040838203126101345780610128610131925f86016100fd565b936020016100fd565b90565b6100ce565b610157617f8c8038038061014c816100b9565b92833981019061010c565b9091565b90565b61017261016d610177926100d2565b61015b565b6100d2565b90565b6101839061015e565b90565b61018f9061017a565b90565b90565b61019e90610192565b9052565b90565b6101ae906101a2565b9052565b6101bb906100dd565b9052565b9095949261020a946101f9610203926101ef6080966101e560a088019c5f890190610195565b6020870190610195565b6040850190610195565b60608301906101a5565b01906101b2565b565b60200190565b5190565b90610220906102d3565b60a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6102bb7f36ffc258c865193ae10c3cf640450ab772fdb8da1dfcae7862ad1205a5567f4c916102ac7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64661029730610186565b916102a061006a565b968795602087016101bf565b60208201810382520382610092565b6102cd6102c782610212565b9161020c565b20608052565b6102dc9061031e565b565b90565b6102f56102f06102fa926102de565b61015b565b6100d2565b90565b610306906102e1565b90565b919061031c905f602085019401906101b2565b565b8061033961033361032e5f6102fd565b6100dd565b916100dd565b1461034957610347906103e7565b565b61036c6103555f6102fd565b5f918291631e4fbdf760e01b835260048301610309565b0390fd5b1b90565b9190600861039491029161038e60018060a01b0384610370565b92610370565b9181191691161790565b6103a79061017a565b90565b90565b91906103c36103be6103cb9361039e565b6103aa565b908354610374565b9055565b5f90565b6103e5916103df6103cf565b916103ad565b565b6103fb906103f65f60016103d3565b610473565b565b5f1c90565b60018060a01b031690565b61041961041e916103fd565b610402565b90565b61042b905461040d565b90565b5f1b90565b9061044460018060a01b039161042e565b9181191691161790565b9061046361045e61046a9261039e565b6103aa565b8254610433565b9055565b5f0190565b61047c5f610421565b610486825f61044e565b906104ba6104b47f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361039e565b9161039e565b916104c361006a565b806104cd8161046e565b0390a356fe60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b906133a1565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b6134b7565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613966565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b906139b2565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b6139cc565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613a86565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613b26565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613bad565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613c1f565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613c2e565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613c5a565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b92919091614040565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b61198661466f565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b906147ac565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b90614804565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae61482c565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b61487d565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b9161491b565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614aa2565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614ab1565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614b38565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614d9d565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b94939093929192615072565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b615427565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b9161569c565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b9061585b565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615bd2565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615d62565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615dcf565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615e04565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615eee565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b90616083565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b616182565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b9061618d565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b90616256565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b5061637e565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b60481b90565b9061336869ff0000000000000000009161334d565b9181191691161790565b61337b90611159565b90565b90565b9061339661339161339d92613372565b61337e565b8254613353565b9055565b6133dd336133d76133d17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b613402826133fb6133f56133f05f6125e9565b6103ef565b916103ef565b141561330b565b61342861342361341c61341760068590613334565b61334a565b849061645c565b61264e565b61344b6002600161344561343e60038690610fc8565b8690611012565b01613381565b9061347f6134797f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916134886103a2565b806134928161044b565b0390a3565b6134a8906134a3616496565b6134aa565b565b6134b590600b61269a565b565b6134c090613497565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b6134f660176020926109d5565b6134ff816134c2565b0190565b6135189060208101905f8183039101526134e9565b90565b1561352257565b61352a6103a2565b62461bcd60e51b81528061354060048201613503565b0390fd5b906135799796959493929161357461356f613568613563846006613334565b61334a565b33906164e4565b61351b565b6137ba565b565b61358f61358a613594926103b4565b610749565b610554565b90565b6135ab6135a66135b092610554565b610749565b6103b4565b90565b9160206135d49294936135cd60408201965f830190610c21565b0190610c21565b565b6135e56135eb91939293610554565b92610554565b82039182116135f657565b6128e4565b67ffffffffffffffff8111613619576136156020916108b9565b0190565b6108c3565b9092919261363361362e826135fb565b6116bc565b9381855260208501908284011161364f5761364d9261171d565b565b6116f6565b61365f91369161361e565b90565b60200190565b5190565b949290979695939160e08601985f870161368591610f04565b6020860161369291610cbc565b6040850161369f91610c21565b606084016136ac91610c21565b608083016136b991611129565b60a082016136c691610f04565b60c0016136d291610c21565b565b5f61190160f01b910152565b6136ec60028092611d33565b6136f5816136d4565b0190565b90565b61370861370d91610f01565b6136f9565b9052565b602080939261372c613725613734946136e0565b80926136fc565b0180926136fc565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61376c60116020926109d5565b61377581613738565b0190565b61378e9060208101905f81830391015261375f565b90565b1561379857565b6137a06103a2565b62461bcd60e51b8152806137b660048201613779565b0390fd5b919293949796909597806137d66137d042610554565b9161357b565b1161393e576137ee426137e88361357b565b906135d6565b6138076138016137fc610d13565b61357b565b91610554565b116139165761391497986138eb61390993856138758a6138668d6138f1988d8d61383d61383261248b565b963399959293613654565b61384f61384982613668565b91613662565b20929361385a6103a2565b9889976020890161366c565b602082018103825203826108d7565b61388761388182613668565b91613662565b206138d27f00000000000000000000000000000000000000000000000000000000000000006138c36138b76103a2565b93849260208401613711565b602082018103825203826108d7565b6138e46138de82613668565b91613662565b2092613654565b9061651e565b6139036138fd336103ef565b916103ef565b14613791565b9333919293946166b5565b565b61391f42613597565b9061393a5f9283926318355b7560e21b8452600484016135b3565b0390fd5b61394742613597565b906139625f9283926357ea02e960e01b8452600484016135b3565b0390fd5b9061397697969594939291613544565b565b606090565b906020828203126139ad575f82013567ffffffffffffffff81116139a8576139a59201611849565b90565b6103b0565b6103ac565b906139c9916139bf613978565b509081019061397d565b90565b6139eb6139e66139f0926139de6127ae565b506005613334565b61334a565b616ac7565b90565b606090565b67ffffffffffffffff8111613a105760208091020190565b6108c3565b90613a27613a22836139f8565b6116bc565b918252565b369037565b90613a56613a3e83613a15565b92602080613a4c86936139f8565b9201910390613a2c565b565b90613a628261123a565b811015613a73576020809102010190565b61077e565b90613a82906103ef565b9052565b90613a8f6139f3565b50613aac613aa7613aa260048590613334565b61334a565b616ac7565b91613ab683613a31565b91613ac05f612cc2565b5b80613ad4613ace87610554565b91610554565b1015613b1b57613b1690613b11613aff613af8613af360048890613334565b61334a565b8390616b16565b613b0c8791849092613a58565b613a78565b612cde565b613ac1565b5092505090565b5f90565b90613b2f613b22565b50613b516001613b4b613b4460038690610fc8565b8490611012565b016110a3565b613b63613b5d5f611159565b91611159565b14918215613b71575b505090565b613b929250600191613b87613b8c926003610fc8565b611012565b016110a3565b613ba5613b9f6001611159565b91611159565b145f80613b6c565b613bd390613bb96139f3565b505f90613bcd613bc761132d565b92612cc2565b9061491b565b5090565b90613c0994939291613c04613bff613bf8613bf3846006613334565b61334a565b33906164e4565b61351b565b613c0b565b565b91613c1d9492939133919293946166b5565b565b90613c2c94939291613bd7565b565b90613c4e613c49613c5393613c41613b22565b506006613334565b61334a565b6164e4565b90565b5f90565b613c7c613c8292613c77600193613c6f613c56565b506003610fc8565b611012565b016110a3565b90565b613c8e90610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613cc5600d6020926109d5565b613cce81613c91565b0190565b613ce79060208101905f818303910152613cb8565b90565b15613cf157565b613cf96103a2565b62461bcd60e51b815280613d0f60048201613cd2565b0390fd5b67ffffffffffffffff8111613d2b5760208091020190565b6108c3565b90613d42613d3d83613d13565b6116bc565b918252565b369037565b90613d71613d5983613d30565b92602080613d678693613d13565b9201910390613d47565b565b90613d7d82610d97565b811015613d8e576020809102010190565b61077e565b90565b5190565b90613da482613d96565b811015613db5576020809102010190565b61077e565b90613dc490610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613df3613dec836107e4565b8094613dd0565b916001811690815f14613e4a5750600114613e0e575b505050565b613e1b919293945061079f565b915f925b818410613e3257505001905f8080613e09565b60018160209295939554848601520191019290613e1f565b92949550505060ff19168252151560200201905f8080613e09565b90613e6f91613dd9565b90565b90613e92613e8b92613e826103a2565b93848092613e65565b03836108d7565b565b613e9d90613e72565b90565b613eaa9051610f01565b90565b613eb79051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613eee60136020926109d5565b613ef781613eba565b0190565b613f13613f219260408301908382035f8501526109e9565b906020818303910152613ee1565b90565b92916020613f40613f489360408701908782035f8901526109e9565b940190610557565b565b905f9291805490613f64613f5d836107e4565b80946109d5565b916001811690815f14613fbb5750600114613f7f575b505050565b613f8c9192939450610817565b915f925b818410613fa357505001905f8080613f7a565b60018160209295939554848601520191019290613f90565b92949550505060ff19168252151560200201905f8080613f7a565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b61400a60176020926109d5565b61401381613fd6565b0190565b61402f61403d9260408301908382035f850152613f4a565b906020818303910152613ffd565b90565b929390936140683361406261405c61405730613c85565b6103ef565b916103ef565b14613cea565b61407c61407760088690610768565b612e93565b9461408682613d4c565b946140905f612cc2565b5b806140a461409e86610554565b91610554565b10156140f7576140f2906140ed6140c85f6140c08a8590613d73565b510151613d93565b6140da6140d482613668565b91613662565b206140e88a91849092613d9a565b613dba565b612cde565b614091565b50919490929561410681612e9f565b6141186141125f612cc2565b91610554565b1196614122613dc8565b90886145a2575b6141325f612cc2565b5b806141466141408b610554565b91610554565b10156144055760015f8b614239575b509088878961416b94614170575b505050612cde565b614133565b825f6141ae6141a66141b7946141a161419960206141926141bc9b8d90613d73565b5101613ead565b976009611d07565b611d1d565b928790613d73565b51015190611dae565b613018565b888789906141e660206141df5f6141d4878990613d73565b510151958790613d73565b5101613ead565b6142196142137f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b9361422e6142256103a2565b92839283613f24565b0390a3888789614163565b9a90959291996142485f612cc2565b5b8061426461425e6142598a612e9f565b610554565b91610554565b10156143ef5761427c6142778d87613d9a565b613ea0565b6142a061429a6142956142908a8690613d9a565b613ea0565b610f01565b91610f01565b146142b3576142ae90612cde565b614249565b8a919b929c508961416b9495988a926001908a6142dd60206142d6898b90613d73565b5101613ead565b6143056142ff6142fa60016142f3868890612ea3565b500161093e565b610554565b91610554565b1091888884156143a5575b5050505061433a575b614324905b156104c2565b614333575b9394505050614155565b505f614329565b905082825f61434a878990613d73565b5101519161439661438461437e7fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b9361438d6103a2565b91829182613efb565b0390a36143245f919050614319565b6143e59394506143d36143df936143cd60206143c66143da96600296613d73565b5101613ead565b96612ea3565b500161093e565b610554565b91610554565b118a5f8888614310565b5099909a878961416b9495986143248d9461431e565b5097505092935093506144175f612cc2565b935b8461443461442e61442986612e9f565b610554565b91610554565b101561459b5761445a614454600361444d868990612ea3565b5001610965565b156104c2565b6145905761447c6144775f614470868990612ea3565b5001613dcd565b613e94565b61448e61448882613668565b91613662565b20905f9661449b5f612cc2565b5b806144b76144b16144ac86613d96565b610554565b91610554565b101561457e576144d06144cb848390613d9a565b613ea0565b6144e26144dc86610f01565b91610f01565b146144f5576144f090612cde565b61449c565b5095909650614516915061450b60015b156104c2565b61451d575b5b612cde565b9394614419565b82855f61452b878590612ea3565b50019161457661456461455e7fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b9361456d6103a2565b91829182614017565b0390a3614510565b50959096614516925061450b90614505565b949361451690614511565b5050505050565b969390506145bc6145b7839794999693612e9f565b613d4c565b976145c65f612cc2565b5b806145e26145dc6145d78b612e9f565b610554565b91610554565b101561463c576146379061463261460d6146085f6146018d8690612ea3565b5001613dcd565b613e94565b61461f61461982613668565b91613662565b2061462d8d91849092613d9a565b613dba565b612cde565b6145c7565b509295919497909396614129565b614652616496565b61465a61465c565b565b61466d6146685f6125e9565b616bae565b565b61467761464a565b565b61468360a06116bc565b90565b5f90565b5f90565b5f90565b61469a614679565b90602080808080866146aa614686565b8152016146b5612750565b8152016146c0612754565b8152016146cb61468a565b8152016146d661468e565b81525050565b6146e4614692565b90565b906146f190610554565b9052565b906146ff906103b4565b9052565b9061470d906104af565b9052565b9061471b90611159565b9052565b9061479e6147956002614730614679565b9461474761473f5f830161093e565b5f88016146e7565b61475f61475660018301611049565b602088016146f5565b61477761476e60018301611076565b60408801614703565b61478f614786600183016110a3565b60608801614711565b016110c7565b60808401613dba565b565b6147a99061471f565b90565b6147d1916147c76147cc926147bf6146dc565b506003610fc8565b611012565b6147a0565b90565b5f90565b906147e29061074c565b5f5260205260405f2090565b906147f890611006565b5f5260205260405f2090565b6148299161481f614824926148176147d4565b50600c6147d8565b6147ee565b611049565b90565b614834616bc4565b61483c615e04565b61484e614848836103ef565b916103ef565b0361485e5761485c90616bae565b565b614879905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61489c6148976148a19261488f6127ae565b506004613334565b61334a565b616ac7565b90565b6148ae90516104af565b90565b6148c56148c06148ca926125ca565b610749565b6104af565b90565b6148d790516103b4565b90565b6148ee6148e96148f3926104af565b610749565b610554565b90565b61490561490b91939293610554565b92610554565b820180921161491657565b6128e4565b909291926149276139f3565b506149306127ae565b5061493a8261637e565b9361495761495261494d60058690613334565b61334a565b616ac7565b92614964602087016148a4565b6149766149705f6148b1565b916104af565b148015614a68575b8015614a4d575b614a33576149bf866149b96149b460206149ad6149a85f614a1c9b9c9d016148cd565b61357b565b93016148a4565b6148da565b906128f8565b91806149da6149d46149cf61132d565b610554565b91610554565b115f14614a2e57506149ea61132d565b5b6149f68482906148f6565b614a08614a0288610554565b91610554565b115f14614a1f5750845b9092909192616bfa565b91565b614a2990846148f6565b614a12565b6149eb565b5050509150614a49614a445f612cc2565b613a31565b9190565b5082614a61614a5b86610554565b91610554565b1015614985565b5083614a7c614a765f612cc2565b91610554565b1461497e565b614a9390614a8e616496565b614a95565b565b614aa090600a61269a565b565b614aab90614a82565b565b5f90565b614ab9614aad565b50614ac35f6125bd565b90565b5090565b9190811015614ada576020020190565b61077e565b35614ae9816103fb565b90565b5f80fd5b60e01b90565b5f910312614b0057565b6103ac565b916020614b26929493614b1f60408201965f830190610c21565b0190610cbc565b565b614b306103a2565b3d5f823e3d90fd5b90929192614b455f612cc2565b5b80614b63614b5d614b58858990614ac6565b610554565b91610554565b1015614c1257614b7230613c85565b9063ba1fb10384614b8d614b88868a8691614aca565b614adf565b93803b15614c0d57614bb25f8094614bbd614ba66103a2565b98899687958694614af0565b845260048401614b05565b03925af1918215614c0857614bd792614bdc575b50612cde565b614b46565b614bfb905f3d8111614c01575b614bf381836108d7565b810190614af6565b5f614bd1565b503d614be9565b614b28565b614aec565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614c4d60136020926109d5565b614c5681614c19565b0190565b614c6f9060208101905f818303910152614c40565b90565b15614c7957565b614c816103a2565b62461bcd60e51b815280614c9760048201614c5a565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614ccf60106020926109d5565b614cd881614c9b565b0190565b614cf19060208101905f818303910152614cc2565b90565b15614cfb57565b614d036103a2565b62461bcd60e51b815280614d1960048201614cdc565b0390fd5b90565b90614d3367ffffffffffffffff91612677565b9181191691161790565b90565b90614d55614d50614d5c9261074c565b614d3d565b8254614d20565b9055565b9190614d7a81614d7381614d7f956109d5565b809561171d565b6108b9565b0190565b9091614d9a9260208301925f818503910152614d60565b90565b614dc233614dbc614db6614db1600a6125bd565b6103ef565b916103ef565b14614c72565b614de8614de3614ddc614dd760058590613334565b61334a565b84906164e4565b614cf4565b614e14614e09614e04614dfd60038590610fc8565b8590611012565b614d1d565b600160039101613381565b614e32614e2b614e2660048490613334565b61334a565b8390616d16565b50614e5a614e3f42613597565b614e55614e4e600c85906147d8565b85906147ee565b614d40565b909192614e90614e8a7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614ea5614e9c6103a2565b92839283614d83565b0390a3565b614eb460806116bc565b90565b614ec2913691611728565b90565b52565b90614ed2906104c2565b9052565b5190565b90614ee4816109d1565b9067ffffffffffffffff8211614fa457614f0882614f0285546107e4565b85612ecf565b602090601f8311600114614f3c57918091614f2b935f92614f30575b5050612a07565b90555b565b90915001515f80614f24565b601f19831691614f4b85610817565b925f5b818110614f8c57509160029391856001969410614f72575b50505002019055614f2e565b614f82910151601f8416906129f2565b90555f8080614f66565b91936020600181928787015181550195019201614f4e565b6108c3565b90614fb391614eda565b565b614fbf90516104c2565b90565b9061501f6060600361502594614fe55f8201614fdf5f8801614ed6565b90614fa9565b614ffe60018201614ff860208801613ead565b90613018565b6150176002820161501160408801613ead565b90613018565b019201614fb5565b9061306a565b565b91906150385761503691614fc2565b565b612ba3565b908154916801000000000000000083101561506d578261506591600161506b95018155612ea3565b90615027565b565b6108c3565b61519095615179849661517061516861515461514f615182976150f56150d56150cf61518b9d8d9f9d6150ca336150c46150be6150b96150b460078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b6150ee6150e86150e3611921565b610554565b91610554565b1115612ddb565b6151128661510b6151058d610554565b91610554565b1015612e6a565b61514861512961512460088490610768565b610792565b61514261513c61513761156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b989996929496615162614eaa565b9a614eb7565b5f8a01614ec5565b602088016146e7565b604086016146e7565b60608401614ec8565b61503d565b565b6151c0906151bb6151b66151af6151aa846006613334565b61334a565b33906164e4565b61351b565b6152a1565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b6151f6601e6020926109d5565b6151ff816151c2565b0190565b6152189060208101905f8183039101526151e9565b90565b60401b90565b9061523568ff00000000000000009161521b565b9181191691161790565b61525361524e615258926104af565b610749565b6104af565b90565b90565b9061527361526e61527a9261523f565b61525b565b8254615221565b9055565b91602061529f92949361529860408201965f830190611171565b0190611171565b565b6152bf6152ba6152b360038490610fc8565b3390611012565b614d1d565b906152cc600183016110a3565b91826152e16152db6003611159565b91611159565b1461540557826152f96152f35f611159565b91611159565b1480156153ea575b6153e557615328906153166001808301613381565b60016153215f6148b1565b910161525e565b61534661533f61533a60048490613334565b61334a565b339061645c565b50803361537c6153767fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b916153856103a2565b8061538f8161044b565b0390a39033909160016153cb6153c57f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936153e06153d76103a2565b9283928361527e565b0390a3565b505050565b50826153ff6153f96001611159565b91611159565b14615301565b61540d6103a2565b62461bcd60e51b81528061542360048201615203565b0390fd5b61543090615192565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b615466600e6020926109d5565b61546f81615432565b0190565b6154889060208101905f818303910152615459565b90565b1561549257565b61549a6103a2565b62461bcd60e51b8152806154b060048201615473565b0390fd5b90565b6154cb6154c66154d0926154b4565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b61550760126020926109d5565b615510816154d3565b0190565b6155299060208101905f8183039101526154fa565b90565b1561553357565b61553b6103a2565b62461bcd60e51b81528061555160048201615514565b0390fd5b90565b61556c61556761557192615555565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b6155a860176020926109d5565b6155b181615574565b0190565b6155ca9060208101905f81830391015261559b565b90565b156155d457565b6155dc6103a2565b62461bcd60e51b8152806155f2600482016155b5565b0390fd5b61560060606116bc565b90565b9061561861561361561f9261305b565b613067565b8254613353565b9055565b9061566560405f61566b9461564582820161563f8488016148cd565b90614d40565b61565d828201615657602088016148a4565b9061525e565b019201614fb5565b90615603565b565b9061567791615623565b565b91602061569a92949361569360408201965f830190610c21565b0190611129565b565b336156cf6156c97f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b1480156157bb575b6156e09061548b565b6156fe826156f76156f1603c6154b7565b916103b4565b101561552c565b61571c8361571561570f6001615558565b916104af565b10156155cd565b615775826157648561575b61573d5f61573760028990612287565b016122b1565b916157526157496155f6565b955f87016146f5565b60208501614703565b60408301614ec8565b61577060028490612287565b61566d565b90916157a17fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b926157b66157ad6103a2565b92839283615679565b0390a2565b506156e0336157e56157df6157da6157d5600787906113c5565b6125bd565b6103ef565b916103ef565b1490506156d7565b634e487b7160e01b5f52601260045260245ffd5b61580d61581391610554565b91610554565b90811561581e570490565b6157ed565b61583761583261583c92610554565b610749565b6104af565b90565b61585361584e615858926125ca565b610749565b6103b4565b90565b61587961587461586d60038490610fc8565b8490611012565b614d1d565b906158838161637e565b61588f600184016110a3565b6158a261589c6003611159565b91611159565b14615ab6576158b25f840161093e565b6158c46158be5f612cc2565b91610554565b14615ab0576158fa6158e1426158db5f870161093e565b906135d6565b6158f46158ef5f85016148cd565b61357b565b90615801565b8061590e61590860ff6148da565b91610554565b115f14615aa2575060ff5b908161593861593261592d60018801611076565b6104af565b916104af565b11615945575b5050505050565b615952826001860161525e565b61596761595e5f61583f565b60018601614d40565b61598561597f61597a60208594016148a4565b6104af565b916104af565b101580615a7b575b615998575b8061593e565b6159b36159a7600185016110a3565b93600160029101613381565b6159d16159ca6159c560048590613334565b61334a565b8590616d16565b508190849091615a1f615a0d615a077f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615a166103a2565b91829182611627565b0390a39190916002615a5a615a547f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615a6f615a666103a2565b9283928361527e565b0390a35f808080615992565b50615a88600184016110a3565b615a9b615a956002611159565b91611159565b141561598d565b615aab90615823565b615919565b50505050565b50505050565b606090565b67ffffffffffffffff8111615ad95760208091020190565b6108c3565b90615af0615aeb83615ac1565b6116bc565b918252565b615aff60806116bc565b90565b90615b69615b606003615b13615af5565b94615b2a615b225f8301610900565b5f8801614ec5565b615b42615b396001830161093e565b602088016146e7565b615b5a615b516002830161093e565b604088016146e7565b01610965565b60608401614ec8565b565b615b7490615b02565b90565b90615b8182610792565b615b8a81615ade565b92615b986020850191610796565b5f915b838310615ba85750505050565b60046020600192615bb885615b6b565b815201920192019190615b9b565b615bcf90615b77565b90565b615be9615bee91615be1615abc565b506008610768565b615bc6565b90565b615c1f90615c1a615c15615c0e615c09846006613334565b61334a565b33906164e4565b61351b565b615c7a565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615c55601f6020926109d5565b615c5e81615c21565b0190565b615c779060208101905f818303910152615c48565b90565b615c98615c93615c8c60038490610fc8565b3390611012565b614d1d565b90615ca5600183016110a3565b9182615cba615cb46003611159565b91611159565b14615d4057615cce90600160049101613381565b615cec615ce5615ce060048490613334565b61334a565b3390616d16565b50903390916004615d26615d207f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615d3b615d326103a2565b9283928361527e565b0390a3565b615d486103a2565b62461bcd60e51b815280615d5e60048201615c62565b0390fd5b615d6b90615bf1565b565b909182615d7d81615d8493611d33565b809361171d565b0190565b615d999060209493615da093615d6d565b8092611d64565b0190565b9091615dbb90615db26103a2565b93849384615d88565b03902090565b9091615dcc92615da4565b90565b92615df4615dfc9392615def615e0196615de76127ae565b506009611d07565b611d1d565b919091615dc1565b61093e565b90565b615e0c614aad565b50615e1760016125bd565b90565b615e249051611159565b90565b90565b615e3e615e39615e4392615e27565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615ea060216040926109d5565b615ea981615e46565b0190565b615ec29060208101905f818303910152615e93565b90565b15615ecc57565b615ed46103a2565b62461bcd60e51b815280615eea60048201615ead565b0390fd5b90615f9f615f9a615fa49333615f1f615f19615f14615f0f600786906113c5565b6125bd565b6103ef565b916103ef565b14801561605d575b615f309061548b565b615f4e615f49615f4260038490610fc8565b8690611012565b6147a0565b615f5a60608201615e1a565b615f6d615f676003611159565b91611159565b03615fa7575b50615f92615f8b615f8660058490613334565b61334a565b8590616d16565b506004613334565b61334a565b616d16565b50565b61602390615ff7615fe7615fba8561637e565b615fe1615fdc6020615fd5615fd05f86016148cd565b61357b565b93016148a4565b6148da565b906128f8565b615ff1600a615e2a565b906128f8565b6160025f8301613ead565b61601461600e5f612cc2565b91610554565b119182616029575b5050615ec5565b5f615f73565b61605491925061604861604e916160425f429201613ead565b906135d6565b92610554565b91610554565b10155f8061601c565b50615f303361607b616075616070614ab1565b6103ef565b916103ef565b149050615f27565b906160ad6160b291616093613b22565b506160a86160a08561637e565b946003610fc8565b611012565b6147a0565b6160bd5f8201613ead565b6160cf6160c95f612cc2565b91610554565b1461610a576161006160fb5f6160f4616106946160ee83429201613ead565b906135d6565b94016148cd565b61357b565b91610554565b1090565b50505f90565b6161219061611c616496565b616123565b565b61612e81600161269a565b616136614ab1565b9061616a6161647f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b916161736103a2565b8061617d8161044b565b0390a3565b61618b90616110565b565b5f6161cc6161d2936161c4336161be6161b86161b36161ae60078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b01615603565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b616208600e6020926109d5565b616211816161d4565b0190565b61622a9060208101905f8183039101526161fb565b90565b1561623457565b61623c6103a2565b62461bcd60e51b81528061625260048201616215565b0390fd5b6162923361628c6162867f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b6162b86162b36162ac6162a760068590613334565b61334a565b8490616d16565b61622d565b6162d66162cf6162ca60048490613334565b61334a565b8390616d16565b509061630b6163057f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163146103a2565b8061631e8161044b565b0390a3565b906163706163675f616333612743565b9461634a616342838301611049565b8388016146f5565b616361616358838301611076565b60208801614703565b016122b1565b60408401614ec8565b565b61637b90616323565b90565b61639561639a9161638d61278e565b506002612287565b616372565b6163a55f82016148cd565b6163b76163b15f61583f565b916103b4565b146163fd575b6163c9602082016148a4565b6163db6163d55f6148b1565b916104af565b146163e4575b90565b6163f86163ef61160f565b60208301614703565b6163e1565b616410616408610c08565b5f83016146f5565b6163bd565b61641e90610fde565b90565b61643561643061643a926103e4565b610749565b610554565b90565b61645161644c61645692610554565b612677565b610f01565b90565b90565b9061648e61648861648361647e5f61649396616476613b22565b500194616415565b616421565b61643d565b91616459565b616df9565b90565b61649e614ab1565b6164b76164b16164ac616bc4565b6103ef565b916103ef565b036164be57565b6164e06164c9616bc4565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b9061651661651061650b6165065f61651b966164fe613b22565b500194616415565b616421565b61643d565b91616459565b616e5c565b90565b61653d916165349161652e614aad565b50616ebc565b90929192616f7c565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61657460136020926109d5565b61657d81616540565b0190565b6165969060208101905f818303910152616567565b90565b156165a057565b6165a86103a2565b62461bcd60e51b8152806165be60048201616581565b0390fd5b6165cb90610f01565b90565b6165d790610922565b90565b906165ef6165ea6165f6926165c2565b6165ce565b8254613002565b9055565b616603906103b4565b67ffffffffffffffff81146166185760010190565b6128e4565b90565b61663461662f6166399261661d565b610749565b6104af565b90565b91602061665d92949361665660408201965f830190611129565b0190610557565b565b61666890610fde565b90565b6166749061665f565b90565b61668090610ffa565b90565b6040906166ac6166b394969593966166a260608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b94929391936166d86166d36166cc60038990610fc8565b8790611012565b614d1d565b936166e28761637e565b9361670c6166f2600188016110a3565b6167056166ff6003611159565b91611159565b1415616599565b61672a61672361671e60058b90613334565b61334a565b889061645c565b506167ff604061673c600189016110a3565b96616749425f8b01613018565b616773616757858790613654565b61676961676382613668565b91613662565b2060028b016165da565b61678861677f5f6148b1565b60018b0161525e565b6167a660018a016167a061679b82611049565b6165fa565b90614d40565b6167ae613c56565b50856167c26167bc5f6148b1565b916104af565b145f14616a83576167d95f995b60018b9101613381565b876167ed6167e76002611159565b91611159565b1480616a67575b6169f9575b01614fb5565b806169d5575b6169bf575b505085918591924261684e6168486168427f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b9461686361685a6103a2565b9283928361663c565b0390a48061687961687384611159565b91611159565b03616969575b505061688b600b6125bd565b6168a561689f61689a5f6125e9565b6103ef565b916103ef565b036168af575b5050565b6168c96168c46168bf600b6125bd565b61666b565b616677565b9163d47853b69190926168db42613597565b92813b15616964575f6169019161690c82966168f56103a2565b98899788968795614af0565b855260048501616683565b03925af19081616938575b50155f1461693357600161692e575b5b5f806168ab565b616926565b616927565b616957905f3d811161695d575b61694f81836108d7565b810190614af6565b5f616917565b503d616945565b614aec565b838391926169a061699a7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936169b56169ac6103a2565b9283928361527e565b0390a35f8061687f565b6169ce91889188909192617439565b5f8061680a565b506169e1818390612d7e565b6169f36169ed5f612cc2565b91610554565b11616805565b616a16616a0f616a0a8d6004613334565b61334a565b8b9061645c565b508a8a616a4c616a467fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616a556103a2565b80616a5f8161044b565b0390a36167f9565b5088616a7c616a766002611159565b91611159565b14156167f4565b85616a97616a916064616620565b916104af565b105f14616aaa576167d96001995b6167cf565b6167d9600199616ac28d8d8b908b908a928c946170ed565b616aa5565b616ade5f616ae392616ad76127ae565b5001616459565b6175f7565b90565b616af2616af791610922565b61297e565b90565b616b0e616b09616b1392610554565b610749565b6103e4565b90565b616b41616b3c616b4b93616b375f616b4695616b30614aad565b5001616459565b617665565b616ae6565b616afa565b610ffa565b90565b91906008616b6e910291616b6860018060a01b0384612955565b92612955565b9181191691161790565b9190616b8e616b89616b9693611006565b612697565b908354616b4e565b9055565b616bac91616ba6614aad565b91616b78565b565b616bc290616bbd5f6001616b9a565b617686565b565b616bcc614aad565b503390565b616bda90610554565b5f198114616be85760010190565b6128e4565b616bf790516103ef565b90565b93919293616c066139f3565b50616c1a616c158584906135d6565b613a31565b92616c245f612cc2565b925b80616c39616c3388610554565b91610554565b1015616ca757616c5d616c56616c5160058690613334565b61334a565b8290616b16565b616c6984828a916176e5565b616c7d575b50616c7890612cde565b616c26565b616c789194616c9b616ca092616c968991849092613a58565b613a78565b616bd1565b9390616c6e565b509450509150616cb682613a31565b92616cc05f612cc2565b5b80616cd4616cce86610554565b91610554565b1015616d1057616d0b90616d06616cf4616cef868490613a58565b616bed565b616d018891849092613a58565b613a78565b612cde565b616cc1565b50915050565b90616d48616d42616d3d616d385f616d4d96616d30613b22565b500194616415565b616421565b61643d565b91616459565b617831565b90565b90565b5f5260205f2090565b5490565b616d6981616d5c565b821015616d8357616d7b600191616d53565b910201905f90565b61077e565b9190616d9e616d99616da6936165c2565b6165ce565b908354612959565b9055565b9081549168010000000000000000831015616dda5782616dd2916001616dd895018155616d60565b90616d88565b565b6108c3565b5490565b90616ded906165c2565b5f5260205260405f2090565b616e01613b22565b50616e16616e10828490616e5c565b156104c2565b5f14616e5657616e4c616e5192616e38616e315f8501616d50565b8290616daa565b6001616e455f8501616ddf565b9301616de3565b613018565b600190565b50505f90565b616e7a916001616e7592616e6e613b22565b5001616de3565b61093e565b616e8c616e865f612cc2565b91610554565b141590565b5f90565b5f90565b90565b616eb0616eab616eb592616e99565b610749565b610554565b90565b5f90565b919091616ec7614aad565b50616ed0616e91565b50616ed9616e95565b50616ee383613668565b616ef6616ef06041616e9c565b91610554565b145f14616f3d57616f369192616f0a616e95565b50616f13616e95565b50616f1c616eb8565b506020810151606060408301519201515f1a9091926179b0565b9192909190565b50616f475f6125e9565b90616f5b616f56600294613668565b61643d565b91929190565b60041115616f6b57565b611136565b90616f7a82616f61565b565b80616f8f616f895f616f70565b91616f70565b145f14616f9a575050565b80616fae616fa86001616f70565b91616f70565b145f14616fd1575f63f645eedf60e01b815280616fcd6004820161044b565b0390fd5b80616fe5616fdf6002616f70565b91616f70565b145f146170135761700f616ff883616ae6565b5f91829163fce698f760e01b835260048301610564565b0390fd5b6170266170206003616f70565b91616f70565b1461702e5750565b617049905f9182916335e2f38360e21b835260048301610f11565b0390fd5b61706161705c6170669261130e565b610749565b6104af565b90565b61707561707b916103b4565b916103b4565b90039067ffffffffffffffff821161708f57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b6170c8601b6020926109d5565b6170d181617094565b0190565b6170ea9060208101905f8183039101526170bb565b90565b93505092506171056170ff60c861704d565b916104af565b1015617110575b5050565b61711942613597565b61713761713261712b600c85906147d8565b85906147ee565b611049565b8061714a6171445f61583f565b916103b4565b149081156171d0575b5061715f575b5061710c565b61717e90617179617172600c85906147d8565b85906147ee565b614d40565b906171b26171ac7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916171bb6103a2565b806171c5816170d5565b0390a35f8080617159565b6171db915082617069565b6171f46171ee6171e9610f7a565b6103b4565b916103b4565b10155f617153565b90565b61721361720e617218926171fc565b610749565b610554565b90565b9092919261723061722b826116fa565b6116bc565b9381855260208501908284011161724c5761724a926109de565b565b6116f6565b9080601f8301121561726f5781602061726c9351910161721b565b90565b6105af565b90505190617281826106f9565b565b9190916040818403126172d65761729a60406116bc565b925f8201519167ffffffffffffffff83116172d1576172be826172ca948301617251565b5f860152602001617274565b6020830152565b6116f2565b6116ee565b9291906172ef6172ea826116d1565b6116bc565b93818552602080860192028101918383116173465781905b838210617315575050505050565b815167ffffffffffffffff8111617341576020916173368784938701617283565b815201910190617307565b6105af565b6105b7565b9080601f8301121561736957816020617366935191016172db565b90565b6105af565b9060208282031261739e575f82015167ffffffffffffffff811161739957617396920161734b565b90565b6103b0565b6103ac565b60209181520190565b91906173c6816173bf816173cb956173a3565b809561171d565b6108b9565b0190565b90916173e69260208301925f8185039101526173ac565b90565b6173f36032611551565b90565b9493916060916174379461742261742f9361741860808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b91617445818590612d7e565b6174576174515f612cc2565b91610554565b146175f157617467818590612d7e565b61747b61747561c3506171ff565b91610554565b116175eb575f617489613978565b9461749330613c85565b6174b56331e3bd1b9492946174c06174a96103a2565b96879586948594614af0565b8452600484016173cf565b03915afa80915f926175c7575b50155f146175be575060016175b9575b6174e683610d97565b6174ff6174f96174f46173e9565b610554565b91610554565b115f146175ab5761750e6173e9565b5b61751830613c85565b906365a6936e93929490823b156175a6575f9461755386926175489461753c6103a2565b998a9889978896614af0565b8652600486016173f6565b03925af1908161757a575b50155f14617575576001617570575b5b565b61756d565b61756e565b617599905f3d811161759f575b61759181836108d7565b810190614af6565b5f61755e565b503d617587565b614aec565b6175b483610d97565b61750f565b505050565b909250916174dd565b6175e49192503d805f833e6175dc81836108d7565b81019061736e565b905f6174cd565b50505050565b50505050565b5f61760b916176046127ae565b5001616ddf565b90565b5f5260205f2090565b61762081616ddf565b82101561763a5761763260019161760e565b910201905f90565b61077e565b61764f9060086176549302610c78565b6110b0565b90565b90617662915461763f565b90565b617683915f61767d92617676616e95565b5001617617565b90617657565b90565b61768f5f6125bd565b617699825f61269a565b906176cd6176c77f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916176d66103a2565b806176e08161044b565b0390a3565b6176ed613b22565b5061771561770f61770861770360068590613334565b61334a565b84906164e4565b156104c2565b6177b7576177359161772b617730926003610fc8565b611012565b6147a0565b6177405f8201613ead565b61775261774c5f612cc2565b91610554565b148015617791575b61778b5761778061777a617786926177745f429201613ead565b906135d6565b92610554565b91610554565b101590565b50505f90565b5061779e60608201615e1a565b6177b16177ab6003611159565b91611159565b1461775a565b5050505f90565b6177d26177cd6177d792615555565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b617800916177fa616e95565b91616d88565b565b61780b81616d5c565b801561782c5760019003906178296178238383616d60565b906177ee565b55565b6177da565b617839613b22565b5061785061784b600183018490616de3565b61093e565b908161786461785e5f612cc2565b91610554565b14155f14617930576178e29260016178dd928461788b5f96617885856177be565b906135d6565b6178a8617899888501616ddf565b6178a2866177be565b906135d6565b816178bb6178b583610554565b91610554565b036178e7575b5050506178d76178d2868301616d50565b617802565b01616de3565b6129bf565b600190565b6179289261791a617906617900617923948c8901617617565b90617657565b9361791485918c8901617617565b90616d88565b91858501616de3565b613018565b5f80806178c1565b5050505f90565b90565b61794e61794961795392617937565b610749565b610554565b90565b61798b61799294617981606094989795617977608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179a86179a36179ad926125ca565b612677565b610f01565b90565b9392936179bb614aad565b506179c4616e91565b506179cd616e95565b506179d785616ae6565b617a09617a037f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a061793a565b91610554565b11617a965790617a2c602094955f94939293617a236103a2565b94859485617956565b838052039060015afa15617a9157617a445f51612677565b80617a5f617a59617a545f6125e9565b6103ef565b916103ef565b14617a75575f91617a6f5f617994565b91929190565b50617a7f5f6125e9565b600191617a8b5f617994565b91929190565b614b28565b505050617aa25f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38266:187:-:0;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;13060:465::-;;;;;:::i;:::-;13147:24;;13252:95;13224:284;13365:35;13418:14;13224:284;13418:14;13450:13;13481;13489:4;13481:13;:::i;:::-;13224:284;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;13201:317;;;;:::i;:::-;;;:::i;:::-;;13182:336;;13060:465::o;984:1491:3:-;;;;:::i;:::-;:::o;6415:38266:187:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;1225:187:2:-;1273:12;:26;;1289:10;1297:1;1289:10;:::i;:::-;1273:26;:::i;:::-;;;:::i;:::-;;1269:95;;1392:12;;;:::i;:::-;1225:187::o;1269:95::-;1322:31;1342:10;1350:1;1342:10;:::i;:::-;1322:31;;;;;;;;;;;;;:::i;:::-;;;;6415:38266:187;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:3:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;6415:38266:187:-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;2912:187:2:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b906133a1565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b6134b7565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613966565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b906139b2565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b6139cc565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613a86565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613b26565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613bad565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613c1f565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613c2e565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613c5a565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b92919091614040565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b61198661466f565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b906147ac565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b90614804565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae61482c565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b61487d565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b9161491b565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614aa2565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614ab1565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614b38565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614d9d565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b94939093929192615072565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b615427565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b9161569c565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b9061585b565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615bd2565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615d62565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615dcf565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615e04565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615eee565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b90616083565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b616182565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b9061618d565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b90616256565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b5061637e565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b60481b90565b9061336869ff0000000000000000009161334d565b9181191691161790565b61337b90611159565b90565b90565b9061339661339161339d92613372565b61337e565b8254613353565b9055565b6133dd336133d76133d17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b613402826133fb6133f56133f05f6125e9565b6103ef565b916103ef565b141561330b565b61342861342361341c61341760068590613334565b61334a565b849061645c565b61264e565b61344b6002600161344561343e60038690610fc8565b8690611012565b01613381565b9061347f6134797f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916134886103a2565b806134928161044b565b0390a3565b6134a8906134a3616496565b6134aa565b565b6134b590600b61269a565b565b6134c090613497565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b6134f660176020926109d5565b6134ff816134c2565b0190565b6135189060208101905f8183039101526134e9565b90565b1561352257565b61352a6103a2565b62461bcd60e51b81528061354060048201613503565b0390fd5b906135799796959493929161357461356f613568613563846006613334565b61334a565b33906164e4565b61351b565b6137ba565b565b61358f61358a613594926103b4565b610749565b610554565b90565b6135ab6135a66135b092610554565b610749565b6103b4565b90565b9160206135d49294936135cd60408201965f830190610c21565b0190610c21565b565b6135e56135eb91939293610554565b92610554565b82039182116135f657565b6128e4565b67ffffffffffffffff8111613619576136156020916108b9565b0190565b6108c3565b9092919261363361362e826135fb565b6116bc565b9381855260208501908284011161364f5761364d9261171d565b565b6116f6565b61365f91369161361e565b90565b60200190565b5190565b949290979695939160e08601985f870161368591610f04565b6020860161369291610cbc565b6040850161369f91610c21565b606084016136ac91610c21565b608083016136b991611129565b60a082016136c691610f04565b60c0016136d291610c21565b565b5f61190160f01b910152565b6136ec60028092611d33565b6136f5816136d4565b0190565b90565b61370861370d91610f01565b6136f9565b9052565b602080939261372c613725613734946136e0565b80926136fc565b0180926136fc565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61376c60116020926109d5565b61377581613738565b0190565b61378e9060208101905f81830391015261375f565b90565b1561379857565b6137a06103a2565b62461bcd60e51b8152806137b660048201613779565b0390fd5b919293949796909597806137d66137d042610554565b9161357b565b1161393e576137ee426137e88361357b565b906135d6565b6138076138016137fc610d13565b61357b565b91610554565b116139165761391497986138eb61390993856138758a6138668d6138f1988d8d61383d61383261248b565b963399959293613654565b61384f61384982613668565b91613662565b20929361385a6103a2565b9889976020890161366c565b602082018103825203826108d7565b61388761388182613668565b91613662565b206138d27f00000000000000000000000000000000000000000000000000000000000000006138c36138b76103a2565b93849260208401613711565b602082018103825203826108d7565b6138e46138de82613668565b91613662565b2092613654565b9061651e565b6139036138fd336103ef565b916103ef565b14613791565b9333919293946166b5565b565b61391f42613597565b9061393a5f9283926318355b7560e21b8452600484016135b3565b0390fd5b61394742613597565b906139625f9283926357ea02e960e01b8452600484016135b3565b0390fd5b9061397697969594939291613544565b565b606090565b906020828203126139ad575f82013567ffffffffffffffff81116139a8576139a59201611849565b90565b6103b0565b6103ac565b906139c9916139bf613978565b509081019061397d565b90565b6139eb6139e66139f0926139de6127ae565b506005613334565b61334a565b616ac7565b90565b606090565b67ffffffffffffffff8111613a105760208091020190565b6108c3565b90613a27613a22836139f8565b6116bc565b918252565b369037565b90613a56613a3e83613a15565b92602080613a4c86936139f8565b9201910390613a2c565b565b90613a628261123a565b811015613a73576020809102010190565b61077e565b90613a82906103ef565b9052565b90613a8f6139f3565b50613aac613aa7613aa260048590613334565b61334a565b616ac7565b91613ab683613a31565b91613ac05f612cc2565b5b80613ad4613ace87610554565b91610554565b1015613b1b57613b1690613b11613aff613af8613af360048890613334565b61334a565b8390616b16565b613b0c8791849092613a58565b613a78565b612cde565b613ac1565b5092505090565b5f90565b90613b2f613b22565b50613b516001613b4b613b4460038690610fc8565b8490611012565b016110a3565b613b63613b5d5f611159565b91611159565b14918215613b71575b505090565b613b929250600191613b87613b8c926003610fc8565b611012565b016110a3565b613ba5613b9f6001611159565b91611159565b145f80613b6c565b613bd390613bb96139f3565b505f90613bcd613bc761132d565b92612cc2565b9061491b565b5090565b90613c0994939291613c04613bff613bf8613bf3846006613334565b61334a565b33906164e4565b61351b565b613c0b565b565b91613c1d9492939133919293946166b5565b565b90613c2c94939291613bd7565b565b90613c4e613c49613c5393613c41613b22565b506006613334565b61334a565b6164e4565b90565b5f90565b613c7c613c8292613c77600193613c6f613c56565b506003610fc8565b611012565b016110a3565b90565b613c8e90610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613cc5600d6020926109d5565b613cce81613c91565b0190565b613ce79060208101905f818303910152613cb8565b90565b15613cf157565b613cf96103a2565b62461bcd60e51b815280613d0f60048201613cd2565b0390fd5b67ffffffffffffffff8111613d2b5760208091020190565b6108c3565b90613d42613d3d83613d13565b6116bc565b918252565b369037565b90613d71613d5983613d30565b92602080613d678693613d13565b9201910390613d47565b565b90613d7d82610d97565b811015613d8e576020809102010190565b61077e565b90565b5190565b90613da482613d96565b811015613db5576020809102010190565b61077e565b90613dc490610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613df3613dec836107e4565b8094613dd0565b916001811690815f14613e4a5750600114613e0e575b505050565b613e1b919293945061079f565b915f925b818410613e3257505001905f8080613e09565b60018160209295939554848601520191019290613e1f565b92949550505060ff19168252151560200201905f8080613e09565b90613e6f91613dd9565b90565b90613e92613e8b92613e826103a2565b93848092613e65565b03836108d7565b565b613e9d90613e72565b90565b613eaa9051610f01565b90565b613eb79051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613eee60136020926109d5565b613ef781613eba565b0190565b613f13613f219260408301908382035f8501526109e9565b906020818303910152613ee1565b90565b92916020613f40613f489360408701908782035f8901526109e9565b940190610557565b565b905f9291805490613f64613f5d836107e4565b80946109d5565b916001811690815f14613fbb5750600114613f7f575b505050565b613f8c9192939450610817565b915f925b818410613fa357505001905f8080613f7a565b60018160209295939554848601520191019290613f90565b92949550505060ff19168252151560200201905f8080613f7a565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b61400a60176020926109d5565b61401381613fd6565b0190565b61402f61403d9260408301908382035f850152613f4a565b906020818303910152613ffd565b90565b929390936140683361406261405c61405730613c85565b6103ef565b916103ef565b14613cea565b61407c61407760088690610768565b612e93565b9461408682613d4c565b946140905f612cc2565b5b806140a461409e86610554565b91610554565b10156140f7576140f2906140ed6140c85f6140c08a8590613d73565b510151613d93565b6140da6140d482613668565b91613662565b206140e88a91849092613d9a565b613dba565b612cde565b614091565b50919490929561410681612e9f565b6141186141125f612cc2565b91610554565b1196614122613dc8565b90886145a2575b6141325f612cc2565b5b806141466141408b610554565b91610554565b10156144055760015f8b614239575b509088878961416b94614170575b505050612cde565b614133565b825f6141ae6141a66141b7946141a161419960206141926141bc9b8d90613d73565b5101613ead565b976009611d07565b611d1d565b928790613d73565b51015190611dae565b613018565b888789906141e660206141df5f6141d4878990613d73565b510151958790613d73565b5101613ead565b6142196142137f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b9361422e6142256103a2565b92839283613f24565b0390a3888789614163565b9a90959291996142485f612cc2565b5b8061426461425e6142598a612e9f565b610554565b91610554565b10156143ef5761427c6142778d87613d9a565b613ea0565b6142a061429a6142956142908a8690613d9a565b613ea0565b610f01565b91610f01565b146142b3576142ae90612cde565b614249565b8a919b929c508961416b9495988a926001908a6142dd60206142d6898b90613d73565b5101613ead565b6143056142ff6142fa60016142f3868890612ea3565b500161093e565b610554565b91610554565b1091888884156143a5575b5050505061433a575b614324905b156104c2565b614333575b9394505050614155565b505f614329565b905082825f61434a878990613d73565b5101519161439661438461437e7fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b9361438d6103a2565b91829182613efb565b0390a36143245f919050614319565b6143e59394506143d36143df936143cd60206143c66143da96600296613d73565b5101613ead565b96612ea3565b500161093e565b610554565b91610554565b118a5f8888614310565b5099909a878961416b9495986143248d9461431e565b5097505092935093506144175f612cc2565b935b8461443461442e61442986612e9f565b610554565b91610554565b101561459b5761445a614454600361444d868990612ea3565b5001610965565b156104c2565b6145905761447c6144775f614470868990612ea3565b5001613dcd565b613e94565b61448e61448882613668565b91613662565b20905f9661449b5f612cc2565b5b806144b76144b16144ac86613d96565b610554565b91610554565b101561457e576144d06144cb848390613d9a565b613ea0565b6144e26144dc86610f01565b91610f01565b146144f5576144f090612cde565b61449c565b5095909650614516915061450b60015b156104c2565b61451d575b5b612cde565b9394614419565b82855f61452b878590612ea3565b50019161457661456461455e7fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b9361456d6103a2565b91829182614017565b0390a3614510565b50959096614516925061450b90614505565b949361451690614511565b5050505050565b969390506145bc6145b7839794999693612e9f565b613d4c565b976145c65f612cc2565b5b806145e26145dc6145d78b612e9f565b610554565b91610554565b101561463c576146379061463261460d6146085f6146018d8690612ea3565b5001613dcd565b613e94565b61461f61461982613668565b91613662565b2061462d8d91849092613d9a565b613dba565b612cde565b6145c7565b509295919497909396614129565b614652616496565b61465a61465c565b565b61466d6146685f6125e9565b616bae565b565b61467761464a565b565b61468360a06116bc565b90565b5f90565b5f90565b5f90565b61469a614679565b90602080808080866146aa614686565b8152016146b5612750565b8152016146c0612754565b8152016146cb61468a565b8152016146d661468e565b81525050565b6146e4614692565b90565b906146f190610554565b9052565b906146ff906103b4565b9052565b9061470d906104af565b9052565b9061471b90611159565b9052565b9061479e6147956002614730614679565b9461474761473f5f830161093e565b5f88016146e7565b61475f61475660018301611049565b602088016146f5565b61477761476e60018301611076565b60408801614703565b61478f614786600183016110a3565b60608801614711565b016110c7565b60808401613dba565b565b6147a99061471f565b90565b6147d1916147c76147cc926147bf6146dc565b506003610fc8565b611012565b6147a0565b90565b5f90565b906147e29061074c565b5f5260205260405f2090565b906147f890611006565b5f5260205260405f2090565b6148299161481f614824926148176147d4565b50600c6147d8565b6147ee565b611049565b90565b614834616bc4565b61483c615e04565b61484e614848836103ef565b916103ef565b0361485e5761485c90616bae565b565b614879905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61489c6148976148a19261488f6127ae565b506004613334565b61334a565b616ac7565b90565b6148ae90516104af565b90565b6148c56148c06148ca926125ca565b610749565b6104af565b90565b6148d790516103b4565b90565b6148ee6148e96148f3926104af565b610749565b610554565b90565b61490561490b91939293610554565b92610554565b820180921161491657565b6128e4565b909291926149276139f3565b506149306127ae565b5061493a8261637e565b9361495761495261494d60058690613334565b61334a565b616ac7565b92614964602087016148a4565b6149766149705f6148b1565b916104af565b148015614a68575b8015614a4d575b614a33576149bf866149b96149b460206149ad6149a85f614a1c9b9c9d016148cd565b61357b565b93016148a4565b6148da565b906128f8565b91806149da6149d46149cf61132d565b610554565b91610554565b115f14614a2e57506149ea61132d565b5b6149f68482906148f6565b614a08614a0288610554565b91610554565b115f14614a1f5750845b9092909192616bfa565b91565b614a2990846148f6565b614a12565b6149eb565b5050509150614a49614a445f612cc2565b613a31565b9190565b5082614a61614a5b86610554565b91610554565b1015614985565b5083614a7c614a765f612cc2565b91610554565b1461497e565b614a9390614a8e616496565b614a95565b565b614aa090600a61269a565b565b614aab90614a82565b565b5f90565b614ab9614aad565b50614ac35f6125bd565b90565b5090565b9190811015614ada576020020190565b61077e565b35614ae9816103fb565b90565b5f80fd5b60e01b90565b5f910312614b0057565b6103ac565b916020614b26929493614b1f60408201965f830190610c21565b0190610cbc565b565b614b306103a2565b3d5f823e3d90fd5b90929192614b455f612cc2565b5b80614b63614b5d614b58858990614ac6565b610554565b91610554565b1015614c1257614b7230613c85565b9063ba1fb10384614b8d614b88868a8691614aca565b614adf565b93803b15614c0d57614bb25f8094614bbd614ba66103a2565b98899687958694614af0565b845260048401614b05565b03925af1918215614c0857614bd792614bdc575b50612cde565b614b46565b614bfb905f3d8111614c01575b614bf381836108d7565b810190614af6565b5f614bd1565b503d614be9565b614b28565b614aec565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614c4d60136020926109d5565b614c5681614c19565b0190565b614c6f9060208101905f818303910152614c40565b90565b15614c7957565b614c816103a2565b62461bcd60e51b815280614c9760048201614c5a565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614ccf60106020926109d5565b614cd881614c9b565b0190565b614cf19060208101905f818303910152614cc2565b90565b15614cfb57565b614d036103a2565b62461bcd60e51b815280614d1960048201614cdc565b0390fd5b90565b90614d3367ffffffffffffffff91612677565b9181191691161790565b90565b90614d55614d50614d5c9261074c565b614d3d565b8254614d20565b9055565b9190614d7a81614d7381614d7f956109d5565b809561171d565b6108b9565b0190565b9091614d9a9260208301925f818503910152614d60565b90565b614dc233614dbc614db6614db1600a6125bd565b6103ef565b916103ef565b14614c72565b614de8614de3614ddc614dd760058590613334565b61334a565b84906164e4565b614cf4565b614e14614e09614e04614dfd60038590610fc8565b8590611012565b614d1d565b600160039101613381565b614e32614e2b614e2660048490613334565b61334a565b8390616d16565b50614e5a614e3f42613597565b614e55614e4e600c85906147d8565b85906147ee565b614d40565b909192614e90614e8a7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614ea5614e9c6103a2565b92839283614d83565b0390a3565b614eb460806116bc565b90565b614ec2913691611728565b90565b52565b90614ed2906104c2565b9052565b5190565b90614ee4816109d1565b9067ffffffffffffffff8211614fa457614f0882614f0285546107e4565b85612ecf565b602090601f8311600114614f3c57918091614f2b935f92614f30575b5050612a07565b90555b565b90915001515f80614f24565b601f19831691614f4b85610817565b925f5b818110614f8c57509160029391856001969410614f72575b50505002019055614f2e565b614f82910151601f8416906129f2565b90555f8080614f66565b91936020600181928787015181550195019201614f4e565b6108c3565b90614fb391614eda565b565b614fbf90516104c2565b90565b9061501f6060600361502594614fe55f8201614fdf5f8801614ed6565b90614fa9565b614ffe60018201614ff860208801613ead565b90613018565b6150176002820161501160408801613ead565b90613018565b019201614fb5565b9061306a565b565b91906150385761503691614fc2565b565b612ba3565b908154916801000000000000000083101561506d578261506591600161506b95018155612ea3565b90615027565b565b6108c3565b61519095615179849661517061516861515461514f615182976150f56150d56150cf61518b9d8d9f9d6150ca336150c46150be6150b96150b460078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b6150ee6150e86150e3611921565b610554565b91610554565b1115612ddb565b6151128661510b6151058d610554565b91610554565b1015612e6a565b61514861512961512460088490610768565b610792565b61514261513c61513761156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b989996929496615162614eaa565b9a614eb7565b5f8a01614ec5565b602088016146e7565b604086016146e7565b60608401614ec8565b61503d565b565b6151c0906151bb6151b66151af6151aa846006613334565b61334a565b33906164e4565b61351b565b6152a1565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b6151f6601e6020926109d5565b6151ff816151c2565b0190565b6152189060208101905f8183039101526151e9565b90565b60401b90565b9061523568ff00000000000000009161521b565b9181191691161790565b61525361524e615258926104af565b610749565b6104af565b90565b90565b9061527361526e61527a9261523f565b61525b565b8254615221565b9055565b91602061529f92949361529860408201965f830190611171565b0190611171565b565b6152bf6152ba6152b360038490610fc8565b3390611012565b614d1d565b906152cc600183016110a3565b91826152e16152db6003611159565b91611159565b1461540557826152f96152f35f611159565b91611159565b1480156153ea575b6153e557615328906153166001808301613381565b60016153215f6148b1565b910161525e565b61534661533f61533a60048490613334565b61334a565b339061645c565b50803361537c6153767fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b916153856103a2565b8061538f8161044b565b0390a39033909160016153cb6153c57f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936153e06153d76103a2565b9283928361527e565b0390a3565b505050565b50826153ff6153f96001611159565b91611159565b14615301565b61540d6103a2565b62461bcd60e51b81528061542360048201615203565b0390fd5b61543090615192565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b615466600e6020926109d5565b61546f81615432565b0190565b6154889060208101905f818303910152615459565b90565b1561549257565b61549a6103a2565b62461bcd60e51b8152806154b060048201615473565b0390fd5b90565b6154cb6154c66154d0926154b4565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b61550760126020926109d5565b615510816154d3565b0190565b6155299060208101905f8183039101526154fa565b90565b1561553357565b61553b6103a2565b62461bcd60e51b81528061555160048201615514565b0390fd5b90565b61556c61556761557192615555565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b6155a860176020926109d5565b6155b181615574565b0190565b6155ca9060208101905f81830391015261559b565b90565b156155d457565b6155dc6103a2565b62461bcd60e51b8152806155f2600482016155b5565b0390fd5b61560060606116bc565b90565b9061561861561361561f9261305b565b613067565b8254613353565b9055565b9061566560405f61566b9461564582820161563f8488016148cd565b90614d40565b61565d828201615657602088016148a4565b9061525e565b019201614fb5565b90615603565b565b9061567791615623565b565b91602061569a92949361569360408201965f830190610c21565b0190611129565b565b336156cf6156c97f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b1480156157bb575b6156e09061548b565b6156fe826156f76156f1603c6154b7565b916103b4565b101561552c565b61571c8361571561570f6001615558565b916104af565b10156155cd565b615775826157648561575b61573d5f61573760028990612287565b016122b1565b916157526157496155f6565b955f87016146f5565b60208501614703565b60408301614ec8565b61577060028490612287565b61566d565b90916157a17fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b926157b66157ad6103a2565b92839283615679565b0390a2565b506156e0336157e56157df6157da6157d5600787906113c5565b6125bd565b6103ef565b916103ef565b1490506156d7565b634e487b7160e01b5f52601260045260245ffd5b61580d61581391610554565b91610554565b90811561581e570490565b6157ed565b61583761583261583c92610554565b610749565b6104af565b90565b61585361584e615858926125ca565b610749565b6103b4565b90565b61587961587461586d60038490610fc8565b8490611012565b614d1d565b906158838161637e565b61588f600184016110a3565b6158a261589c6003611159565b91611159565b14615ab6576158b25f840161093e565b6158c46158be5f612cc2565b91610554565b14615ab0576158fa6158e1426158db5f870161093e565b906135d6565b6158f46158ef5f85016148cd565b61357b565b90615801565b8061590e61590860ff6148da565b91610554565b115f14615aa2575060ff5b908161593861593261592d60018801611076565b6104af565b916104af565b11615945575b5050505050565b615952826001860161525e565b61596761595e5f61583f565b60018601614d40565b61598561597f61597a60208594016148a4565b6104af565b916104af565b101580615a7b575b615998575b8061593e565b6159b36159a7600185016110a3565b93600160029101613381565b6159d16159ca6159c560048590613334565b61334a565b8590616d16565b508190849091615a1f615a0d615a077f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615a166103a2565b91829182611627565b0390a39190916002615a5a615a547f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615a6f615a666103a2565b9283928361527e565b0390a35f808080615992565b50615a88600184016110a3565b615a9b615a956002611159565b91611159565b141561598d565b615aab90615823565b615919565b50505050565b50505050565b606090565b67ffffffffffffffff8111615ad95760208091020190565b6108c3565b90615af0615aeb83615ac1565b6116bc565b918252565b615aff60806116bc565b90565b90615b69615b606003615b13615af5565b94615b2a615b225f8301610900565b5f8801614ec5565b615b42615b396001830161093e565b602088016146e7565b615b5a615b516002830161093e565b604088016146e7565b01610965565b60608401614ec8565b565b615b7490615b02565b90565b90615b8182610792565b615b8a81615ade565b92615b986020850191610796565b5f915b838310615ba85750505050565b60046020600192615bb885615b6b565b815201920192019190615b9b565b615bcf90615b77565b90565b615be9615bee91615be1615abc565b506008610768565b615bc6565b90565b615c1f90615c1a615c15615c0e615c09846006613334565b61334a565b33906164e4565b61351b565b615c7a565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615c55601f6020926109d5565b615c5e81615c21565b0190565b615c779060208101905f818303910152615c48565b90565b615c98615c93615c8c60038490610fc8565b3390611012565b614d1d565b90615ca5600183016110a3565b9182615cba615cb46003611159565b91611159565b14615d4057615cce90600160049101613381565b615cec615ce5615ce060048490613334565b61334a565b3390616d16565b50903390916004615d26615d207f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615d3b615d326103a2565b9283928361527e565b0390a3565b615d486103a2565b62461bcd60e51b815280615d5e60048201615c62565b0390fd5b615d6b90615bf1565b565b909182615d7d81615d8493611d33565b809361171d565b0190565b615d999060209493615da093615d6d565b8092611d64565b0190565b9091615dbb90615db26103a2565b93849384615d88565b03902090565b9091615dcc92615da4565b90565b92615df4615dfc9392615def615e0196615de76127ae565b506009611d07565b611d1d565b919091615dc1565b61093e565b90565b615e0c614aad565b50615e1760016125bd565b90565b615e249051611159565b90565b90565b615e3e615e39615e4392615e27565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615ea060216040926109d5565b615ea981615e46565b0190565b615ec29060208101905f818303910152615e93565b90565b15615ecc57565b615ed46103a2565b62461bcd60e51b815280615eea60048201615ead565b0390fd5b90615f9f615f9a615fa49333615f1f615f19615f14615f0f600786906113c5565b6125bd565b6103ef565b916103ef565b14801561605d575b615f309061548b565b615f4e615f49615f4260038490610fc8565b8690611012565b6147a0565b615f5a60608201615e1a565b615f6d615f676003611159565b91611159565b03615fa7575b50615f92615f8b615f8660058490613334565b61334a565b8590616d16565b506004613334565b61334a565b616d16565b50565b61602390615ff7615fe7615fba8561637e565b615fe1615fdc6020615fd5615fd05f86016148cd565b61357b565b93016148a4565b6148da565b906128f8565b615ff1600a615e2a565b906128f8565b6160025f8301613ead565b61601461600e5f612cc2565b91610554565b119182616029575b5050615ec5565b5f615f73565b61605491925061604861604e916160425f429201613ead565b906135d6565b92610554565b91610554565b10155f8061601c565b50615f303361607b616075616070614ab1565b6103ef565b916103ef565b149050615f27565b906160ad6160b291616093613b22565b506160a86160a08561637e565b946003610fc8565b611012565b6147a0565b6160bd5f8201613ead565b6160cf6160c95f612cc2565b91610554565b1461610a576161006160fb5f6160f4616106946160ee83429201613ead565b906135d6565b94016148cd565b61357b565b91610554565b1090565b50505f90565b6161219061611c616496565b616123565b565b61612e81600161269a565b616136614ab1565b9061616a6161647f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b916161736103a2565b8061617d8161044b565b0390a3565b61618b90616110565b565b5f6161cc6161d2936161c4336161be6161b86161b36161ae60078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b01615603565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b616208600e6020926109d5565b616211816161d4565b0190565b61622a9060208101905f8183039101526161fb565b90565b1561623457565b61623c6103a2565b62461bcd60e51b81528061625260048201616215565b0390fd5b6162923361628c6162867f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b6162b86162b36162ac6162a760068590613334565b61334a565b8490616d16565b61622d565b6162d66162cf6162ca60048490613334565b61334a565b8390616d16565b509061630b6163057f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163146103a2565b8061631e8161044b565b0390a3565b906163706163675f616333612743565b9461634a616342838301611049565b8388016146f5565b616361616358838301611076565b60208801614703565b016122b1565b60408401614ec8565b565b61637b90616323565b90565b61639561639a9161638d61278e565b506002612287565b616372565b6163a55f82016148cd565b6163b76163b15f61583f565b916103b4565b146163fd575b6163c9602082016148a4565b6163db6163d55f6148b1565b916104af565b146163e4575b90565b6163f86163ef61160f565b60208301614703565b6163e1565b616410616408610c08565b5f83016146f5565b6163bd565b61641e90610fde565b90565b61643561643061643a926103e4565b610749565b610554565b90565b61645161644c61645692610554565b612677565b610f01565b90565b90565b9061648e61648861648361647e5f61649396616476613b22565b500194616415565b616421565b61643d565b91616459565b616df9565b90565b61649e614ab1565b6164b76164b16164ac616bc4565b6103ef565b916103ef565b036164be57565b6164e06164c9616bc4565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b9061651661651061650b6165065f61651b966164fe613b22565b500194616415565b616421565b61643d565b91616459565b616e5c565b90565b61653d916165349161652e614aad565b50616ebc565b90929192616f7c565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61657460136020926109d5565b61657d81616540565b0190565b6165969060208101905f818303910152616567565b90565b156165a057565b6165a86103a2565b62461bcd60e51b8152806165be60048201616581565b0390fd5b6165cb90610f01565b90565b6165d790610922565b90565b906165ef6165ea6165f6926165c2565b6165ce565b8254613002565b9055565b616603906103b4565b67ffffffffffffffff81146166185760010190565b6128e4565b90565b61663461662f6166399261661d565b610749565b6104af565b90565b91602061665d92949361665660408201965f830190611129565b0190610557565b565b61666890610fde565b90565b6166749061665f565b90565b61668090610ffa565b90565b6040906166ac6166b394969593966166a260608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b94929391936166d86166d36166cc60038990610fc8565b8790611012565b614d1d565b936166e28761637e565b9361670c6166f2600188016110a3565b6167056166ff6003611159565b91611159565b1415616599565b61672a61672361671e60058b90613334565b61334a565b889061645c565b506167ff604061673c600189016110a3565b96616749425f8b01613018565b616773616757858790613654565b61676961676382613668565b91613662565b2060028b016165da565b61678861677f5f6148b1565b60018b0161525e565b6167a660018a016167a061679b82611049565b6165fa565b90614d40565b6167ae613c56565b50856167c26167bc5f6148b1565b916104af565b145f14616a83576167d95f995b60018b9101613381565b876167ed6167e76002611159565b91611159565b1480616a67575b6169f9575b01614fb5565b806169d5575b6169bf575b505085918591924261684e6168486168427f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b9461686361685a6103a2565b9283928361663c565b0390a48061687961687384611159565b91611159565b03616969575b505061688b600b6125bd565b6168a561689f61689a5f6125e9565b6103ef565b916103ef565b036168af575b5050565b6168c96168c46168bf600b6125bd565b61666b565b616677565b9163d47853b69190926168db42613597565b92813b15616964575f6169019161690c82966168f56103a2565b98899788968795614af0565b855260048501616683565b03925af19081616938575b50155f1461693357600161692e575b5b5f806168ab565b616926565b616927565b616957905f3d811161695d575b61694f81836108d7565b810190614af6565b5f616917565b503d616945565b614aec565b838391926169a061699a7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936169b56169ac6103a2565b9283928361527e565b0390a35f8061687f565b6169ce91889188909192617439565b5f8061680a565b506169e1818390612d7e565b6169f36169ed5f612cc2565b91610554565b11616805565b616a16616a0f616a0a8d6004613334565b61334a565b8b9061645c565b508a8a616a4c616a467fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616a556103a2565b80616a5f8161044b565b0390a36167f9565b5088616a7c616a766002611159565b91611159565b14156167f4565b85616a97616a916064616620565b916104af565b105f14616aaa576167d96001995b6167cf565b6167d9600199616ac28d8d8b908b908a928c946170ed565b616aa5565b616ade5f616ae392616ad76127ae565b5001616459565b6175f7565b90565b616af2616af791610922565b61297e565b90565b616b0e616b09616b1392610554565b610749565b6103e4565b90565b616b41616b3c616b4b93616b375f616b4695616b30614aad565b5001616459565b617665565b616ae6565b616afa565b610ffa565b90565b91906008616b6e910291616b6860018060a01b0384612955565b92612955565b9181191691161790565b9190616b8e616b89616b9693611006565b612697565b908354616b4e565b9055565b616bac91616ba6614aad565b91616b78565b565b616bc290616bbd5f6001616b9a565b617686565b565b616bcc614aad565b503390565b616bda90610554565b5f198114616be85760010190565b6128e4565b616bf790516103ef565b90565b93919293616c066139f3565b50616c1a616c158584906135d6565b613a31565b92616c245f612cc2565b925b80616c39616c3388610554565b91610554565b1015616ca757616c5d616c56616c5160058690613334565b61334a565b8290616b16565b616c6984828a916176e5565b616c7d575b50616c7890612cde565b616c26565b616c789194616c9b616ca092616c968991849092613a58565b613a78565b616bd1565b9390616c6e565b509450509150616cb682613a31565b92616cc05f612cc2565b5b80616cd4616cce86610554565b91610554565b1015616d1057616d0b90616d06616cf4616cef868490613a58565b616bed565b616d018891849092613a58565b613a78565b612cde565b616cc1565b50915050565b90616d48616d42616d3d616d385f616d4d96616d30613b22565b500194616415565b616421565b61643d565b91616459565b617831565b90565b90565b5f5260205f2090565b5490565b616d6981616d5c565b821015616d8357616d7b600191616d53565b910201905f90565b61077e565b9190616d9e616d99616da6936165c2565b6165ce565b908354612959565b9055565b9081549168010000000000000000831015616dda5782616dd2916001616dd895018155616d60565b90616d88565b565b6108c3565b5490565b90616ded906165c2565b5f5260205260405f2090565b616e01613b22565b50616e16616e10828490616e5c565b156104c2565b5f14616e5657616e4c616e5192616e38616e315f8501616d50565b8290616daa565b6001616e455f8501616ddf565b9301616de3565b613018565b600190565b50505f90565b616e7a916001616e7592616e6e613b22565b5001616de3565b61093e565b616e8c616e865f612cc2565b91610554565b141590565b5f90565b5f90565b90565b616eb0616eab616eb592616e99565b610749565b610554565b90565b5f90565b919091616ec7614aad565b50616ed0616e91565b50616ed9616e95565b50616ee383613668565b616ef6616ef06041616e9c565b91610554565b145f14616f3d57616f369192616f0a616e95565b50616f13616e95565b50616f1c616eb8565b506020810151606060408301519201515f1a9091926179b0565b9192909190565b50616f475f6125e9565b90616f5b616f56600294613668565b61643d565b91929190565b60041115616f6b57565b611136565b90616f7a82616f61565b565b80616f8f616f895f616f70565b91616f70565b145f14616f9a575050565b80616fae616fa86001616f70565b91616f70565b145f14616fd1575f63f645eedf60e01b815280616fcd6004820161044b565b0390fd5b80616fe5616fdf6002616f70565b91616f70565b145f146170135761700f616ff883616ae6565b5f91829163fce698f760e01b835260048301610564565b0390fd5b6170266170206003616f70565b91616f70565b1461702e5750565b617049905f9182916335e2f38360e21b835260048301610f11565b0390fd5b61706161705c6170669261130e565b610749565b6104af565b90565b61707561707b916103b4565b916103b4565b90039067ffffffffffffffff821161708f57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b6170c8601b6020926109d5565b6170d181617094565b0190565b6170ea9060208101905f8183039101526170bb565b90565b93505092506171056170ff60c861704d565b916104af565b1015617110575b5050565b61711942613597565b61713761713261712b600c85906147d8565b85906147ee565b611049565b8061714a6171445f61583f565b916103b4565b149081156171d0575b5061715f575b5061710c565b61717e90617179617172600c85906147d8565b85906147ee565b614d40565b906171b26171ac7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916171bb6103a2565b806171c5816170d5565b0390a35f8080617159565b6171db915082617069565b6171f46171ee6171e9610f7a565b6103b4565b916103b4565b10155f617153565b90565b61721361720e617218926171fc565b610749565b610554565b90565b9092919261723061722b826116fa565b6116bc565b9381855260208501908284011161724c5761724a926109de565b565b6116f6565b9080601f8301121561726f5781602061726c9351910161721b565b90565b6105af565b90505190617281826106f9565b565b9190916040818403126172d65761729a60406116bc565b925f8201519167ffffffffffffffff83116172d1576172be826172ca948301617251565b5f860152602001617274565b6020830152565b6116f2565b6116ee565b9291906172ef6172ea826116d1565b6116bc565b93818552602080860192028101918383116173465781905b838210617315575050505050565b815167ffffffffffffffff8111617341576020916173368784938701617283565b815201910190617307565b6105af565b6105b7565b9080601f8301121561736957816020617366935191016172db565b90565b6105af565b9060208282031261739e575f82015167ffffffffffffffff811161739957617396920161734b565b90565b6103b0565b6103ac565b60209181520190565b91906173c6816173bf816173cb956173a3565b809561171d565b6108b9565b0190565b90916173e69260208301925f8185039101526173ac565b90565b6173f36032611551565b90565b9493916060916174379461742261742f9361741860808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b91617445818590612d7e565b6174576174515f612cc2565b91610554565b146175f157617467818590612d7e565b61747b61747561c3506171ff565b91610554565b116175eb575f617489613978565b9461749330613c85565b6174b56331e3bd1b9492946174c06174a96103a2565b96879586948594614af0565b8452600484016173cf565b03915afa80915f926175c7575b50155f146175be575060016175b9575b6174e683610d97565b6174ff6174f96174f46173e9565b610554565b91610554565b115f146175ab5761750e6173e9565b5b61751830613c85565b906365a6936e93929490823b156175a6575f9461755386926175489461753c6103a2565b998a9889978896614af0565b8652600486016173f6565b03925af1908161757a575b50155f14617575576001617570575b5b565b61756d565b61756e565b617599905f3d811161759f575b61759181836108d7565b810190614af6565b5f61755e565b503d617587565b614aec565b6175b483610d97565b61750f565b505050565b909250916174dd565b6175e49192503d805f833e6175dc81836108d7565b81019061736e565b905f6174cd565b50505050565b50505050565b5f61760b916176046127ae565b5001616ddf565b90565b5f5260205f2090565b61762081616ddf565b82101561763a5761763260019161760e565b910201905f90565b61077e565b61764f9060086176549302610c78565b6110b0565b90565b90617662915461763f565b90565b617683915f61767d92617676616e95565b5001617617565b90617657565b90565b61768f5f6125bd565b617699825f61269a565b906176cd6176c77f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916176d66103a2565b806176e08161044b565b0390a3565b6176ed613b22565b5061771561770f61770861770360068590613334565b61334a565b84906164e4565b156104c2565b6177b7576177359161772b617730926003610fc8565b611012565b6147a0565b6177405f8201613ead565b61775261774c5f612cc2565b91610554565b148015617791575b61778b5761778061777a617786926177745f429201613ead565b906135d6565b92610554565b91610554565b101590565b50505f90565b5061779e60608201615e1a565b6177b16177ab6003611159565b91611159565b1461775a565b5050505f90565b6177d26177cd6177d792615555565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b617800916177fa616e95565b91616d88565b565b61780b81616d5c565b801561782c5760019003906178296178238383616d60565b906177ee565b55565b6177da565b617839613b22565b5061785061784b600183018490616de3565b61093e565b908161786461785e5f612cc2565b91610554565b14155f14617930576178e29260016178dd928461788b5f96617885856177be565b906135d6565b6178a8617899888501616ddf565b6178a2866177be565b906135d6565b816178bb6178b583610554565b91610554565b036178e7575b5050506178d76178d2868301616d50565b617802565b01616de3565b6129bf565b600190565b6179289261791a617906617900617923948c8901617617565b90617657565b9361791485918c8901617617565b90616d88565b91858501616de3565b613018565b5f80806178c1565b5050505f90565b90565b61794e61794961795392617937565b610749565b610554565b90565b61798b61799294617981606094989795617977608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179a86179a36179ad926125ca565b612677565b610f01565b90565b9392936179bb614aad565b506179c4616e91565b506179cd616e95565b506179d785616ae6565b617a09617a037f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a061793a565b91610554565b11617a965790617a2c602094955f94939293617a236103a2565b94859485617956565b838052039060015afa15617a9157617a445f51612677565b80617a5f617a59617a545f6125e9565b6103ef565b916103ef565b14617a75575f91617a6f5f617994565b91929190565b50617a7f5f6125e9565b600191617a8b5f617994565b91929190565b614b28565b505050617aa25f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38266:187:-:0;;;;;;;;;-1:-1:-1;6415:38266:187;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;11660:59::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;6415:38266;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7851:61::-;7903:9;;;:::i;:::-;7851:61;:::o;:::-;;;:::i;:::-;;:::o;6415:38266::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;12224:30::-;;;;;;:::i;:::-;;:::o;6415:38266::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;14180:52::-;14223:9;;;:::i;:::-;14180:52;:::o;:::-;;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8133:41::-;;;:::o;6415:38266::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;12352:53::-;12398:7;;;:::i;:::-;12352:53;:::o;:::-;;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10898:74::-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38266::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38266:187;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;39408:43::-;39448:3;;;:::i;:::-;39408:43;:::o;:::-;;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;11530:47::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;12045:35::-;;;:::o;6415:38266::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;32544:51::-;32593:2;;;:::i;:::-;32544:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7980:55::-;8034:1;;;:::i;:::-;7980:55;:::o;:::-;;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;32719:51::-;32768:2;;;:::i;:::-;32719:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;11816:85::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;12131:29::-;;;;;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10758:58::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;8447:189::-;8492:144;8447:189;:::o;:::-;;;:::i;:::-;;:::o;6415:38266::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30254:263::-;30478:24;:32;30254:263;30336:53;30344:10;:24;;30358:10;30344:24;:::i;:::-;;;:::i;:::-;;30336:53;:::i;:::-;30399:69;30407:24;;:13;30421:9;30407:24;;:::i;:::-;;:::i;:::-;:38;;30435:10;30443:1;30435:10;:::i;:::-;30407:38;:::i;:::-;;;:::i;:::-;;30399:69;:::i;:::-;30478:13;;:24;:::i;:::-;:32;:::i;:::-;30254:263::o;6415:38266::-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;37212:147::-;37331:21;37212:147;37290:22;;:::i;:::-;37342:9;37331:21;:::i;:::-;37324:28;:::o;6415:38266::-;;;:::o;36112:176::-;36232:35;:49;36112:176;36232:25;:49;36112:176;36206:7;;:::i;:::-;36232:14;;:25;:::i;:::-;:35;:::i;:::-;:49;;:::i;:::-;36225:56;:::o;6415:38266::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38266:187;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33545:640::-;;;;;33662:68;33670:10;:38;;33684:24;;:13;33698:9;33684:24;;:::i;:::-;;:::i;:::-;33670:38;:::i;:::-;;;:::i;:::-;;33662:68;:::i;:::-;33740:77;33748:18;:11;;:18;;:::i;:::-;:44;;33770:22;;:::i;:::-;33748:44;:::i;:::-;;;:::i;:::-;;;33740:77;:::i;:::-;33827:32;;33834:25;:14;33849:9;33834:25;;:::i;:::-;33827:32;:::i;:::-;33874:13;33886:1;33874:13;:::i;:::-;33913:3;33889:1;:22;;33893:18;:11;;:18;;:::i;:::-;33889:22;:::i;:::-;;;:::i;:::-;;;;;33913:3;33946:11;33932:85;33940:33;:26;33946:19;:14;:11;;33958:1;33946:14;;:::i;:::-;:19;;;;;:::i;:::-;33940:26;;:::i;:::-;:33;;:::i;:::-;:59;;33977:22;;:::i;:::-;33940:59;:::i;:::-;;;:::i;:::-;;;33932:85;:::i;:::-;34031:77;34039:23;;:14;:11;;34051:1;34039:14;;:::i;:::-;:23;;:::i;:::-;:50;;34066:23;;:14;:11;;34078:1;34066:14;;:::i;:::-;:23;;:::i;:::-;34039:50;:::i;:::-;;;:::i;:::-;;;34031:77;:::i;:::-;34122:46;:30;:25;:14;34137:9;34122:25;;:::i;:::-;:30;:::i;:::-;34153:14;:11;;34165:1;34153:14;;:::i;:::-;34122:46;;:::i;:::-;33913:3;:::i;:::-;33874:13;;33889:22;;;;;;33545:640::o;6415:38266::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30760:601::-;30850:53;30858:10;:24;;30872:10;30858:24;:::i;:::-;;;:::i;:::-;;30850:53;:::i;:::-;30913:47;30921:8;:22;;30933:10;30941:1;30933:10;:::i;:::-;30921:22;:::i;:::-;;;:::i;:::-;;;30913:47;:::i;:::-;30970:76;30978:45;:35;:31;:20;30999:9;30978:31;;:::i;:::-;:35;:::i;:::-;31014:8;30978:45;;:::i;:::-;30970:76;:::i;:::-;31237:63;31282:18;31237:42;:35;:25;:14;31252:9;31237:25;;:::i;:::-;31263:8;31237:35;;:::i;:::-;:42;:63;:::i;:::-;31345:8;31315:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;30760:601::o;1500:62:2:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34488:188:187:-;34643:26;34488:188;34643:26;;:::i;:::-;34488:188::o;:::-;;;;:::i;:::-;:::o;6415:38266::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;7140:166;;7298:1;7140:166;;;;;;;7200:88;7208:52;:40;:31;15071:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38266::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;15100:9;:27;;15112:15;15100:27;:::i;:::-;;;:::i;:::-;;15096:95;;15205:27;:15;:27;15223:9;15205:27;:::i;:::-;;;:::i;:::-;:47;;15235:17;;:::i;:::-;15205:47;:::i;:::-;;;:::i;:::-;;15201:135;;15921:7;15418:18;;15759:25;15794:50;15418:18;;15390:235;15418:18;15390:235;15418:18;15759:25;15418:18;;;15566;15418;;:::i;:::-;15454:10;;15482:9;15509:11;15538:10;15576:7;15566:18;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;15602:9;15390:235;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15367:268;;;;:::i;:::-;;;:::i;:::-;;15672:58;15701:16;15672:58;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15662:69;;;;:::i;:::-;;;:::i;:::-;;15774:9;15759:25;:::i;:::-;;;:::i;:::-;15802:20;;15812:10;15802:20;:::i;:::-;;;:::i;:::-;;15794:50;:::i;:::-;15884:11;15897:10;15909;15921:7;;;;:::i;:::-;14803:1133::o;15201:135::-;15301:23;15308:15;15301:23;:::i;:::-;15275:50;;;;;;;;;;;;;;;:::i;:::-;;;;15096:95;15167:23;15174:15;15167:23;:::i;:::-;15136:55;;;;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;;:::i;:::-;:::o;6415:38266::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;34839:160::-;;34957:35;34839:160;34913:25;;:::i;:::-;34968:7;;34957:35;;;;:::i;:::-;34950:42;:::o;43460:136::-;43556:31;:24;:33;43460:136;43530:7;;:::i;:::-;43556:13;;:24;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;43549:40;:::o;6415:38266::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;36606:359::-;;36684:16;;:::i;:::-;36728;:36;:34;:27;:16;36745:9;36728:27;;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;36814:5;36800:20;36814:5;36800:20;:::i;:::-;36847:1;36835:13;36847:1;36835:13;:::i;:::-;36861:3;36850:1;:9;;36854:5;36850:9;:::i;:::-;;;:::i;:::-;;;;;36861:3;36892:16;36880:45;36892:33;:30;:27;:16;36909:9;36892:27;;:::i;:::-;:30;:::i;:::-;36923:1;36892:33;;:::i;:::-;36880:45;:6;36887:1;;36880:45;;;:::i;:::-;;:::i;:::-;36861:3;:::i;:::-;36835:13;;36850:9;;;;;36945:13;:::o;6415:38266::-;;;:::o;35555:261::-;;35641:4;;:::i;:::-;35664:14;:42;;:35;:25;:14;35679:9;35664:25;;:::i;:::-;35690:8;35664:35;;:::i;:::-;:42;;:::i;:::-;:64;;35710:18;35664:64;:::i;:::-;;;:::i;:::-;;:145;;;;;35555:261;35657:152;;;:::o;35664:145::-;35744:42;:14;;:42;:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;:65;;35790:19;35744:65;:::i;:::-;;;:::i;:::-;;35664:145;;;;39662:200;39796:59;39662:200;39743:26;;:::i;:::-;39827:9;39838:1;39841:13;39796:59;39841:13;;:::i;:::-;39796:59;;:::i;:::-;;;:::i;:::-;39781:74;39662:200;:::o;7140:166::-;;7298:1;7140:166;;;;7200:88;7208:52;:40;:31;16286:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;16072:320::-;;16377:7;16072:320;;;;16353:10;16365;16377:7;;;;:::i;:::-;16072:320::o;:::-;;;;;;;;:::i;:::-;:::o;31998:178::-;;32119:40;:31;:50;31998:178;32096:4;;:::i;:::-;32119:20;;:31;:::i;:::-;:40;:::i;:::-;:50;:::i;:::-;32112:57;:::o;6415:38266::-;;;:::o;35872:173::-;35996:35;:42;35872:173;35996:25;:42;35872:173;35967:10;;:::i;:::-;35996:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;35989:49;:::o;6415:38266::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;20231:2843::-;;;;;20414:53;20422:10;:27;;20436:13;20444:4;20436:13;:::i;:::-;20422:27;:::i;:::-;;;:::i;:::-;;20414:53;:::i;:::-;20478:66;20519:25;:14;20534:9;20519:25;;:::i;:::-;20478:66;:::i;:::-;20651:8;20637:23;20651:8;20637:23;:::i;:::-;20687:1;20675:13;20687:1;20675:13;:::i;:::-;20704:3;20690:1;:12;;20694:8;20690:12;:::i;:::-;;;:::i;:::-;;;;;20704:3;20755:5;20723:47;20749:20;20755:13;:8;:5;20761:1;20755:8;;:::i;:::-;;:13;;20749:20;:::i;:::-;20739:31;;;;:::i;:::-;;;:::i;:::-;;20723:47;:10;20734:1;;20723:47;;;:::i;:::-;;:::i;:::-;20704:3;:::i;:::-;20675:13;;20690:12;;;;;;;20813:18;:11;:18;:::i;:::-;:22;;20834:1;20813:22;:::i;:::-;;;:::i;:::-;;20914:26;;;:::i;:::-;20954:14;;20950:237;;20670:111;21267:13;21279:1;21267:13;:::i;:::-;21296:3;21282:1;:12;;21286:8;21282:12;:::i;:::-;;;:::i;:::-;;;;;21328:4;21371:5;21449:14;21445:737;;21296:3;22244:5;;;;;21296:3;22244:5;22240:198;;21296:3;;;;;:::i;:::-;21267:13;;22240:198;22320:5;22303:13;:8;22269:33;:48;22320:5;22269:23;22320:14;;:8;22269:65;22320:5;22326:1;22320:8;;:::i;:::-;;:14;;:::i;:::-;22269:12;;:23;:::i;:::-;:33;:::i;:::-;22303:5;22309:1;22303:8;;:::i;:::-;;:13;;22269:48;;:::i;:::-;:65;:::i;:::-;22372:9;;22383:8;22393:5;22408:14;;:8;22393:13;:8;:5;22399:1;22393:8;;:::i;:::-;;:13;;22408:5;22414:1;22408:8;;:::i;:::-;;:14;;:::i;:::-;22357:66;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;22240:198;;;;;21445:737;21500:1;;;;;;21488:13;21500:1;21488:13;:::i;:::-;21527:3;21503:1;:22;;21507:18;:11;:18;:::i;:::-;21503:22;:::i;:::-;;;:::i;:::-;;;;;21558:13;;:10;;:13;:::i;:::-;;:::i;:::-;:29;;21575:12;;:9;21585:1;21575:12;;:::i;:::-;;:::i;:::-;21558:29;:::i;:::-;;;:::i;:::-;;21554:433;;21527:3;;;:::i;:::-;21488:13;;21554:433;21635:4;;;;;;;21296:3;21635:4;;;;;;21669:5;;:14;;:8;:5;21675:1;21669:8;;:::i;:::-;;:14;;:::i;:::-;:40;;21686:23;;:14;:11;21698:1;21686:14;;:::i;:::-;;:23;;:::i;:::-;21669:40;:::i;:::-;;;:::i;:::-;;:84;;;;;;;21554:433;21665:269;;;;;;21554:433;22094:18;21959:5;21483:522;22094:18;;:::i;:::-;22090:78;;21483:522;21445:737;;;;;;;22090:78;22144:5;;22090:78;;21665:269;21806:9;;;21817:8;21827:13;:8;:5;21833:1;21827:8;;:::i;:::-;;:13;;21790:74;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22094:18;21902:5;21665:269;;;;;21669:84;21713:40;:5;;;21730:14;21713:40;:5;:14;;:8;21730:23;21713:5;21730:23;21713:5;:8;:::i;:::-;;:14;;:::i;:::-;21730:11;:14;:::i;:::-;;:23;;:::i;:::-;21713:40;:::i;:::-;;;:::i;:::-;;21669:84;;;;;;21503:22;;;;;;;21296:3;21503:22;;;22094:18;21503:22;;;;21282:12;;;;;;;;;;22509:13;22521:1;22509:13;:::i;:::-;22504:564;22548:3;22524:1;:22;;22528:18;:11;:18;:::i;:::-;22524:22;:::i;:::-;;;:::i;:::-;;;;;22571:24;22572:23;;:14;:11;22584:1;22572:14;;:::i;:::-;;:23;;:::i;:::-;22571:24;;:::i;:::-;22567:38;;22638:37;22648:26;22654:19;:14;:11;22666:1;22654:14;;:::i;:::-;;:19;22648:26;:::i;:::-;22638:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;22702:5;;22738:1;22726:13;22738:1;22726:13;:::i;:::-;22764:3;22741:1;:21;;22745:17;:10;:17;:::i;:::-;22741:21;:::i;:::-;;;:::i;:::-;;;;;22791:13;;:10;22802:1;22791:13;;:::i;:::-;;:::i;:::-;:24;;22808:7;22791:24;:::i;:::-;;;:::i;:::-;;22787:110;;22764:3;;;:::i;:::-;22726:13;;22787:110;22847:4;;;;;22548:3;22847:4;;22928:6;22847:4;22721:190;22928:6;;:::i;:::-;22924:134;;22721:190;22509:13;22548:3;:::i;:::-;22509:13;;;;22924:134;22975:9;22986:8;22996:19;:14;:11;23008:1;22996:14;;:::i;:::-;;:19;22959:84;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22924:134;;22741:21;;;;;22548:3;22741:21;;22928:6;22741:21;;;22567:38;22597:8;;22548:3;22597:8;;;22524:22;;;;;;20231:2843::o;20950:237::-;21010:11;;;;20996:33;21010:18;:11;;;;;;:18;:::i;:::-;20996:33;:::i;:::-;21060:1;21048:13;21060:1;21048:13;:::i;:::-;21087:3;21063:1;:22;;21067:18;:11;:18;:::i;:::-;21063:22;:::i;:::-;;;:::i;:::-;;;;;21087:3;21141:11;21110:52;21125:37;21135:26;21141:19;:14;:11;21153:1;21141:14;;:::i;:::-;;:19;21135:26;:::i;:::-;21125:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;21110:52;:9;21120:1;;21110:52;;;:::i;:::-;;:::i;:::-;21087:3;:::i;:::-;21048:13;;21063:22;;;;;;;;;;20950:237;;1500:62:2;;;:::i;:::-;1554:1;;:::i;:::-;1500:62::o;2293:101::-;2376:10;;2384:1;2376:10;:::i;:::-;;:::i;:::-;2293:101::o;:::-;;;:::i;:::-;:::o;6415:38266:187:-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;36334:211::-;36496:42;36334:211;36503:25;:35;36334:211;36460:20;;:::i;:::-;36503:14;;:25;:::i;:::-;:35;:::i;:::-;36496:42;:::i;:::-;;:::o;6415:38266::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;44515:164::-;44633:39;44515:164;44633:29;:39;44515:164;44608:6;;:::i;:::-;44633:18;;:29;:::i;:::-;:39;:::i;:::-;;:::i;:::-;44626:46;:::o;2244:229:3:-;2313:12;;:::i;:::-;2339:14;;:::i;:::-;:24;;2357:6;2339:24;:::i;:::-;;;:::i;:::-;;2335:96;;2459:6;;;:::i;:::-;2244:229::o;2335:96::-;2386:34;2413:6;2386:34;;;;;;;;;;;;;:::i;:::-;;;;37013:142:187;37112:34;:27;:36;37013:142;37086:7;;:::i;:::-;37112:16;;:27;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37105:43;:::o;6415:38266::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;40225:780::-;;;;;40389:26;;:::i;:::-;40417:13;;;:::i;:::-;40489:9;40478:21;40489:9;40478:21;:::i;:::-;40517:13;:33;:31;:24;:13;40531:9;40517:24;;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;40565:6;:16;;:6;:16;;:::i;:::-;:21;;40585:1;40565:21;:::i;:::-;;;:::i;:::-;;:35;;;;40225:780;40565:54;;;;40225:780;40561:117;;40708:52;40716:6;40735:25;40743:16;;40708:24;40716:15;;40937:61;40716:6;;;:15;;:::i;:::-;40708:24;:::i;:::-;40743:6;:16;;:::i;:::-;40735:25;:::i;:::-;40708:52;;:::i;:::-;40790:5;;:21;;40798:13;;:::i;:::-;40790:21;:::i;:::-;;;:::i;:::-;;:45;;;;40814:13;;;:::i;:::-;40790:45;40859:18;:6;40868:9;40859:18;;:::i;:::-;:26;;40880:5;40859:26;:::i;:::-;;;:::i;:::-;;:55;;;;40888:5;;40859:55;40964:9;40975:6;40983:3;40988:9;40937:61;;:::i;:::-;40225:780;:::o;40859:55::-;40896:18;:6;;:18;:::i;:::-;40859:55;;40790:45;;;40561:117;40657:1;;;;;40643:16;;40657:1;40643:16;:::i;:::-;;:::i;:::-;40635:32;;:::o;40565:54::-;40604:6;;:15;;40614:5;40604:15;:::i;:::-;;;:::i;:::-;;;40565:54;;:35;40590:5;;:10;;40599:1;40590:10;:::i;:::-;;;:::i;:::-;;40565:35;;1500:62:2;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34235:182:187:-;34387:23;34235:182;34387:23;;:::i;:::-;34235:182::o;:::-;;;;:::i;:::-;:::o;6415:38266::-;;;:::o;1638:85:2:-;1684:7;;:::i;:::-;1710:6;;;;:::i;:::-;1703:13;:::o;6415:38266:187:-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;;;;;;;26227:224;;;;;26329:13;26341:1;26329:13;:::i;:::-;26366:3;26344:1;:20;;26348:16;:9;;:16;;:::i;:::-;26344:20;:::i;:::-;;;:::i;:::-;;;;;26385:24;:4;:24;:::i;:::-;;;26410:9;26421:12;;:9;;26431:1;26421:12;;:::i;:::-;;:::i;:::-;26385:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;26366:3;26385:49;;;26366:3;;;:::i;:::-;26329:13;;26385:49;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;26344:20::-;;;;;;26227:224::o;6415:38266::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;43678:757::-;43793:60;43801:10;:28;;43815:14;;;:::i;:::-;43801:28;:::i;:::-;;;:::i;:::-;;43793:60;:::i;:::-;44046:72;44054:43;:33;:24;:13;44068:9;44054:24;;:::i;:::-;:33;:::i;:::-;44088:8;44054:43;;:::i;:::-;44046:72;:::i;:::-;44204:33;44129:65;44159:35;:25;:14;44174:9;44159:25;;:::i;:::-;44185:8;44159:35;;:::i;:::-;44129:65;:::i;:::-;44204:12;44219:18;44204:5;:12;:33;:::i;:::-;44247:44;:34;:27;:16;44264:9;44247:27;;:::i;:::-;:34;:::i;:::-;44282:8;44247:44;;:::i;:::-;;44301:65;44343:23;44350:15;44343:23;:::i;:::-;44301:39;:29;:18;44320:9;44301:29;;:::i;:::-;44331:8;44301:39;;:::i;:::-;:65;:::i;:::-;44411:8;44421:6;;44382:46;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;43678:757::o;6415:38266::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;32777:683::-;33307:146;32777:683;33351:92;32777:683;;33351:92;;33307:30;:25;33351:92;32777:683;33069:70;33077:18;:11;33351:92;32777:683;;;;32991:68;32999:10;:38;;33013:24;;:13;33027:9;33013:24;;:::i;:::-;;:::i;:::-;32999:38;:::i;:::-;;;:::i;:::-;;32991:68;:::i;:::-;33077:11;:::i;:::-;:18;;:::i;:::-;:44;;33099:22;;:::i;:::-;33077:44;:::i;:::-;;;:::i;:::-;;;33069:70;:::i;:::-;33149:47;33157:8;:20;;33169:8;33157:20;:::i;:::-;;;:::i;:::-;;;33149:47;:::i;:::-;33206:90;33214:32;:25;:14;33229:9;33214:25;;:::i;:::-;:32;:::i;:::-;:57;;33249:22;;:::i;:::-;33214:57;:::i;:::-;;;:::i;:::-;;33206:90;:::i;:::-;33307:14;:25;:::i;:::-;:30;:::i;:::-;33376:4;;33392:8;33412;33432;33351:92;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;33307:146;:::i;:::-;32777:683::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;28053:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38266::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;27976:884::-;28074:67;28104:37;:25;:14;28119:9;28104:25;;:::i;:::-;28130:10;28104:37;;:::i;:::-;28074:67;:::i;:::-;28175:5;:12;;:5;:12;;:::i;:::-;28201:9;;:31;;28214:18;28201:31;:::i;:::-;;;:::i;:::-;;28197:102;;28395:9;:31;;28408:18;28395:31;:::i;:::-;;;:::i;:::-;;:67;;;;27976:884;28391:104;;28639:21;28610:19;28595:34;28610:19;28595:12;:5;:12;:34;:::i;:::-;28639:17;:21;28659:1;28639:21;:::i;:::-;:5;:17;:21;:::i;:::-;28670:43;:31;:27;:16;28687:9;28670:27;;:::i;:::-;:31;:::i;:::-;28702:10;28670:43;;:::i;:::-;;28748:9;28759:10;28729:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;28810:10;;28822:9;28833:19;;28785:68;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27976:884::o;28391:104::-;28478:7;;;:::o;28395:67::-;28430:9;;:32;;28443:19;28430:32;:::i;:::-;;;:::i;:::-;;28395:67;;28197:102;28248:40;;:::i;:::-;6415:38266;;;28248:40;;;;;;;;:::i;:::-;;;;27976:884;;;;:::i;:::-;:::o;6415:38266::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;29569:585::-;29676:10;:24;;29690:10;29676:24;:::i;:::-;;;:::i;:::-;;:66;;;;29569:585;29668:93;;;:::i;:::-;29772:45;29780:8;:14;;29792:2;29780:14;:::i;:::-;;;:::i;:::-;;;29772:45;:::i;:::-;29847:50;29855:9;:14;;29868:1;29855:14;:::i;:::-;;;:::i;:::-;;;29847:50;:::i;:::-;29908:169;29978:8;29938:139;29999:9;29938:139;30025:41;;:27;:16;30042:9;30025:27;;:::i;:::-;:41;;:::i;:::-;29938:139;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;29908:27;:16;29925:9;29908:27;;:::i;:::-;:169;:::i;:::-;30127:8;30137:9;30093:54;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;29569:585::o;29676:66::-;29704:10;29668:93;29704:10;:38;;29718:24;;:13;29732:9;29718:24;;:::i;:::-;;:::i;:::-;29704:38;:::i;:::-;;;:::i;:::-;;29676:66;;;;6415:38266;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;24826:1348::-;24910:65;24940:35;:25;:14;24955:9;24940:25;;:::i;:::-;24966:8;24940:35;;:::i;:::-;24910:65;:::i;:::-;25028:9;25017:21;25028:9;25017:21;:::i;:::-;25138:12;;:5;:12;;:::i;:::-;:34;;25154:18;25138:34;:::i;:::-;;;:::i;:::-;;25134:47;;25195:19;;:5;:19;;:::i;:::-;:24;;25218:1;25195:24;:::i;:::-;;;:::i;:::-;;25191:92;;25385:25;25311:37;:15;25329:19;;:5;:19;;:::i;:::-;25311:37;;:::i;:::-;25385:25;25395:15;;:6;:15;;:::i;:::-;25385:25;:::i;:::-;;;:::i;:::-;25511:16;:34;;25530:15;25511:34;:::i;:::-;;;:::i;:::-;;:78;;;;25548:15;;25511:78;25604:11;;:31;;25618:17;;:5;:17;;:::i;:::-;25604:31;:::i;:::-;;;:::i;:::-;;25600:568;;25511:78;24826:1348;;;;;:::o;25600:568::-;25651:31;25671:11;25651:17;:5;:17;:31;:::i;:::-;25696:26;;25721:1;25696:26;:::i;:::-;:22;:5;:22;:26;:::i;:::-;25741:31;;25756:16;;25741:11;25756:6;:16;;:::i;:::-;25741:31;:::i;:::-;;;:::i;:::-;;;:69;;;25600:568;25737:421;;25600:568;;;;25737:421;25883:33;25853:12;;:5;:12;;:::i;:::-;25898:18;25883:12;25898:18;25883:5;:12;:33;:::i;:::-;25934:44;:34;:27;:16;25951:9;25934:27;;:::i;:::-;:34;:::i;:::-;25969:8;25934:44;;:::i;:::-;;26022:9;26033:8;;26043:11;26002:53;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;26103:8;26113:9;26124:18;;26078:65;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;25737:421;;;;;;25741:69;25776:5;:12;;:5;:12;;:::i;:::-;:34;;25792:18;25776:34;:::i;:::-;;;:::i;:::-;;;25741:69;;25511:78;25566:23;25572:16;25566:23;:::i;:::-;25511:78;;25191:92;25235:7;;;;:::o;25134:47::-;25174:7;;;;:::o;6415:38266::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;:::o;37739:156::-;37863:25;37856:32;37739:156;37819:25;;:::i;:::-;37863:14;;:25;:::i;:::-;37856:32;:::i;:::-;;:::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;27342:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38266::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;27264:514::-;27363:67;27393:37;:25;:14;27408:9;27393:25;;:::i;:::-;27419:10;27393:37;;:::i;:::-;27363:67;:::i;:::-;27464:5;:12;;:5;:12;;:::i;:::-;27490:9;;:31;;27503:18;27490:31;:::i;:::-;;;:::i;:::-;;27486:103;;27599:33;27614:18;27599:12;27614:18;27599:5;:12;:33;:::i;:::-;27642:46;:34;:27;:16;27659:9;27642:27;;:::i;:::-;:34;:::i;:::-;27677:10;27642:46;;:::i;:::-;;27729:10;;27741:9;27752:18;;27704:67;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27264:514::o;27486:103::-;27537:41;;:::i;:::-;6415:38266;;;27537:41;;;;;;;;:::i;:::-;;;;27264:514;;;;:::i;:::-;:::o;6415:38266::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;:::i;:::-;;:::o;37416:264::-;;37628:33;:45;37416:264;;37628:23;:45;37416:264;37598:7;;:::i;:::-;37628:12;;:23;:::i;:::-;:33;:::i;:::-;37662:10;;37628:45;;:::i;:::-;;:::i;:::-;37621:52;:::o;1232:99:3:-;1285:7;;:::i;:::-;1311:13;;;;:::i;:::-;1304:20;:::o;6415:38266:187:-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;42497:886;;43332:34;:27;:44;42497:886;42592:10;:38;;42606:24;;:13;42620:9;42606:24;;:::i;:::-;;:::i;:::-;42592:38;:::i;:::-;;;:::i;:::-;;:63;;;;42497:886;42584:90;;;:::i;:::-;42685:64;42714:35;:25;:14;42729:9;42714:25;;:::i;:::-;42740:8;42714:35;;:::i;:::-;42685:64;:::i;:::-;42859:12;;:5;:12;;:::i;:::-;:34;;42875:18;42859:34;:::i;:::-;;;:::i;:::-;;42855:416;;42497:886;43281:13;:41;:31;:24;:13;43295:9;43281:24;;:::i;:::-;:31;:::i;:::-;43313:8;43281:41;;:::i;:::-;;43332:16;:27;:::i;:::-;:34;:::i;:::-;:44;:::i;:::-;;42497:886::o;42855:416::-;43079:181;42952:9;43008:57;:52;42941:21;42952:9;42941:21;:::i;:::-;43035:25;43043:16;;43008:24;43016:15;;:6;:15;;:::i;:::-;43008:24;:::i;:::-;43043:6;:16;;:::i;:::-;43035:25;:::i;:::-;43008:52;;:::i;:::-;:57;43063:2;43008:57;:::i;:::-;;;:::i;:::-;43104:19;;:5;:19;;:::i;:::-;:23;;43126:1;43104:23;:::i;:::-;;;:::i;:::-;;:89;;;;42855:416;43079:181;;;:::i;:::-;42855:416;;;43104:89;43131:62;:15;;;:37;:62;:15;43149:19;;43131:15;43149:5;:19;;:::i;:::-;43131:37;;:::i;:::-;43172:21;43131:62;:::i;:::-;;;:::i;:::-;;;43104:89;;;;42592:63;42634:10;42584:90;42634:10;:21;;42648:7;;:::i;:::-;42634:21;:::i;:::-;;;:::i;:::-;;42592:63;;;;37968:374;;38172:35;38143:64;37968:374;38064:4;;:::i;:::-;38123:9;38172:25;38112:21;38123:9;38112:21;:::i;:::-;38172:14;;:25;:::i;:::-;:35;:::i;:::-;38143:64;:::i;:::-;38222:19;;:5;:19;;:::i;:::-;:24;;38245:1;38222:24;:::i;:::-;;;:::i;:::-;;38218:42;;38278:57;38320:15;;38279:37;38278:57;38279:15;38297:19;38279:15;;38297:5;:19;;:::i;:::-;38279:37;;:::i;:::-;38320:6;:15;;:::i;:::-;38278:57;:::i;:::-;;;:::i;:::-;;38271:64;:::o;38218:42::-;38255:5;;;38248:12;:::o;1500:62:2:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;1649:178:3:-;1738:24;1754:8;1738:24;;:::i;:::-;1802:7;;:::i;:::-;1811:8;1777:43;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1649:178::o;:::-;;;;:::i;:::-;:::o;32234:225:187:-;32401:41;:27;:51;32234:225;32323:68;32331:10;:38;;32345:24;;:13;32359:9;32345:24;;:::i;:::-;;:::i;:::-;32331:38;:::i;:::-;;;:::i;:::-;;32323:68;:::i;:::-;32401:16;;:27;:::i;:::-;:41;:51;:::i;:::-;32234:225::o;6415:38266::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;31580:347;31672:53;31680:10;:24;;31694:10;31680:24;:::i;:::-;;;:::i;:::-;;31672:53;:::i;:::-;31735:75;31743:48;:38;:31;:20;31764:9;31743:31;;:::i;:::-;:38;:::i;:::-;31782:8;31743:48;;:::i;:::-;31735:75;:::i;:::-;31820:44;:34;:27;:16;31837:9;31820:27;;:::i;:::-;:34;:::i;:::-;31855:8;31820:44;;:::i;:::-;;31911:8;31879:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;31580:347::o;6415:38266::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;38389:443::-;38516:27;38484:59;38389:443;38450:22;;:::i;:::-;38516:16;;:27;:::i;:::-;38484:59;:::i;:::-;38602:15;;:6;:15;;:::i;:::-;:20;;38621:1;38602:20;:::i;:::-;;;:::i;:::-;;38598:95;;38389:443;38706:16;;:6;:16;;:::i;:::-;:21;;38726:1;38706:21;:::i;:::-;;;:::i;:::-;;38702:100;;38389:443;38812:13;:::o;38702:100::-;38743:48;38762:29;;:::i;:::-;38743:16;:6;:16;:48;:::i;:::-;38702:100;;38598:95;38638:44;38656:26;;:::i;:::-;38638:15;:6;:15;:44;:::i;:::-;38598:95;;6415:38266;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;8289:150:46:-;;8382:50;8399:32;8407:23;8415:14;8387:10;8382:50;8289:150;8359:4;;:::i;:::-;8387:3;:10;8423:5;8415:14;:::i;:::-;8407:23;:::i;:::-;8399:32;:::i;:::-;8382:50;;:::i;:::-;;:::i;:::-;8375:57;:::o;1796:162:2:-;1855:7;;:::i;:::-;:23;;1866:12;;:::i;:::-;1855:23;:::i;:::-;;;:::i;:::-;;1851:101;;1796:162::o;1851:101::-;1901:40;1928:12;;:::i;:::-;1901:40;2386:34:3;;;;;;1901:40:2;;;;;;:::i;:::-;;;;8844:165:46;;8947:55;8969:32;8977:23;8985:14;8957:10;8947:55;8844:165;8924:4;;:::i;:::-;8957:3;:10;8993:5;8985:14;:::i;:::-;8977:23;:::i;:::-;8969:32;:::i;:::-;8947:55;;:::i;:::-;;:::i;:::-;8940:62;:::o;3714:255:36:-;3927:8;3714:255;3871:27;3714:255;3792:7;;:::i;:::-;3882:4;3871:27;:::i;:::-;3811:87;;;;3927:8;:::i;:::-;3946:16;:::o;6415:38266:187:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;16445:2218::-;;;;;;16647:65;16677:35;:25;:14;16692:9;16677:25;;:::i;:::-;16703:8;16677:35;;:::i;:::-;16647:65;:::i;:::-;16765:9;16754:21;16765:9;16754:21;:::i;:::-;16852:5;16844:66;16852:12;;:5;:12;;:::i;:::-;:34;;16868:18;16852:34;:::i;:::-;;;:::i;:::-;;;16844:66;:::i;:::-;16972:38;:28;:24;:13;16986:9;16972:24;;:::i;:::-;:28;:::i;:::-;17001:8;16972:38;;:::i;:::-;;18062:20;;17068:12;;:5;:12;;:::i;:::-;17112:15;17090:37;17112:15;17090:19;:5;:19;:37;:::i;:::-;17137:42;17161:18;17171:7;;17161:18;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;17137:21;:5;:21;:42;:::i;:::-;17189:21;;17209:1;17189:21;:::i;:::-;:17;:5;:17;:21;:::i;:::-;17220:24;:22;:5;:22;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;17310:20;;:::i;:::-;17344:10;;:15;;17358:1;17344:15;:::i;:::-;;;:::i;:::-;;17340:393;;;;17743:24;17387:18;17340:393;;17743:12;17758:9;17743:5;:12;:24;:::i;:::-;17811:9;:31;;17824:18;17811:31;:::i;:::-;;;:::i;:::-;;:66;;;17340:393;17807:196;;17340:393;18062:20;;:::i;:::-;:42;;;17340:393;18058:118;;17340:393;18209:9;;;18220:11;18233:8;18243:10;18255:15;;18191:80;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18286:9;:22;;18299:9;18286:22;:::i;:::-;;;:::i;:::-;;18282:114;;17340:393;18473:15;;;;;:::i;:::-;:29;;18492:10;18500:1;18492:10;:::i;:::-;18473:29;:::i;:::-;;;:::i;:::-;;18469:188;;17340:393;16445:2218;;:::o;18469:188::-;18522:49;:33;18539:15;;;:::i;:::-;18522:33;:::i;:::-;:49;:::i;:::-;;;18572:8;18582:9;18600:15;18593:23;18600:15;18593:23;:::i;:::-;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;18469:188;18518:129;;;;;;;;;;;18469:188;;;;18518:129;;;;;;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;18282:114::-;18343:9;18354:8;18364:9;18375;18329:56;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18282:114;;;;18058:118;18157:7;18136:9;;18147:8;;18157:7;;;;:::i;:::-;18058:118;;;;18062:42;18086:7;:14;:7;;:14;;:::i;:::-;:18;;18103:1;18086:18;:::i;:::-;;;:::i;:::-;;18062:42;;17807:196;17893:41;:31;:27;:16;;:27;:::i;:::-;:31;:::i;:::-;17925:8;17893:41;;:::i;:::-;;17972:9;17983:8;17953:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;17807:196;;17811:66;17846:9;;:31;;17859:18;17846:31;:::i;:::-;;;:::i;:::-;;;17811:66;;17340:393;17426:10;:16;;17439:3;17426:16;:::i;:::-;;;:::i;:::-;;17422:311;;;;17743:24;17470:19;17422:311;;17340:393;;17422:311;17743:24;17611:19;17668:9;17714:7;17668:9;17679:11;;17692:8;17702:10;17714:7;;;;;;:::i;:::-;17422:311;;9090:115:46;9179:19;9187:10;9179:19;9090:115;9153:7;;:::i;:::-;9187:3;:10;9179:19;:::i;:::-;;:::i;:::-;9172:26;:::o;6415:38266:187:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;9547:156:46:-;9663:31;9671:22;9647:49;9547:156;9671:22;9675:10;9655:40;9547:156;9621:7;;:::i;:::-;9675:3;:10;9671:22;:::i;:::-;;:::i;:::-;9663:31;:::i;:::-;9655:40;:::i;:::-;9647:49;:::i;:::-;9640:56;:::o;6415:38266:187:-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:3:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;656:96:30:-;709:7;;:::i;:::-;735:10;;728:17;:::o;6415:38266:187:-;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;41011:705::-;;;;;41198:26;;:::i;:::-;41278:3;41264:27;41278:12;:3;41284:6;41278:12;;:::i;:::-;41264:27;:::i;:::-;41317:1;41301:17;41317:1;41301:17;:::i;:::-;41346:6;41363:3;41354:1;:7;;41358:3;41354:7;:::i;:::-;;;:::i;:::-;;;;;41395:30;:27;:24;:13;41409:9;41395:24;;:::i;:::-;:27;:::i;:::-;41423:1;41395:30;;:::i;:::-;41443:46;41464:9;41475:2;41479:9;41443:46;;:::i;:::-;41439:126;;41363:3;;;;;:::i;:::-;41334:18;;41439:126;41363:3;41523:2;;41509:16;41543:7;41523:2;41509:16;:4;41514:5;;41509:16;;;:::i;:::-;;:::i;:::-;41543:7;:::i;:::-;41439:126;;;;41354:7;;;;;;;41597:20;41611:5;41597:20;:::i;:::-;41644:1;41632:13;41644:1;41632:13;:::i;:::-;41658:3;41647:1;:9;;41651:5;41647:9;:::i;:::-;;;:::i;:::-;;;;;41658:3;41692:4;41677:22;41692:7;;:4;41697:1;41692:7;;:::i;:::-;;:::i;:::-;41677:22;:9;41687:1;;41677:22;;;:::i;:::-;;:::i;:::-;41658:3;:::i;:::-;41632:13;;41647:9;;;;;41011:705::o;8607:156:46:-;;8703:53;8723:32;8731:23;8739:14;8711:10;8703:53;8607:156;8680:4;;:::i;:::-;8711:3;:10;8747:5;8739:14;:::i;:::-;8731:23;:::i;:::-;8723:32;:::i;:::-;8703:53;;:::i;:::-;;:::i;:::-;8696:60;:::o;6415:38266:187:-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;2241:406:46:-;2304:4;;:::i;:::-;2335:3;2324:22;2325:21;2335:3;2340:5;2325:21;;:::i;:::-;2324:22;;:::i;:::-;2320:321;;;;2520:21;:42;2362:3;:23;:16;:11;:3;:11;:16;:::i;:::-;2379:5;2362:23;;:::i;:::-;2520:14;2544:18;:11;:3;:11;:18;:::i;:::-;2520:3;:14;:21;:::i;:::-;:42;:::i;:::-;2583:4;2576:11;:::o;2320:321::-;2625:5;;;2618:12;:::o;4264:129::-;4360:21;4264:129;4360:14;:21;4264:129;4337:4;;:::i;:::-;4360:3;:14;:21;:::i;:::-;;:::i;:::-;:26;;4385:1;4360:26;:::i;:::-;;;:::i;:::-;;;4353:33;:::o;6415:38266:187:-;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;2129:778:36:-;;;;2232:17;;:::i;:::-;2251:16;;;:::i;:::-;2269:14;;;:::i;:::-;2299:9;:16;:9;:16;:::i;:::-;:22;;2319:2;2299:22;:::i;:::-;;;:::i;:::-;;2295:606;;;;2751:25;2337:9;;;;:::i;:::-;2360;;;:::i;:::-;2383:7;;;:::i;:::-;2535:196;;;;;;;;;;;;;;;2771:1;2774;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2823:1;2815:10;2823:1;2815:10;:::i;:::-;2827:35;2864:25;2872:16;2827:35;2872:9;:16;:::i;:::-;2864:25;:::i;:::-;2807:83;;;;:::o;6415:38266:187:-;;-1:-1:-1;6415:38266:187;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;7280:532:36:-;7366:5;:29;;7375:20;7366:29;:::i;:::-;;;:::i;:::-;;7362:444;;;;7411:7;;:::o;7362:444::-;7462:5;:38;;7471:29;7462:38;:::i;:::-;;;:::i;:::-;;7458:348;;;;7523:23;;;;;;;;;;;;:::i;:::-;;;;7458:348;7567:5;:44;;7576:35;7567:44;:::i;:::-;;;:::i;:::-;;7563:243;;;;7634:46;7662:17;7670:8;7662:17;:::i;:::-;7634:46;;;;;;;;;;;;;:::i;:::-;;;;7563:243;7701:39;;7710:30;7701:39;:::i;:::-;;;:::i;:::-;;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;7786:8;7763:32;;;;;;;;;;;;;:::i;:::-;;;;6415:38266:187;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;23148:1016::-;;;;;;23584:17;;23598:3;23584:17;:::i;:::-;;;:::i;:::-;;;23580:513;;23148:1016;;;:::o;23580:513::-;23638:23;23645:15;23638:23;:::i;:::-;23694:39;;:29;:18;23713:9;23694:29;;:::i;:::-;23724:8;23694:39;;:::i;:::-;;:::i;:::-;23751:9;:14;;23764:1;23751:14;:::i;:::-;;;:::i;:::-;;:65;;;;;23580:513;23747:336;;;23580:513;;;;23747:336;23836:53;23878:11;23836:39;:29;:18;23855:9;23836:29;;:::i;:::-;23866:8;23836:39;;:::i;:::-;:53;:::i;:::-;23941:8;23912:69;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;23747:336;;;;;23751:65;23769:23;:11;;;:23;:::i;:::-;:47;;23796:20;;:::i;:::-;23769:47;:::i;:::-;;;:::i;:::-;;;23751:65;;;6415:38266;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;18801:46::-;18845:2;;;:::i;:::-;18801:46;:::o;18845:2::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;18854:1122::-;;18962:14;:7;;:14;;:::i;:::-;:19;;18980:1;18962:19;:::i;:::-;;;:::i;:::-;;18958:32;;19067:14;:7;;:14;;:::i;:::-;:23;;19084:6;19067:23;:::i;:::-;;;:::i;:::-;;19063:36;;19240:31;19109:25;;:::i;:::-;19240:4;:22;:4;:22;:::i;:::-;:31;:22;19263:7;;19240:31;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;18854:1122;19236:152;;;;;;;;;;;19472:12;:5;:12;:::i;:::-;:31;;19487:16;;:::i;:::-;19472:31;:::i;:::-;;;:::i;:::-;;:65;;;;19506:16;;:::i;:::-;19472:65;19709:28;:4;:28;:::i;:::-;;;19738:9;19749:8;19759:5;19766:8;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;19472:65;19705:265;;;;;;;;;;;18854:1122::o;19705:265::-;;;;;;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19472:65::-;19525:12;:5;:12;:::i;:::-;19472:65;;19236:152;19371:7;;;:::o;19236:152::-;;;;;;;19240:31;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;19063:36;19092:7;;;;:::o;18958:32::-;18983:7;;;;:::o;4474:107:46:-;4556:11;:18;4474:107;4530:7;;:::i;:::-;4556:3;:11;:18;:::i;:::-;4549:25;:::o;6415:38266:187:-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4923:118:46:-;5016:18;4923:118;5016:11;:18;4923:118;4990:7;;:::i;:::-;5016:3;:11;:18;:::i;:::-;;;:::i;:::-;5009:25;:::o;2912:187:2:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o;41722:511:187:-;41830:4;;:::i;:::-;41929:20;41928:51;41929:50;:40;:31;:20;41950:9;41929:31;;:::i;:::-;:40;:::i;:::-;41970:8;41929:50;;:::i;:::-;41928:51;;:::i;:::-;41924:69;;42004:64;42033:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;42004:64;:::i;:::-;42082:19;;:5;:19;;:::i;:::-;:24;;42105:1;42082:24;:::i;:::-;;;:::i;:::-;;:62;;;;41722:511;42078:80;;42176:50;:37;:50;:15;42194:19;;42176:15;42194:5;:19;;:::i;:::-;42176:37;;:::i;:::-;42217:9;42176:50;:::i;:::-;;;:::i;:::-;;;42169:57;:::o;42078:80::-;42153:5;;;42146:12;:::o;42082:62::-;42110:5;:12;;:5;:12;;:::i;:::-;:34;;42126:18;42110:34;:::i;:::-;;;:::i;:::-;;42082:62;;41924:69;41988:5;;;;41981:12;:::o;6415:38266::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;2815:1368:46:-;2881:4;;:::i;:::-;3010:3;:21;;:14;:3;:14;3025:5;3010:21;;:::i;:::-;;:::i;:::-;3046:8;;:13;;3058:1;3046:13;:::i;:::-;;;:::i;:::-;;;3042:1135;;;;4069:28;3434:8;4076:14;:21;3434:8;;:12;4069:28;3434:8;:12;3445:1;3434:12;:::i;:::-;;;:::i;:::-;3480:22;:18;:3;;:11;:18;:::i;:::-;:22;3501:1;3480:22;:::i;:::-;;;:::i;:::-;3521:10;:23;;3535:9;3521:23;:::i;:::-;;;:::i;:::-;;3517:378;;3042:1135;3973:3;;;:15;;:3;;:11;:15;:::i;:::-;;:::i;:::-;4076:14;:21;:::i;:::-;4069:28;:::i;:::-;4119:4;4112:11;:::o;3517:378::-;3844:36;3584:3;3705:35;3584:22;;3844:25;3584:3;;;:11;:22;:::i;:::-;;;:::i;:::-;3731:9;3705:23;3731:9;3705:3;;;:11;:23;:::i;:::-;:35;;:::i;:::-;3844:3;;;:14;:25;:::i;:::-;:36;:::i;:::-;3517:378;;;;;3042:1135;4161:5;;;;4154:12;:::o;6415:38266:187:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5203:1551:36:-;;;;5329:17;;:::i;:::-;5348:16;;;:::i;:::-;5366:14;;;:::i;:::-;6278:1;6270:10;6278:1;6270:10;:::i;:::-;:79;;6283:66;6270:79;:::i;:::-;;;:::i;:::-;;6266:164;;6551:4;6541:24;;6551:4;;6541:24;6551:4;;6557:1;6560;6541:24;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;6579:6;:20;;6589:10;6597:1;6589:10;:::i;:::-;6579:20;:::i;:::-;;;:::i;:::-;;6575:113;;6714:20;6744:1;6736:10;6744:1;6736:10;:::i;:::-;6698:49;;;;:::o;6575:113::-;6631:1;6623:10;6631:1;6623:10;:::i;:::-;6635:29;6674:1;6666:10;6674:1;6666:10;:::i;:::-;6615:62;;;;:::o;6541:24::-;;:::i;6266:164::-;6381:1;;;6373:10;6381:1;6373:10;:::i;:::-;6385:30;;6417:1;6365:54;;;;:::o","linkReferences":{},"immutableReferences":{"103270":[{"start":3807,"length":32},{"start":14477,"length":32}],"103418":[{"start":5216,"length":32},{"start":9933,"length":32},{"start":13229,"length":32},{"start":22181,"length":32},{"start":25186,"length":32}]}},"methodIdentifiers":{"DEFAULT_HEARTBEAT_INTERVAL()":"2c957688","DEFAULT_MAX_MISSED_HEARTBEATS()":"61d6b86c","DOMAIN_SEPARATOR()":"3644e515","HEARTBEAT_MAX_AGE()":"2f4bd7b8","HEARTBEAT_TYPEHASH()":"f9f16762","MAX_METRIC_DEFINITIONS()":"6076439c","MAX_METRIC_NAME_LENGTH()":"6bfe06a6","MAX_PAGE_SIZE()":"48f4da20","SLASH_ALERT_COOLDOWN()":"3ac3cbe6","acceptOwnership()":"79ba5097","addMetricDefinition(uint64,string,uint256,uint256,bool)":"ae470a85","checkOperatorStatus(uint64,address)":"ba1fb103","checkOperatorsStatus(uint64,address[])":"96686c1e","configureHeartbeat(uint64,uint64,uint8)":"b99f6759","decodeMetricPairs(bytes)":"31e3bd1b","deregisterOperator(uint64,address)":"ffcf08f0","enableCustomMetrics(uint64,bool)":"f9107f3b","getAllOperatorCount(uint64)":"3fd62c6d","getHeartbeatConfig(uint64)":"0758236f","getLastCriticalHeartbeat(uint64,address)":"7639d227","getLastHeartbeat(uint64,address)":"0c76697a","getMetricDefinitions(uint64)":"c1ef9ddf","getMetricValue(uint64,address,string)":"d551162c","getOnlineOperatorCount(uint64)":"7b9f64b2","getOnlineOperators(uint64)":"40235a9c","getOperatorState(uint64,address)":"71e7388c","getOperatorStatus(uint64,address)":"62c7e8fc","getSlashableOperators(uint64)":"59dcea12","getSlashableOperatorsPaginated(uint64,uint256,uint256)":"81beac2e","goOffline(uint64)":"c5d960bb","goOnline(uint64)":"b074e9dd","heartbeatConfigs(uint64)":"da435a7c","isHeartbeatCurrent(uint64,address)":"ee1c0390","isOnline(uint64,address)":"5685cf68","isRegisteredOperator(uint64,address)":"60cf0991","metricValues(uint64,address,string)":"9cbdae22","metricsRecorder()":"2dae1885","operatorStates(uint64,address)":"3e6e34a7","owner()":"8da5cb5b","pendingOwner()":"e30c3978","registerOperator(uint64,address)":"1e8f5ee5","registerServiceOwner(uint64,address)":"05778550","removeInactiveOperator(uint64,address)":"e65cafcb","renounceOwnership()":"715018a6","reportForSlashing(uint64,address,string)":"adff830c","serviceMetrics(uint64,uint256)":"22f1ec93","serviceOwners(uint64)":"56c4e17d","setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":"191cbd1a","setMetricsRecorder(address)":"20812956","setSlashingOracle(address)":"84ef7322","slashingOracle()":"cfe34749","submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":"2bf4d6a7","submitHeartbeatDirect(uint64,uint64,uint8,bytes)":"5cce98a6","tangleCore()":"5a936dc6","transferOwnership(address)":"f2fde38b","validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":"65a6936e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tangleCore\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatFromFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatStale\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"HeartbeatConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"HeartbeatReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MetricReported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"MetricViolation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorCameOnline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"}],\"name\":\"OperatorWentOffline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashingTriggered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"oldStatus\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"newStatus\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_HEARTBEAT_INTERVAL\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_MAX_MISSED_HEARTBEATS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_MAX_AGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_DEFINITIONS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_NAME_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PAGE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_ALERT_COOLDOWN\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"addMetricDefinition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"checkOperatorStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"checkOperatorsStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"configureHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"decodeMetricPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"enableCustomMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getAllOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.HeartbeatConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastCriticalHeartbeat\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastHeartbeat\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getMetricDefinitions\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"}],\"name\":\"getMetricValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOperatorStatusRegistry.OperatorState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashableOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getSlashableOperatorsPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOffline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOnline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"heartbeatConfigs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isHeartbeatCurrent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOnline\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isRegisteredOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"metricValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorStates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"registerServiceOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"removeInactiveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"reportForSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"serviceMetrics\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"serviceOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"definitions\",\"type\":\"tuple[]\"}],\"name\":\"setMetricDefinitions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setSlashingOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashingOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeatDirect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tangleCore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"pairsLen\",\"type\":\"uint256\"}],\"name\":\"validateAndStoreMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Integrates with Blueprint SDK QoS metrics system\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"checkOperatorStatus(uint64,address)\":{\"details\":\"Should be called periodically (e.g., by keepers or during other operations)\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"params\":{\"interval\":\"Heartbeat interval in seconds\",\"maxMissed\":\"Max missed heartbeats before offline\",\"serviceId\":\"The service ID\"}},\"decodeMetricPairs(bytes)\":{\"details\":\"External + try/catch wrapper target so malformed payloads don't brick heartbeats.\"},\"deregisterOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable.\"},\"getSlashableOperators(uint64)\":{\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators (capped at MAX_PAGE_SIZE)\"}},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"params\":{\"limit\":\"Max results per page (capped at MAX_PAGE_SIZE)\",\"offset\":\"Starting index\",\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators in this page\",\"total\":\"Total operators in the set (for pagination)\"}},\"goOffline(uint64)\":{\"details\":\"Sets status to Exiting but does NOT exempt from slashing \\u2014 operators remain slashable until properly deregistered through the service lifecycle.\",\"params\":{\"serviceId\":\"The service ID\"}},\"goOnline(uint64)\":{\"details\":\"Must submit a heartbeat after coming online to be marked Healthy\",\"params\":{\"serviceId\":\"The service ID\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"registerOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core \\u2014 operator assignment is determined by the service lifecycle (request \\u2192 approve \\u2192 activate), not by service owners.\"},\"registerServiceOwner(uint64,address)\":{\"details\":\"Only callable by the Tangle core contract\"},\"removeInactiveOperator(uint64,address)\":{\"details\":\"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"details\":\"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \\\"healthy\\\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments.\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"details\":\"Can only be called by registered operators\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"details\":\"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external).\"}},\"stateVariables\":{\"HEARTBEAT_MAX_AGE\":{\"details\":\"Beyond this, replays of an old \\\"healthy\\\" heartbeat would mask current liveness.\"},\"MAX_METRIC_PAIRS\":{\"details\":\"Maximum number of metric pairs per heartbeat to bound gas costs.\"}},\"title\":\"OperatorStatusRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_HEARTBEAT_INTERVAL()\":{\"notice\":\"Default heartbeat interval (5 minutes)\"},\"DEFAULT_MAX_MISSED_HEARTBEATS()\":{\"notice\":\"Default max missed heartbeats before offline\"},\"DOMAIN_SEPARATOR()\":{\"notice\":\"Domain separator for EIP-712 signatures (kept for backwards compatibility)\"},\"HEARTBEAT_MAX_AGE()\":{\"notice\":\"Maximum staleness for a heartbeat signature.\"},\"HEARTBEAT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface.\"},\"MAX_METRIC_DEFINITIONS()\":{\"notice\":\"Maximum metric definitions per service to bound validation gas\"},\"MAX_METRIC_NAME_LENGTH()\":{\"notice\":\"Add a custom metric definitionMaximum metric name length to bound hashing gas costs\"},\"MAX_PAGE_SIZE()\":{\"notice\":\"Maximum page size for paginated queries to bound gas usage\"},\"SLASH_ALERT_COOLDOWN()\":{\"notice\":\"Cooldown between successive critical heartbeat alerts per service/operator\"},\"addMetricDefinition(uint64,string,uint256,uint256,bool)\":{\"notice\":\"Add a custom metric definition\"},\"checkOperatorStatus(uint64,address)\":{\"notice\":\"Check and update operator status based on heartbeat timing\"},\"checkOperatorsStatus(uint64,address[])\":{\"notice\":\"Batch check multiple operators\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"notice\":\"Configure heartbeat settings for a service\"},\"decodeMetricPairs(bytes)\":{\"notice\":\"Decode metric pairs from ABI-encoded payload.\"},\"deregisterOperator(uint64,address)\":{\"notice\":\"Deregister an operator from a service instance\"},\"enableCustomMetrics(uint64,bool)\":{\"notice\":\"Enable custom metrics for a service\"},\"getAllOperatorCount(uint64)\":{\"notice\":\"Get the total count of tracked operators for a service\"},\"getHeartbeatConfig(uint64)\":{\"notice\":\"Get heartbeat config for a service\"},\"getLastCriticalHeartbeat(uint64,address)\":{\"notice\":\"Get the last critical heartbeat timestamp for an operator\"},\"getLastHeartbeat(uint64,address)\":{\"notice\":\"Get last heartbeat timestamp for an operator\"},\"getMetricDefinitions(uint64)\":{\"notice\":\"Get metric definitions for a service\"},\"getMetricValue(uint64,address,string)\":{\"notice\":\"Get a metric value for an operator\"},\"getOnlineOperatorCount(uint64)\":{\"notice\":\"Get online operator count\"},\"getOnlineOperators(uint64)\":{\"notice\":\"Get all online operators for a service\"},\"getOperatorState(uint64,address)\":{\"notice\":\"Get full operator state\"},\"getOperatorStatus(uint64,address)\":{\"notice\":\"Get operator status for a service\"},\"getSlashableOperators(uint64)\":{\"notice\":\"Get offline operators that should be slashed (convenience wrapper)\"},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"notice\":\"Paginated version of getSlashableOperators to prevent gas DoS\"},\"goOffline(uint64)\":{\"notice\":\"Operator voluntarily goes offline\"},\"goOnline(uint64)\":{\"notice\":\"Operator comes back online after voluntary offline period\"},\"heartbeatConfigs(uint64)\":{\"notice\":\"Heartbeat config per service: serviceId => config\"},\"isHeartbeatCurrent(uint64,address)\":{\"notice\":\"Check if operator has submitted heartbeat recently\"},\"isOnline(uint64,address)\":{\"notice\":\"Check if an operator is online for a service\"},\"isRegisteredOperator(uint64,address)\":{\"notice\":\"Check if an operator is registered for a service\"},\"metricValues(uint64,address,string)\":{\"notice\":\"Last reported metric values: serviceId => operator => metricName => value\"},\"metricsRecorder()\":{\"notice\":\"Metrics recorder for reward distribution\"},\"operatorStates(uint64,address)\":{\"notice\":\"Operator state per service: serviceId => operator => state\"},\"registerOperator(uint64,address)\":{\"notice\":\"Register an operator for a service instance\"},\"registerServiceOwner(uint64,address)\":{\"notice\":\"Register service owner\"},\"removeInactiveOperator(uint64,address)\":{\"notice\":\"Remove an operator from the _allOperators tracking set\"},\"reportForSlashing(uint64,address,string)\":{\"notice\":\"Report an operator for slashing (called by slashing oracle)\"},\"serviceMetrics(uint64,uint256)\":{\"notice\":\"Custom metrics per service: serviceId => metric definitions\"},\"serviceOwners(uint64)\":{\"notice\":\"Service owners who can configure heartbeat settings\"},\"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])\":{\"notice\":\"Batch set metric definitions for a service (replaces existing)\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set metrics recorder address for reward tracking\"},\"setSlashingOracle(address)\":{\"notice\":\"Set slashing oracle address\"},\"slashingOracle()\":{\"notice\":\"Slashing callback interface\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"notice\":\"Submit a heartbeat to prove operator is online (EIP-712 signed).\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"notice\":\"Submit heartbeat without signature (for trusted contexts)\"},\"tangleCore()\":{\"notice\":\"Tangle core contract address for service validation\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"notice\":\"Validate metrics against definitions and store valid ones.\"}},\"notice\":\"Tracks operator online/offline status via heartbeats\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/OperatorStatusRegistry.sol\":\"OperatorStatusRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMetricsRecorder.sol\":{\"keccak256\":\"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45\",\"dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk\"]},\"src/staking/OperatorStatusRegistry.sol\":{\"keccak256\":\"0x53f203974273363b97b346e44f65f1f7cda02b4aec4ff5aaa1e74dc277cb0315\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1aa4fdcad8ae829e82d203ab31b8217ff749649abed3ef12a74cd0ad08fb6e60\",\"dweb:/ipfs/QmVccfuREyVscszNGQWUsgCgXmH4bECTwnF5HpCuCgb8qY\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_tangleCore","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatFromFuture"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatStale"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"interval","type":"uint64","indexed":false},{"internalType":"uint8","name":"maxMissed","type":"uint8","indexed":false}],"type":"event","name":"HeartbeatConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"statusCode","type":"uint8","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"HeartbeatReceived","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"MetricReported","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"MetricViolation","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorCameOnline","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"missedBeats","type":"uint8","indexed":false}],"type":"event","name":"OperatorWentOffline","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashingTriggered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"oldStatus","type":"uint8","indexed":false},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"newStatus","type":"uint8","indexed":false}],"type":"event","name":"StatusChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_MAX_AGE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_DEFINITIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_NAME_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PAGE_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_ALERT_COOLDOWN","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"addMetricDefinition"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorsStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"configureHeartbeat"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeMetricPairs","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"enableCustomMetrics"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getAllOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatConfig","outputs":[{"internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastCriticalHeartbeat","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastHeartbeat","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getMetricDefinitions","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"metricName","type":"string"}],"stateMutability":"view","type":"function","name":"getMetricValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorState","outputs":[{"internalType":"struct IOperatorStatusRegistry.OperatorState","name":"","type":"tuple","components":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStatus","outputs":[{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashableOperators","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSlashableOperatorsPaginated","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOffline"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOnline"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"heartbeatConfigs","outputs":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isHeartbeatCurrent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOnline","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isRegisteredOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"metricValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorStates","outputs":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerServiceOwner"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeInactiveOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"reportForSlashing"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"serviceMetrics","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"serviceOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"definitions","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"setMetricDefinitions"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlashingOracle"},{"inputs":[],"stateMutability":"view","type":"function","name":"slashingOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeat"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeatDirect"},{"inputs":[],"stateMutability":"view","type":"function","name":"tangleCore","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]},{"internalType":"uint256","name":"pairsLen","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"validateAndStoreMetrics"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"checkOperatorStatus(uint64,address)":{"details":"Should be called periodically (e.g., by keepers or during other operations)"},"configureHeartbeat(uint64,uint64,uint8)":{"params":{"interval":"Heartbeat interval in seconds","maxMissed":"Max missed heartbeats before offline","serviceId":"The service ID"}},"decodeMetricPairs(bytes)":{"details":"External + try/catch wrapper target so malformed payloads don't brick heartbeats."},"deregisterOperator(uint64,address)":{"details":"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable."},"getSlashableOperators(uint64)":{"params":{"serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators (capped at MAX_PAGE_SIZE)"}},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"params":{"limit":"Max results per page (capped at MAX_PAGE_SIZE)","offset":"Starting index","serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators in this page","total":"Total operators in the set (for pagination)"}},"goOffline(uint64)":{"details":"Sets status to Exiting but does NOT exempt from slashing — operators remain slashable until properly deregistered through the service lifecycle.","params":{"serviceId":"The service ID"}},"goOnline(uint64)":{"details":"Must submit a heartbeat after coming online to be marked Healthy","params":{"serviceId":"The service ID"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"registerOperator(uint64,address)":{"details":"Only callable by Tangle core — operator assignment is determined by the service lifecycle (request → approve → activate), not by service owners."},"registerServiceOwner(uint64,address)":{"details":"Only callable by the Tangle core contract"},"removeInactiveOperator(uint64,address)":{"details":"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"details":"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \"healthy\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"details":"Can only be called by registered operators"},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"details":"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external)."}},"version":1},"userdoc":{"kind":"user","methods":{"DEFAULT_HEARTBEAT_INTERVAL()":{"notice":"Default heartbeat interval (5 minutes)"},"DEFAULT_MAX_MISSED_HEARTBEATS()":{"notice":"Default max missed heartbeats before offline"},"DOMAIN_SEPARATOR()":{"notice":"Domain separator for EIP-712 signatures (kept for backwards compatibility)"},"HEARTBEAT_MAX_AGE()":{"notice":"Maximum staleness for a heartbeat signature."},"HEARTBEAT_TYPEHASH()":{"notice":"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface."},"MAX_METRIC_DEFINITIONS()":{"notice":"Maximum metric definitions per service to bound validation gas"},"MAX_METRIC_NAME_LENGTH()":{"notice":"Add a custom metric definitionMaximum metric name length to bound hashing gas costs"},"MAX_PAGE_SIZE()":{"notice":"Maximum page size for paginated queries to bound gas usage"},"SLASH_ALERT_COOLDOWN()":{"notice":"Cooldown between successive critical heartbeat alerts per service/operator"},"addMetricDefinition(uint64,string,uint256,uint256,bool)":{"notice":"Add a custom metric definition"},"checkOperatorStatus(uint64,address)":{"notice":"Check and update operator status based on heartbeat timing"},"checkOperatorsStatus(uint64,address[])":{"notice":"Batch check multiple operators"},"configureHeartbeat(uint64,uint64,uint8)":{"notice":"Configure heartbeat settings for a service"},"decodeMetricPairs(bytes)":{"notice":"Decode metric pairs from ABI-encoded payload."},"deregisterOperator(uint64,address)":{"notice":"Deregister an operator from a service instance"},"enableCustomMetrics(uint64,bool)":{"notice":"Enable custom metrics for a service"},"getAllOperatorCount(uint64)":{"notice":"Get the total count of tracked operators for a service"},"getHeartbeatConfig(uint64)":{"notice":"Get heartbeat config for a service"},"getLastCriticalHeartbeat(uint64,address)":{"notice":"Get the last critical heartbeat timestamp for an operator"},"getLastHeartbeat(uint64,address)":{"notice":"Get last heartbeat timestamp for an operator"},"getMetricDefinitions(uint64)":{"notice":"Get metric definitions for a service"},"getMetricValue(uint64,address,string)":{"notice":"Get a metric value for an operator"},"getOnlineOperatorCount(uint64)":{"notice":"Get online operator count"},"getOnlineOperators(uint64)":{"notice":"Get all online operators for a service"},"getOperatorState(uint64,address)":{"notice":"Get full operator state"},"getOperatorStatus(uint64,address)":{"notice":"Get operator status for a service"},"getSlashableOperators(uint64)":{"notice":"Get offline operators that should be slashed (convenience wrapper)"},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"notice":"Paginated version of getSlashableOperators to prevent gas DoS"},"goOffline(uint64)":{"notice":"Operator voluntarily goes offline"},"goOnline(uint64)":{"notice":"Operator comes back online after voluntary offline period"},"heartbeatConfigs(uint64)":{"notice":"Heartbeat config per service: serviceId => config"},"isHeartbeatCurrent(uint64,address)":{"notice":"Check if operator has submitted heartbeat recently"},"isOnline(uint64,address)":{"notice":"Check if an operator is online for a service"},"isRegisteredOperator(uint64,address)":{"notice":"Check if an operator is registered for a service"},"metricValues(uint64,address,string)":{"notice":"Last reported metric values: serviceId => operator => metricName => value"},"metricsRecorder()":{"notice":"Metrics recorder for reward distribution"},"operatorStates(uint64,address)":{"notice":"Operator state per service: serviceId => operator => state"},"registerOperator(uint64,address)":{"notice":"Register an operator for a service instance"},"registerServiceOwner(uint64,address)":{"notice":"Register service owner"},"removeInactiveOperator(uint64,address)":{"notice":"Remove an operator from the _allOperators tracking set"},"reportForSlashing(uint64,address,string)":{"notice":"Report an operator for slashing (called by slashing oracle)"},"serviceMetrics(uint64,uint256)":{"notice":"Custom metrics per service: serviceId => metric definitions"},"serviceOwners(uint64)":{"notice":"Service owners who can configure heartbeat settings"},"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":{"notice":"Batch set metric definitions for a service (replaces existing)"},"setMetricsRecorder(address)":{"notice":"Set metrics recorder address for reward tracking"},"setSlashingOracle(address)":{"notice":"Set slashing oracle address"},"slashingOracle()":{"notice":"Slashing callback interface"},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"notice":"Submit a heartbeat to prove operator is online (EIP-712 signed)."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"notice":"Submit heartbeat without signature (for trusted contexts)"},"tangleCore()":{"notice":"Tangle core contract address for service validation"},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"notice":"Validate metrics against definitions and store valid ones."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/OperatorStatusRegistry.sol":"OperatorStatusRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol":{"keccak256":"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c","urls":["bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0","dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMetricsRecorder.sol":{"keccak256":"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09","urls":["bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45","dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk"],"license":"MIT"},"src/staking/OperatorStatusRegistry.sol":{"keccak256":"0x53f203974273363b97b346e44f65f1f7cda02b4aec4ff5aaa1e74dc277cb0315","urls":["bzz-raw://1aa4fdcad8ae829e82d203ab31b8217ff749649abed3ef12a74cd0ad08fb6e60","dweb:/ipfs/QmVccfuREyVscszNGQWUsgCgXmH4bECTwnF5HpCuCgb8qY"],"license":"MIT"}},"version":1},"id":187} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_tangleCore","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_MAX_AGE","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"HEARTBEAT_TYPEHASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_DEFINITIONS","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_METRIC_NAME_LENGTH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MAX_PAGE_SIZE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SLASH_ALERT_COOLDOWN","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addMetricDefinition","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"checkOperatorsStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operators","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"configureHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeMetricPairs","inputs":[{"name":"payload","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"stateMutability":"pure"},{"type":"function","name":"deregisterOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"enableCustomMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAllOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getHeartbeatConfig","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","components":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getLastCriticalHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getLastHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"getMetricValue","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"metricName","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperatorCount","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getOnlineOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getOperatorState","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IOperatorStatusRegistry.OperatorState","components":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getOperatorStatus","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperators","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSlashableOperatorsPaginated","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"offset","type":"uint256","internalType":"uint256"},{"name":"limit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operators","type":"address[]","internalType":"address[]"},{"name":"total","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"goOffline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"goOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"heartbeatConfigs","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"interval","type":"uint64","internalType":"uint64"},{"name":"maxMissed","type":"uint8","internalType":"uint8"},{"name":"customMetrics","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isHeartbeatCurrent","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOnline","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isRegisteredOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"metricValues","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"metricsRecorder","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorStates","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"lastHeartbeat","type":"uint256","internalType":"uint256"},{"name":"consecutiveBeats","type":"uint64","internalType":"uint64"},{"name":"missedBeats","type":"uint8","internalType":"uint8"},{"name":"status","type":"uint8","internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"lastMetricsHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registerServiceOwner","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"owner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeInactiveOperator","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reportForSlashing","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"reason","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"serviceMetrics","inputs":[{"name":"","type":"uint64","internalType":"uint64"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"serviceOwners","inputs":[{"name":"","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setMetricDefinitions","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"definitions","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minValue","type":"uint256","internalType":"uint256"},{"name":"maxValue","type":"uint256","internalType":"uint256"},{"name":"required","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMetricsRecorder","inputs":[{"name":"recorder","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashingOracle","inputs":[{"name":"oracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashingOracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"submitHeartbeat","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"},{"name":"timestamp","type":"uint64","internalType":"uint64"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitHeartbeatDirect","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"blueprintId","type":"uint64","internalType":"uint64"},{"name":"statusCode","type":"uint8","internalType":"uint8"},{"name":"metrics","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tangleCore","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateAndStoreMetrics","inputs":[{"name":"serviceId","type":"uint64","internalType":"uint64"},{"name":"operator","type":"address","internalType":"address"},{"name":"pairs","type":"tuple[]","internalType":"struct IOperatorStatusRegistry.MetricPair[]","components":[{"name":"name","type":"string","internalType":"string"},{"name":"value","type":"uint256","internalType":"uint256"}]},{"name":"pairsLen","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"HeartbeatConfigUpdated","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"interval","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"maxMissed","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"HeartbeatReceived","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"blueprintId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"statusCode","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricReported","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MetricViolation","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"metricName","type":"string","indexed":false,"internalType":"string"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"OperatorCameOnline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorDeregistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorWentOffline","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"missedBeats","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashingTriggered","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"reason","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StatusChanged","inputs":[{"name":"serviceId","type":"uint64","indexed":true,"internalType":"uint64"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"oldStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"},{"name":"newStatus","type":"uint8","indexed":false,"internalType":"enum IOperatorStatusRegistry.StatusCode"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"HeartbeatFromFuture","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"HeartbeatStale","inputs":[{"name":"signed","type":"uint64","internalType":"uint64"},{"name":"now_","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c0604052346100655761001a610014610139565b90610216565b61002261006a565b617b106104d38239608051818181610edf0152613936015260a051818181611460015281816126cd015281816134370152818161574e015261630b0152617b1090f35b610070565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009c90610074565b810190811060018060401b038211176100b457604052565b61007e565b906100cc6100c561006a565b9283610092565b565b5f80fd5b60018060a01b031690565b6100e6906100d2565b90565b6100f2816100dd565b036100f957565b5f80fd5b9050519061010a826100e9565b565b91906040838203126101345780610128610131925f86016100fd565b936020016100fd565b90565b6100ce565b610157617fe38038038061014c816100b9565b92833981019061010c565b9091565b90565b61017261016d610177926100d2565b61015b565b6100d2565b90565b6101839061015e565b90565b61018f9061017a565b90565b90565b61019e90610192565b9052565b90565b6101ae906101a2565b9052565b6101bb906100dd565b9052565b9095949261020a946101f9610203926101ef6080966101e560a088019c5f890190610195565b6020870190610195565b6040850190610195565b60608301906101a5565b01906101b2565b565b60200190565b5190565b90610220906102d3565b60a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6102bb7f36ffc258c865193ae10c3cf640450ab772fdb8da1dfcae7862ad1205a5567f4c916102ac7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64661029730610186565b916102a061006a565b968795602087016101bf565b60208201810382520382610092565b6102cd6102c782610212565b9161020c565b20608052565b6102dc9061031e565b565b90565b6102f56102f06102fa926102de565b61015b565b6100d2565b90565b610306906102e1565b90565b919061031c905f602085019401906101b2565b565b8061033961033361032e5f6102fd565b6100dd565b916100dd565b1461034957610347906103e7565b565b61036c6103555f6102fd565b5f918291631e4fbdf760e01b835260048301610309565b0390fd5b1b90565b9190600861039491029161038e60018060a01b0384610370565b92610370565b9181191691161790565b6103a79061017a565b90565b90565b91906103c36103be6103cb9361039e565b6103aa565b908354610374565b9055565b5f90565b6103e5916103df6103cf565b916103ad565b565b6103fb906103f65f60016103d3565b610473565b565b5f1c90565b60018060a01b031690565b61041961041e916103fd565b610402565b90565b61042b905461040d565b90565b5f1b90565b9061044460018060a01b039161042e565b9181191691161790565b9061046361045e61046a9261039e565b6103aa565b8254610433565b9055565b5f0190565b61047c5f610421565b610486825f61044e565b906104ba6104b47f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361039e565b9161039e565b916104c361006a565b806104cd8161046e565b0390a356fe60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38701:98:-:0;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;;:::o;13060:465::-;;;;;:::i;:::-;13147:24;;13252:95;13224:284;13365:35;13418:14;13224:284;13418:14;13450:13;13481;13489:4;13481:13;:::i;:::-;13224:284;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;13201:317;;;;:::i;:::-;;;:::i;:::-;;13182:336;;13060:465::o;984:1491:2:-;;;;:::i;:::-;:::o;6415:38701:98:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;1225:187:1:-;1273:12;:26;;1289:10;1297:1;1289:10;:::i;:::-;1273:26;:::i;:::-;;;:::i;:::-;;1269:95;;1392:12;;;:::i;:::-;1225:187::o;1269:95::-;1322:31;1342:10;1350:1;1342:10;:::i;:::-;1322:31;;;;;;;;;;;;;:::i;:::-;;;;6415:38701:98;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:2:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;6415:38701:98:-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;2912:187:1:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a","sourceMap":"6415:38701:98:-:0;;;;;;;;;-1:-1:-1;6415:38701:98;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;11660:59::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;6415:38701;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7851:61::-;7903:9;;;:::i;:::-;7851:61;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;12224:30::-;;;;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;14180:52::-;14223:9;;;:::i;:::-;14180:52;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;8133:41::-;;;:::o;6415:38701::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;12352:53::-;12398:7;;;:::i;:::-;12352:53;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10898:74::-;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38701::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38701:98;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;39843:43::-;39883:3;;;:::i;:::-;39843:43;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;11530:47::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;12045:35::-;;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;32979:51::-;33028:2;;;:::i;:::-;32979:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;7980:55::-;8034:1;;;:::i;:::-;7980:55;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;33154:51::-;33203:2;;;:::i;:::-;33154:51;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;11816:85::-;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;12131:29::-;;;;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;10758:58::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;8447:189::-;8492:144;8447:189;:::o;:::-;;;:::i;:::-;;:::o;6415:38701::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30254:263::-;30478:24;:32;30254:263;30336:53;30344:10;:24;;30358:10;30344:24;:::i;:::-;;;:::i;:::-;;30336:53;:::i;:::-;30399:69;30407:24;;:13;30421:9;30407:24;;:::i;:::-;;:::i;:::-;:38;;30435:10;30443:1;30435:10;:::i;:::-;30407:38;:::i;:::-;;;:::i;:::-;;30399:69;:::i;:::-;30478:13;;:24;:::i;:::-;:32;:::i;:::-;30254:263::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;37647:147::-;37766:21;37647:147;37725:22;;:::i;:::-;37777:9;37766:21;:::i;:::-;37759:28;:::o;6415:38701::-;;;:::o;36547:176::-;36667:35;:49;36547:176;36667:25;:49;36547:176;36641:7;;:::i;:::-;36667:14;;:25;:::i;:::-;:35;:::i;:::-;:49;;:::i;:::-;36660:56;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;6415:38701:98;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33980:640::-;;;;;34097:68;34105:10;:38;;34119:24;;:13;34133:9;34119:24;;:::i;:::-;;:::i;:::-;34105:38;:::i;:::-;;;:::i;:::-;;34097:68;:::i;:::-;34175:77;34183:18;:11;;:18;;:::i;:::-;:44;;34205:22;;:::i;:::-;34183:44;:::i;:::-;;;:::i;:::-;;;34175:77;:::i;:::-;34262:32;;34269:25;:14;34284:9;34269:25;;:::i;:::-;34262:32;:::i;:::-;34309:13;34321:1;34309:13;:::i;:::-;34348:3;34324:1;:22;;34328:18;:11;;:18;;:::i;:::-;34324:22;:::i;:::-;;;:::i;:::-;;;;;34348:3;34381:11;34367:85;34375:33;:26;34381:19;:14;:11;;34393:1;34381:14;;:::i;:::-;:19;;;;;:::i;:::-;34375:26;;:::i;:::-;:33;;:::i;:::-;:59;;34412:22;;:::i;:::-;34375:59;:::i;:::-;;;:::i;:::-;;;34367:85;:::i;:::-;34466:77;34474:23;;:14;:11;;34486:1;34474:14;;:::i;:::-;:23;;:::i;:::-;:50;;34501:23;;:14;:11;;34513:1;34501:14;;:::i;:::-;:23;;:::i;:::-;34474:50;:::i;:::-;;;:::i;:::-;;;34466:77;:::i;:::-;34557:46;:30;:25;:14;34572:9;34557:25;;:::i;:::-;:30;:::i;:::-;34588:14;:11;;34600:1;34588:14;;:::i;:::-;34557:46;;:::i;:::-;34348:3;:::i;:::-;34309:13;;34324:22;;;;;;33980:640::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;30760:1036::-;30850:53;30858:10;:24;;30872:10;30858:24;:::i;:::-;;;:::i;:::-;;30850:53;:::i;:::-;30913:47;30921:8;:22;;30933:10;30941:1;30933:10;:::i;:::-;30921:22;:::i;:::-;;;:::i;:::-;;;30913:47;:::i;:::-;30970:76;30978:45;:35;:31;:20;30999:9;30978:31;;:::i;:::-;:35;:::i;:::-;31014:8;30978:45;;:::i;:::-;30970:76;:::i;:::-;31439:42;;31446:35;:25;:14;31461:9;31446:25;;:::i;:::-;31472:8;31446:35;;:::i;:::-;31439:42;:::i;:::-;31672:63;31717:18;31672:42;:35;:25;:14;31687:9;31672:25;;:::i;:::-;31698:8;31672:35;;:::i;:::-;:42;:63;:::i;:::-;31780:8;31750:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;30760:1036::o;1500:62:1:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34923:188:98:-;35078:26;34923:188;35078:26;;:::i;:::-;34923:188::o;:::-;;;;:::i;:::-;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;7140:166;;7298:1;7140:166;;;;;;;7200:88;7208:52;:40;:31;15071:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;15100:9;:27;;15112:15;15100:27;:::i;:::-;;;:::i;:::-;;15096:95;;15205:27;:15;:27;15223:9;15205:27;:::i;:::-;;;:::i;:::-;:47;;15235:17;;:::i;:::-;15205:47;:::i;:::-;;;:::i;:::-;;15201:135;;15921:7;15418:18;;15759:25;15794:50;15418:18;;15390:235;15418:18;15390:235;15418:18;15759:25;15418:18;;;15566;15418;;:::i;:::-;15454:10;;15482:9;15509:11;15538:10;15576:7;15566:18;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;15602:9;15390:235;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15367:268;;;;:::i;:::-;;;:::i;:::-;;15672:58;15701:16;15672:58;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;15662:69;;;;:::i;:::-;;;:::i;:::-;;15774:9;15759:25;:::i;:::-;;;:::i;:::-;15802:20;;15812:10;15802:20;:::i;:::-;;;:::i;:::-;;15794:50;:::i;:::-;15884:11;15897:10;15909;15921:7;;;;:::i;:::-;14803:1133::o;15201:135::-;15301:23;15308:15;15301:23;:::i;:::-;15275:50;;;;;;;;;;;;;;;:::i;:::-;;;;15096:95;15167:23;15174:15;15167:23;:::i;:::-;15136:55;;;;;;;;;;;;;;;:::i;:::-;;;;14803:1133;;;;;;;;;;;:::i;:::-;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;35274:160::-;;35392:35;35274:160;35348:25;;:::i;:::-;35403:7;;35392:35;;;;:::i;:::-;35385:42;:::o;43895:136::-;43991:31;:24;:33;43895:136;43965:7;;:::i;:::-;43991:13;;:24;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;43984:40;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;37041:359::-;;37119:16;;:::i;:::-;37163;:36;:34;:27;:16;37180:9;37163:27;;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37249:5;37235:20;37249:5;37235:20;:::i;:::-;37282:1;37270:13;37282:1;37270:13;:::i;:::-;37296:3;37285:1;:9;;37289:5;37285:9;:::i;:::-;;;:::i;:::-;;;;;37296:3;37327:16;37315:45;37327:33;:30;:27;:16;37344:9;37327:27;;:::i;:::-;:30;:::i;:::-;37358:1;37327:33;;:::i;:::-;37315:45;:6;37322:1;;37315:45;;;:::i;:::-;;:::i;:::-;37296:3;:::i;:::-;37270:13;;37285:9;;;;;37380:13;:::o;6415:38701::-;;;:::o;35990:261::-;;36076:4;;:::i;:::-;36099:14;:42;;:35;:25;:14;36114:9;36099:25;;:::i;:::-;36125:8;36099:35;;:::i;:::-;:42;;:::i;:::-;:64;;36145:18;36099:64;:::i;:::-;;;:::i;:::-;;:145;;;;;35990:261;36092:152;;;:::o;36099:145::-;36179:42;:14;;:42;:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;:65;;36225:19;36179:65;:::i;:::-;;;:::i;:::-;;36099:145;;;;40097:200;40231:59;40097:200;40178:26;;:::i;:::-;40262:9;40273:1;40276:13;40231:59;40276:13;;:::i;:::-;40231:59;;:::i;:::-;;;:::i;:::-;40216:74;40097:200;:::o;7140:166::-;;7298:1;7140:166;;;;7200:88;7208:52;:40;:31;16286:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;16072:320::-;;16377:7;16072:320;;;;16353:10;16365;16377:7;;;;:::i;:::-;16072:320::o;:::-;;;;;;;;:::i;:::-;:::o;32433:178::-;;32554:40;:31;:50;32433:178;32531:4;;:::i;:::-;32554:20;;:31;:::i;:::-;:40;:::i;:::-;:50;:::i;:::-;32547:57;:::o;6415:38701::-;;;:::o;36307:173::-;36431:35;:42;36307:173;36431:25;:42;36307:173;36402:10;;:::i;:::-;36431:14;;:25;:::i;:::-;:35;:::i;:::-;:42;;:::i;:::-;36424:49;:::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;20231:2843::-;;;;;20414:53;20422:10;:27;;20436:13;20444:4;20436:13;:::i;:::-;20422:27;:::i;:::-;;;:::i;:::-;;20414:53;:::i;:::-;20478:66;20519:25;:14;20534:9;20519:25;;:::i;:::-;20478:66;:::i;:::-;20651:8;20637:23;20651:8;20637:23;:::i;:::-;20687:1;20675:13;20687:1;20675:13;:::i;:::-;20704:3;20690:1;:12;;20694:8;20690:12;:::i;:::-;;;:::i;:::-;;;;;20704:3;20755:5;20723:47;20749:20;20755:13;:8;:5;20761:1;20755:8;;:::i;:::-;;:13;;20749:20;:::i;:::-;20739:31;;;;:::i;:::-;;;:::i;:::-;;20723:47;:10;20734:1;;20723:47;;;:::i;:::-;;:::i;:::-;20704:3;:::i;:::-;20675:13;;20690:12;;;;;;;20813:18;:11;:18;:::i;:::-;:22;;20834:1;20813:22;:::i;:::-;;;:::i;:::-;;20914:26;;;:::i;:::-;20954:14;;20950:237;;20670:111;21267:13;21279:1;21267:13;:::i;:::-;21296:3;21282:1;:12;;21286:8;21282:12;:::i;:::-;;;:::i;:::-;;;;;21328:4;21371:5;21449:14;21445:737;;21296:3;22244:5;;;;;21296:3;22244:5;22240:198;;21296:3;;;;;:::i;:::-;21267:13;;22240:198;22320:5;22303:13;:8;22269:33;:48;22320:5;22269:23;22320:14;;:8;22269:65;22320:5;22326:1;22320:8;;:::i;:::-;;:14;;:::i;:::-;22269:12;;:23;:::i;:::-;:33;:::i;:::-;22303:5;22309:1;22303:8;;:::i;:::-;;:13;;22269:48;;:::i;:::-;:65;:::i;:::-;22372:9;;22383:8;22393:5;22408:14;;:8;22393:13;:8;:5;22399:1;22393:8;;:::i;:::-;;:13;;22408:5;22414:1;22408:8;;:::i;:::-;;:14;;:::i;:::-;22357:66;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;22240:198;;;;;21445:737;21500:1;;;;;;21488:13;21500:1;21488:13;:::i;:::-;21527:3;21503:1;:22;;21507:18;:11;:18;:::i;:::-;21503:22;:::i;:::-;;;:::i;:::-;;;;;21558:13;;:10;;:13;:::i;:::-;;:::i;:::-;:29;;21575:12;;:9;21585:1;21575:12;;:::i;:::-;;:::i;:::-;21558:29;:::i;:::-;;;:::i;:::-;;21554:433;;21527:3;;;:::i;:::-;21488:13;;21554:433;21635:4;;;;;;;21296:3;21635:4;;;;;;21669:5;;:14;;:8;:5;21675:1;21669:8;;:::i;:::-;;:14;;:::i;:::-;:40;;21686:23;;:14;:11;21698:1;21686:14;;:::i;:::-;;:23;;:::i;:::-;21669:40;:::i;:::-;;;:::i;:::-;;:84;;;;;;;21554:433;21665:269;;;;;;21554:433;22094:18;21959:5;21483:522;22094:18;;:::i;:::-;22090:78;;21483:522;21445:737;;;;;;;22090:78;22144:5;;22090:78;;21665:269;21806:9;;;21817:8;21827:13;:8;:5;21833:1;21827:8;;:::i;:::-;;:13;;21790:74;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22094:18;21902:5;21665:269;;;;;21669:84;21713:40;:5;;;21730:14;21713:40;:5;:14;;:8;21730:23;21713:5;21730:23;21713:5;:8;:::i;:::-;;:14;;:::i;:::-;21730:11;:14;:::i;:::-;;:23;;:::i;:::-;21713:40;:::i;:::-;;;:::i;:::-;;21669:84;;;;;;21503:22;;;;;;;21296:3;21503:22;;;22094:18;21503:22;;;;21282:12;;;;;;;;;;22509:13;22521:1;22509:13;:::i;:::-;22504:564;22548:3;22524:1;:22;;22528:18;:11;:18;:::i;:::-;22524:22;:::i;:::-;;;:::i;:::-;;;;;22571:24;22572:23;;:14;:11;22584:1;22572:14;;:::i;:::-;;:23;;:::i;:::-;22571:24;;:::i;:::-;22567:38;;22638:37;22648:26;22654:19;:14;:11;22666:1;22654:14;;:::i;:::-;;:19;22648:26;:::i;:::-;22638:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;22702:5;;22738:1;22726:13;22738:1;22726:13;:::i;:::-;22764:3;22741:1;:21;;22745:17;:10;:17;:::i;:::-;22741:21;:::i;:::-;;;:::i;:::-;;;;;22791:13;;:10;22802:1;22791:13;;:::i;:::-;;:::i;:::-;:24;;22808:7;22791:24;:::i;:::-;;;:::i;:::-;;22787:110;;22764:3;;;:::i;:::-;22726:13;;22787:110;22847:4;;;;;22548:3;22847:4;;22928:6;22847:4;22721:190;22928:6;;:::i;:::-;22924:134;;22721:190;22509:13;22548:3;:::i;:::-;22509:13;;;;22924:134;22975:9;22986:8;22996:19;:14;:11;23008:1;22996:14;;:::i;:::-;;:19;22959:84;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;22924:134;;22741:21;;;;;22548:3;22741:21;;22928:6;22741:21;;;22567:38;22597:8;;22548:3;22597:8;;;22524:22;;;;;;20231:2843::o;20950:237::-;21010:11;;;;20996:33;21010:18;:11;;;;;;:18;:::i;:::-;20996:33;:::i;:::-;21060:1;21048:13;21060:1;21048:13;:::i;:::-;21087:3;21063:1;:22;;21067:18;:11;:18;:::i;:::-;21063:22;:::i;:::-;;;:::i;:::-;;;;;21087:3;21141:11;21110:52;21125:37;21135:26;21141:19;:14;:11;21153:1;21141:14;;:::i;:::-;;:19;21135:26;:::i;:::-;21125:37;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;21110:52;:9;21120:1;;21110:52;;;:::i;:::-;;:::i;:::-;21087:3;:::i;:::-;21048:13;;21063:22;;;;;;;;;;20950:237;;1500:62:1;;;:::i;:::-;1554:1;;:::i;:::-;1500:62::o;2293:101::-;2376:10;;2384:1;2376:10;:::i;:::-;;:::i;:::-;2293:101::o;:::-;;;:::i;:::-;:::o;6415:38701:98:-;;;;:::i;:::-;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;36769:211::-;36931:42;36769:211;36938:25;:35;36769:211;36895:20;;:::i;:::-;36938:14;;:25;:::i;:::-;:35;:::i;:::-;36931:42;:::i;:::-;;:::o;6415:38701::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;44950:164::-;45068:39;44950:164;45068:29;:39;44950:164;45043:6;;:::i;:::-;45068:18;;:29;:::i;:::-;:39;:::i;:::-;;:::i;:::-;45061:46;:::o;2244:229:2:-;2313:12;;:::i;:::-;2339:14;;:::i;:::-;:24;;2357:6;2339:24;:::i;:::-;;;:::i;:::-;;2335:96;;2459:6;;;:::i;:::-;2244:229::o;2335:96::-;2386:34;2413:6;2386:34;;;;;;;;;;;;;:::i;:::-;;;;37448:142:98;37547:34;:27;:36;37448:142;37521:7;;:::i;:::-;37547:16;;:27;:::i;:::-;:34;:::i;:::-;:36;:::i;:::-;37540:43;:::o;6415:38701::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;40660:780::-;;;;;40824:26;;:::i;:::-;40852:13;;;:::i;:::-;40924:9;40913:21;40924:9;40913:21;:::i;:::-;40952:13;:33;:31;:24;:13;40966:9;40952:24;;:::i;:::-;:31;:::i;:::-;:33;:::i;:::-;41000:6;:16;;:6;:16;;:::i;:::-;:21;;41020:1;41000:21;:::i;:::-;;;:::i;:::-;;:35;;;;40660:780;41000:54;;;;40660:780;40996:117;;41143:52;41151:6;41170:25;41178:16;;41143:24;41151:15;;41372:61;41151:6;;;:15;;:::i;:::-;41143:24;:::i;:::-;41178:6;:16;;:::i;:::-;41170:25;:::i;:::-;41143:52;;:::i;:::-;41225:5;;:21;;41233:13;;:::i;:::-;41225:21;:::i;:::-;;;:::i;:::-;;:45;;;;41249:13;;;:::i;:::-;41225:45;41294:18;:6;41303:9;41294:18;;:::i;:::-;:26;;41315:5;41294:26;:::i;:::-;;;:::i;:::-;;:55;;;;41323:5;;41294:55;41399:9;41410:6;41418:3;41423:9;41372:61;;:::i;:::-;40660:780;:::o;41294:55::-;41331:18;:6;;:18;:::i;:::-;41294:55;;41225:45;;;40996:117;41092:1;;;;;41078:16;;41092:1;41078:16;:::i;:::-;;:::i;:::-;41070:32;;:::o;41000:54::-;41039:6;;:15;;41049:5;41039:15;:::i;:::-;;;:::i;:::-;;;41000:54;;:35;41025:5;;:10;;41034:1;41025:10;:::i;:::-;;;:::i;:::-;;41000:35;;1500:62:1;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;34670:182:98:-;34822:23;34670:182;34822:23;;:::i;:::-;34670:182::o;:::-;;;;:::i;:::-;:::o;6415:38701::-;;;:::o;1638:85:1:-;1684:7;;:::i;:::-;1710:6;;;;:::i;:::-;1703:13;:::o;6415:38701:98:-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;;;;;;;26227:224;;;;;26329:13;26341:1;26329:13;:::i;:::-;26366:3;26344:1;:20;;26348:16;:9;;:16;;:::i;:::-;26344:20;:::i;:::-;;;:::i;:::-;;;;;26385:24;:4;:24;:::i;:::-;;;26410:9;26421:12;;:9;;26431:1;26421:12;;:::i;:::-;;:::i;:::-;26385:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;26366:3;26385:49;;;26366:3;;;:::i;:::-;26329:13;;26385:49;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;26344:20::-;;;;;;26227:224::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;44113:757::-;44228:60;44236:10;:28;;44250:14;;;:::i;:::-;44236:28;:::i;:::-;;;:::i;:::-;;44228:60;:::i;:::-;44481:72;44489:43;:33;:24;:13;44503:9;44489:24;;:::i;:::-;:33;:::i;:::-;44523:8;44489:43;;:::i;:::-;44481:72;:::i;:::-;44639:33;44564:65;44594:35;:25;:14;44609:9;44594:25;;:::i;:::-;44620:8;44594:35;;:::i;:::-;44564:65;:::i;:::-;44639:12;44654:18;44639:5;:12;:33;:::i;:::-;44682:44;:34;:27;:16;44699:9;44682:27;;:::i;:::-;:34;:::i;:::-;44717:8;44682:44;;:::i;:::-;;44736:65;44778:23;44785:15;44778:23;:::i;:::-;44736:39;:29;:18;44755:9;44736:29;;:::i;:::-;44766:8;44736:39;;:::i;:::-;:65;:::i;:::-;44846:8;44856:6;;44817:46;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;44113:757::o;6415:38701::-;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::o;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;33212:683::-;33742:146;33212:683;33786:92;33212:683;;33786:92;;33742:30;:25;33786:92;33212:683;33504:70;33512:18;:11;33786:92;33212:683;;;;33426:68;33434:10;:38;;33448:24;;:13;33462:9;33448:24;;:::i;:::-;;:::i;:::-;33434:38;:::i;:::-;;;:::i;:::-;;33426:68;:::i;:::-;33512:11;:::i;:::-;:18;;:::i;:::-;:44;;33534:22;;:::i;:::-;33512:44;:::i;:::-;;;:::i;:::-;;;33504:70;:::i;:::-;33584:47;33592:8;:20;;33604:8;33592:20;:::i;:::-;;;:::i;:::-;;;33584:47;:::i;:::-;33641:90;33649:32;:25;:14;33664:9;33649:25;;:::i;:::-;:32;:::i;:::-;:57;;33684:22;;:::i;:::-;33649:57;:::i;:::-;;;:::i;:::-;;33641:90;:::i;:::-;33742:14;:25;:::i;:::-;:30;:::i;:::-;33811:4;;33827:8;33847;33867;33786:92;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;33742:146;:::i;:::-;33212:683::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;28053:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;27976:884::-;28074:67;28104:37;:25;:14;28119:9;28104:25;;:::i;:::-;28130:10;28104:37;;:::i;:::-;28074:67;:::i;:::-;28175:5;:12;;:5;:12;;:::i;:::-;28201:9;;:31;;28214:18;28201:31;:::i;:::-;;;:::i;:::-;;28197:102;;28395:9;:31;;28408:18;28395:31;:::i;:::-;;;:::i;:::-;;:67;;;;27976:884;28391:104;;28639:21;28610:19;28595:34;28610:19;28595:12;:5;:12;:34;:::i;:::-;28639:17;:21;28659:1;28639:21;:::i;:::-;:5;:17;:21;:::i;:::-;28670:43;:31;:27;:16;28687:9;28670:27;;:::i;:::-;:31;:::i;:::-;28702:10;28670:43;;:::i;:::-;;28748:9;28759:10;28729:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;28810:10;;28822:9;28833:19;;28785:68;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27976:884::o;28391:104::-;28478:7;;;:::o;28395:67::-;28430:9;;:32;;28443:19;28430:32;:::i;:::-;;;:::i;:::-;;28395:67;;28197:102;28248:40;;:::i;:::-;6415:38701;;;28248:40;;;;;;;;:::i;:::-;;;;27976:884;;;;:::i;:::-;:::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;29569:585::-;29676:10;:24;;29690:10;29676:24;:::i;:::-;;;:::i;:::-;;:66;;;;29569:585;29668:93;;;:::i;:::-;29772:45;29780:8;:14;;29792:2;29780:14;:::i;:::-;;;:::i;:::-;;;29772:45;:::i;:::-;29847:50;29855:9;:14;;29868:1;29855:14;:::i;:::-;;;:::i;:::-;;;29847:50;:::i;:::-;29908:169;29978:8;29938:139;29999:9;29938:139;30025:41;;:27;:16;30042:9;30025:27;;:::i;:::-;:41;;:::i;:::-;29938:139;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;29908:27;:16;29925:9;29908:27;;:::i;:::-;:169;:::i;:::-;30127:8;30137:9;30093:54;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;29569:585::o;29676:66::-;29704:10;29668:93;29704:10;:38;;29718:24;;:13;29732:9;29718:24;;:::i;:::-;;:::i;:::-;29704:38;:::i;:::-;;;:::i;:::-;;29676:66;;;;6415:38701;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;24826:1348::-;24910:65;24940:35;:25;:14;24955:9;24940:25;;:::i;:::-;24966:8;24940:35;;:::i;:::-;24910:65;:::i;:::-;25028:9;25017:21;25028:9;25017:21;:::i;:::-;25138:12;;:5;:12;;:::i;:::-;:34;;25154:18;25138:34;:::i;:::-;;;:::i;:::-;;25134:47;;25195:19;;:5;:19;;:::i;:::-;:24;;25218:1;25195:24;:::i;:::-;;;:::i;:::-;;25191:92;;25385:25;25311:37;:15;25329:19;;:5;:19;;:::i;:::-;25311:37;;:::i;:::-;25385:25;25395:15;;:6;:15;;:::i;:::-;25385:25;:::i;:::-;;;:::i;:::-;25511:16;:34;;25530:15;25511:34;:::i;:::-;;;:::i;:::-;;:78;;;;25548:15;;25511:78;25604:11;;:31;;25618:17;;:5;:17;;:::i;:::-;25604:31;:::i;:::-;;;:::i;:::-;;25600:568;;25511:78;24826:1348;;;;;:::o;25600:568::-;25651:31;25671:11;25651:17;:5;:17;:31;:::i;:::-;25696:26;;25721:1;25696:26;:::i;:::-;:22;:5;:22;:26;:::i;:::-;25741:31;;25756:16;;25741:11;25756:6;:16;;:::i;:::-;25741:31;:::i;:::-;;;:::i;:::-;;;:69;;;25600:568;25737:421;;25600:568;;;;25737:421;25883:33;25853:12;;:5;:12;;:::i;:::-;25898:18;25883:12;25898:18;25883:5;:12;:33;:::i;:::-;25934:44;:34;:27;:16;25951:9;25934:27;;:::i;:::-;:34;:::i;:::-;25969:8;25934:44;;:::i;:::-;;26022:9;26033:8;;26043:11;26002:53;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;26103:8;26113:9;26124:18;;26078:65;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;25737:421;;;;;;25741:69;25776:5;:12;;:5;:12;;:::i;:::-;:34;;25792:18;25776:34;:::i;:::-;;;:::i;:::-;;;25741:69;;25511:78;25566:23;25572:16;25566:23;:::i;:::-;25511:78;;25191:92;25235:7;;;;:::o;25134:47::-;25174:7;;;;:::o;6415:38701::-;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;:::o;38174:156::-;38298:25;38291:32;38174:156;38254:25;;:::i;:::-;38298:14;;:25;:::i;:::-;38291:32;:::i;:::-;;:::o;7140:166::-;7298:1;7140:166;7200:88;7208:52;:40;:31;27342:9;7208:20;:31;:::i;:::-;:40;:::i;:::-;7249:10;7208:52;;:::i;:::-;7200:88;:::i;:::-;7298:1;:::i;:::-;7140:166::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;27264:514::-;27363:67;27393:37;:25;:14;27408:9;27393:25;;:::i;:::-;27419:10;27393:37;;:::i;:::-;27363:67;:::i;:::-;27464:5;:12;;:5;:12;;:::i;:::-;27490:9;;:31;;27503:18;27490:31;:::i;:::-;;;:::i;:::-;;27486:103;;27599:33;27614:18;27599:12;27614:18;27599:5;:12;:33;:::i;:::-;27642:46;:34;:27;:16;27659:9;27642:27;;:::i;:::-;:34;:::i;:::-;27677:10;27642:46;;:::i;:::-;;27729:10;;27741:9;27752:18;;27704:67;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;27264:514::o;27486:103::-;27537:41;;:::i;:::-;6415:38701;;;27537:41;;;;;;;;:::i;:::-;;;;27264:514;;;;:::i;:::-;:::o;6415:38701::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;:::i;:::-;;:::o;37851:264::-;;38063:33;:45;37851:264;;38063:23;:45;37851:264;38033:7;;:::i;:::-;38063:12;;:23;:::i;:::-;:33;:::i;:::-;38097:10;;38063:45;;:::i;:::-;;:::i;:::-;38056:52;:::o;1232:99:2:-;1285:7;;:::i;:::-;1311:13;;;;:::i;:::-;1304:20;:::o;6415:38701:98:-;;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;42932:886;;43767:34;:27;:44;42932:886;43027:10;:38;;43041:24;;:13;43055:9;43041:24;;:::i;:::-;;:::i;:::-;43027:38;:::i;:::-;;;:::i;:::-;;:63;;;;42932:886;43019:90;;;:::i;:::-;43120:64;43149:35;:25;:14;43164:9;43149:25;;:::i;:::-;43175:8;43149:35;;:::i;:::-;43120:64;:::i;:::-;43294:12;;:5;:12;;:::i;:::-;:34;;43310:18;43294:34;:::i;:::-;;;:::i;:::-;;43290:416;;42932:886;43716:13;:41;:31;:24;:13;43730:9;43716:24;;:::i;:::-;:31;:::i;:::-;43748:8;43716:41;;:::i;:::-;;43767:16;:27;:::i;:::-;:34;:::i;:::-;:44;:::i;:::-;;42932:886::o;43290:416::-;43514:181;43387:9;43443:57;:52;43376:21;43387:9;43376:21;:::i;:::-;43470:25;43478:16;;43443:24;43451:15;;:6;:15;;:::i;:::-;43443:24;:::i;:::-;43478:6;:16;;:::i;:::-;43470:25;:::i;:::-;43443:52;;:::i;:::-;:57;43498:2;43443:57;:::i;:::-;;;:::i;:::-;43539:19;;:5;:19;;:::i;:::-;:23;;43561:1;43539:23;:::i;:::-;;;:::i;:::-;;:89;;;;43290:416;43514:181;;;:::i;:::-;43290:416;;;43539:89;43566:62;:15;;;:37;:62;:15;43584:19;;43566:15;43584:5;:19;;:::i;:::-;43566:37;;:::i;:::-;43607:21;43566:62;:::i;:::-;;;:::i;:::-;;;43539:89;;;;43027:63;43069:10;43019:90;43069:10;:21;;43083:7;;:::i;:::-;43069:21;:::i;:::-;;;:::i;:::-;;43027:63;;;;38403:374;;38607:35;38578:64;38403:374;38499:4;;:::i;:::-;38558:9;38607:25;38547:21;38558:9;38547:21;:::i;:::-;38607:14;;:25;:::i;:::-;:35;:::i;:::-;38578:64;:::i;:::-;38657:19;;:5;:19;;:::i;:::-;:24;;38680:1;38657:24;:::i;:::-;;;:::i;:::-;;38653:42;;38713:57;38755:15;;38714:37;38713:57;38714:15;38732:19;38714:15;;38732:5;:19;;:::i;:::-;38714:37;;:::i;:::-;38755:6;:15;;:::i;:::-;38713:57;:::i;:::-;;;:::i;:::-;;38706:64;:::o;38653:42::-;38690:5;;;38683:12;:::o;1500:62:1:-;1554:1;1500:62;;;:::i;:::-;1554:1;:::i;:::-;1500:62::o;1649:178:2:-;1738:24;1754:8;1738:24;;:::i;:::-;1802:7;;:::i;:::-;1811:8;1777:43;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;1649:178::o;:::-;;;;:::i;:::-;:::o;32669:225:98:-;32836:41;:27;:51;32669:225;32758:68;32766:10;:38;;32780:24;;:13;32794:9;32780:24;;:::i;:::-;;:::i;:::-;32766:38;:::i;:::-;;;:::i;:::-;;32758:68;:::i;:::-;32836:16;;:27;:::i;:::-;:41;:51;:::i;:::-;32669:225::o;6415:38701::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;32015:347;32107:53;32115:10;:24;;32129:10;32115:24;:::i;:::-;;;:::i;:::-;;32107:53;:::i;:::-;32170:75;32178:48;:38;:31;:20;32199:9;32178:31;;:::i;:::-;:38;:::i;:::-;32217:8;32178:48;;:::i;:::-;32170:75;:::i;:::-;32255:44;:34;:27;:16;32272:9;32255:27;;:::i;:::-;:34;:::i;:::-;32290:8;32255:44;;:::i;:::-;;32346:8;32314:41;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;32015:347::o;6415:38701::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;38824:443::-;38951:27;38919:59;38824:443;38885:22;;:::i;:::-;38951:16;;:27;:::i;:::-;38919:59;:::i;:::-;39037:15;;:6;:15;;:::i;:::-;:20;;39056:1;39037:20;:::i;:::-;;;:::i;:::-;;39033:95;;38824:443;39141:16;;:6;:16;;:::i;:::-;:21;;39161:1;39141:21;:::i;:::-;;;:::i;:::-;;39137:100;;38824:443;39247:13;:::o;39137:100::-;39178:48;39197:29;;:::i;:::-;39178:16;:6;:16;:48;:::i;:::-;39137:100;;39033:95;39073:44;39091:26;;:::i;:::-;39073:15;:6;:15;:44;:::i;:::-;39033:95;;6415:38701;;;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;:::o;8289:150:26:-;;8382:50;8399:32;8407:23;8415:14;8387:10;8382:50;8289:150;8359:4;;:::i;:::-;8387:3;:10;8423:5;8415:14;:::i;:::-;8407:23;:::i;:::-;8399:32;:::i;:::-;8382:50;;:::i;:::-;;:::i;:::-;8375:57;:::o;1796:162:1:-;1855:7;;:::i;:::-;:23;;1866:12;;:::i;:::-;1855:23;:::i;:::-;;;:::i;:::-;;1851:101;;1796:162::o;1851:101::-;1901:40;1928:12;;:::i;:::-;1901:40;2386:34:2;;;;;;1901:40:1;;;;;;:::i;:::-;;;;8844:165:26;;8947:55;8969:32;8977:23;8985:14;8957:10;8947:55;8844:165;8924:4;;:::i;:::-;8957:3;:10;8993:5;8985:14;:::i;:::-;8977:23;:::i;:::-;8969:32;:::i;:::-;8947:55;;:::i;:::-;;:::i;:::-;8940:62;:::o;3714:255:22:-;3927:8;3714:255;3871:27;3714:255;3792:7;;:::i;:::-;3882:4;3871:27;:::i;:::-;3811:87;;;;3927:8;:::i;:::-;3946:16;:::o;6415:38701:98:-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;16445:2218::-;;;;;;16647:65;16677:35;:25;:14;16692:9;16677:25;;:::i;:::-;16703:8;16677:35;;:::i;:::-;16647:65;:::i;:::-;16765:9;16754:21;16765:9;16754:21;:::i;:::-;16852:5;16844:66;16852:12;;:5;:12;;:::i;:::-;:34;;16868:18;16852:34;:::i;:::-;;;:::i;:::-;;;16844:66;:::i;:::-;16972:38;:28;:24;:13;16986:9;16972:24;;:::i;:::-;:28;:::i;:::-;17001:8;16972:38;;:::i;:::-;;18062:20;;17068:12;;:5;:12;;:::i;:::-;17112:15;17090:37;17112:15;17090:19;:5;:19;:37;:::i;:::-;17137:42;17161:18;17171:7;;17161:18;;:::i;:::-;;;;;:::i;:::-;;;:::i;:::-;;17137:21;:5;:21;:42;:::i;:::-;17189:21;;17209:1;17189:21;:::i;:::-;:17;:5;:17;:21;:::i;:::-;17220:24;:22;:5;:22;:24;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;17310:20;;:::i;:::-;17344:10;;:15;;17358:1;17344:15;:::i;:::-;;;:::i;:::-;;17340:393;;;;17743:24;17387:18;17340:393;;17743:12;17758:9;17743:5;:12;:24;:::i;:::-;17811:9;:31;;17824:18;17811:31;:::i;:::-;;;:::i;:::-;;:66;;;17340:393;17807:196;;17340:393;18062:20;;:::i;:::-;:42;;;17340:393;18058:118;;17340:393;18209:9;;;18220:11;18233:8;18243:10;18255:15;;18191:80;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18286:9;:22;;18299:9;18286:22;:::i;:::-;;;:::i;:::-;;18282:114;;17340:393;18473:15;;;;;:::i;:::-;:29;;18492:10;18500:1;18492:10;:::i;:::-;18473:29;:::i;:::-;;;:::i;:::-;;18469:188;;17340:393;16445:2218;;:::o;18469:188::-;18522:49;:33;18539:15;;;:::i;:::-;18522:33;:::i;:::-;:49;:::i;:::-;;;18572:8;18582:9;18600:15;18593:23;18600:15;18593:23;:::i;:::-;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;18469:188;18518:129;;;;;;;;;;;18469:188;;;;18518:129;;;;;;18522:95;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;18282:114::-;18343:9;18354:8;18364:9;18375;18329:56;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;18282:114;;;;18058:118;18157:7;18136:9;;18147:8;;18157:7;;;;:::i;:::-;18058:118;;;;18062:42;18086:7;:14;:7;;:14;;:::i;:::-;:18;;18103:1;18086:18;:::i;:::-;;;:::i;:::-;;18062:42;;17807:196;17893:41;:31;:27;:16;;:27;:::i;:::-;:31;:::i;:::-;17925:8;17893:41;;:::i;:::-;;17972:9;17983:8;17953:39;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;17807:196;;17811:66;17846:9;;:31;;17859:18;17846:31;:::i;:::-;;;:::i;:::-;;;17811:66;;17340:393;17426:10;:16;;17439:3;17426:16;:::i;:::-;;;:::i;:::-;;17422:311;;;;17743:24;17470:19;17422:311;;17340:393;;17422:311;17743:24;17611:19;17668:9;17714:7;17668:9;17679:11;;17692:8;17702:10;17714:7;;;;;;:::i;:::-;17422:311;;9090:115:26;9179:19;9187:10;9179:19;9090:115;9153:7;;:::i;:::-;9187:3;:10;9179:19;:::i;:::-;;:::i;:::-;9172:26;:::o;6415:38701:98:-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;9547:156:26:-;9663:31;9671:22;9647:49;9547:156;9671:22;9675:10;9655:40;9547:156;9621:7;;:::i;:::-;9675:3;:10;9671:22;:::i;:::-;;:::i;:::-;9663:31;:::i;:::-;9655:40;:::i;:::-;9647:49;:::i;:::-;9640:56;:::o;6415:38701:98:-;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;:::o;2011:153:2:-;2148:8;2011:153;2093:20;;;;:::i;:::-;2148:8;:::i;:::-;2011:153::o;656:96:17:-;709:7;;:::i;:::-;735:10;;728:17;:::o;6415:38701:98:-;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;:::o;41446:705::-;;;;;41633:26;;:::i;:::-;41713:3;41699:27;41713:12;:3;41719:6;41713:12;;:::i;:::-;41699:27;:::i;:::-;41752:1;41736:17;41752:1;41736:17;:::i;:::-;41781:6;41798:3;41789:1;:7;;41793:3;41789:7;:::i;:::-;;;:::i;:::-;;;;;41830:30;:27;:24;:13;41844:9;41830:24;;:::i;:::-;:27;:::i;:::-;41858:1;41830:30;;:::i;:::-;41878:46;41899:9;41910:2;41914:9;41878:46;;:::i;:::-;41874:126;;41798:3;;;;;:::i;:::-;41769:18;;41874:126;41798:3;41958:2;;41944:16;41978:7;41958:2;41944:16;:4;41949:5;;41944:16;;;:::i;:::-;;:::i;:::-;41978:7;:::i;:::-;41874:126;;;;41789:7;;;;;;;42032:20;42046:5;42032:20;:::i;:::-;42079:1;42067:13;42079:1;42067:13;:::i;:::-;42093:3;42082:1;:9;;42086:5;42082:9;:::i;:::-;;;:::i;:::-;;;;;42093:3;42127:4;42112:22;42127:7;;:4;42132:1;42127:7;;:::i;:::-;;:::i;:::-;42112:22;:9;42122:1;;42112:22;;;:::i;:::-;;:::i;:::-;42093:3;:::i;:::-;42067:13;;42082:9;;;;;41446:705::o;8607:156:26:-;;8703:53;8723:32;8731:23;8739:14;8711:10;8703:53;8607:156;8680:4;;:::i;:::-;8711:3;:10;8747:5;8739:14;:::i;:::-;8731:23;:::i;:::-;8723:32;:::i;:::-;8703:53;;:::i;:::-;;:::i;:::-;8696:60;:::o;6415:38701:98:-;;:::o;:::-;;;;;;;:::o;:::-;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;:::o;2241:406:26:-;2304:4;;:::i;:::-;2335:3;2324:22;2325:21;2335:3;2340:5;2325:21;;:::i;:::-;2324:22;;:::i;:::-;2320:321;;;;2520:21;:42;2362:3;:23;:16;:11;:3;:11;:16;:::i;:::-;2379:5;2362:23;;:::i;:::-;2520:14;2544:18;:11;:3;:11;:18;:::i;:::-;2520:3;:14;:21;:::i;:::-;:42;:::i;:::-;2583:4;2576:11;:::o;2320:321::-;2625:5;;;2618:12;:::o;4264:129::-;4360:21;4264:129;4360:14;:21;4264:129;4337:4;;:::i;:::-;4360:3;:14;:21;:::i;:::-;;:::i;:::-;:26;;4385:1;4360:26;:::i;:::-;;;:::i;:::-;;;4353:33;:::o;6415:38701:98:-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;:::o;2129:778:22:-;;;;2232:17;;:::i;:::-;2251:16;;;:::i;:::-;2269:14;;;:::i;:::-;2299:9;:16;:9;:16;:::i;:::-;:22;;2319:2;2299:22;:::i;:::-;;;:::i;:::-;;2295:606;;;;2751:25;2337:9;;;;:::i;:::-;2360;;;:::i;:::-;2383:7;;;:::i;:::-;2535:196;;;;;;;;;;;;;;;2771:1;2774;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2823:1;2815:10;2823:1;2815:10;:::i;:::-;2827:35;2864:25;2872:16;2827:35;2872:9;:16;:::i;:::-;2864:25;:::i;:::-;2807:83;;;;:::o;6415:38701:98:-;;-1:-1:-1;6415:38701:98;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;7280:532:22:-;7366:5;:29;;7375:20;7366:29;:::i;:::-;;;:::i;:::-;;7362:444;;;;7411:7;;:::o;7362:444::-;7462:5;:38;;7471:29;7462:38;:::i;:::-;;;:::i;:::-;;7458:348;;;;7523:23;;;;;;;;;;;;:::i;:::-;;;;7458:348;7567:5;:44;;7576:35;7567:44;:::i;:::-;;;:::i;:::-;;7563:243;;;;7634:46;7662:17;7670:8;7662:17;:::i;:::-;7634:46;;;;;;;;;;;;;:::i;:::-;;;;7563:243;7701:39;;7710:30;7701:39;:::i;:::-;;;:::i;:::-;;7697:109;;7563:243;7280:532::o;7697:109::-;7763:32;7786:8;7763:32;;;;;;;;;;;;;:::i;:::-;;;;6415:38701:98;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;23148:1016::-;;;;;;23584:17;;23598:3;23584:17;:::i;:::-;;;:::i;:::-;;;23580:513;;23148:1016;;;:::o;23580:513::-;23638:23;23645:15;23638:23;:::i;:::-;23694:39;;:29;:18;23713:9;23694:29;;:::i;:::-;23724:8;23694:39;;:::i;:::-;;:::i;:::-;23751:9;:14;;23764:1;23751:14;:::i;:::-;;;:::i;:::-;;:65;;;;;23580:513;23747:336;;;23580:513;;;;23747:336;23836:53;23878:11;23836:39;:29;:18;23855:9;23836:29;;:::i;:::-;23866:8;23836:39;;:::i;:::-;:53;:::i;:::-;23941:8;23912:69;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;23747:336;;;;;23751:65;23769:23;:11;;;:23;:::i;:::-;:47;;23796:20;;:::i;:::-;23769:47;:::i;:::-;;;:::i;:::-;;;23751:65;;;6415:38701;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;18801:46::-;18845:2;;;:::i;:::-;18801:46;:::o;18845:2::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;:::i;:::-;:::o;18854:1122::-;;18962:14;:7;;:14;;:::i;:::-;:19;;18980:1;18962:19;:::i;:::-;;;:::i;:::-;;18958:32;;19067:14;:7;;:14;;:::i;:::-;:23;;19084:6;19067:23;:::i;:::-;;;:::i;:::-;;19063:36;;19240:31;19109:25;;:::i;:::-;19240:4;:22;:4;:22;:::i;:::-;:31;:22;19263:7;;19240:31;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;18854:1122;19236:152;;;;;;;;;;;19472:12;:5;:12;:::i;:::-;:31;;19487:16;;:::i;:::-;19472:31;:::i;:::-;;;:::i;:::-;;:65;;;;19506:16;;:::i;:::-;19472:65;19709:28;:4;:28;:::i;:::-;;;19738:9;19749:8;19759:5;19766:8;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;19472:65;19705:265;;;;;;;;;;;18854:1122::o;19705:265::-;;;;;;19709:66;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;19472:65::-;19525:12;:5;:12;:::i;:::-;19472:65;;19236:152;19371:7;;;:::o;19236:152::-;;;;;;;19240:31;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;19063:36;19092:7;;;;:::o;18958:32::-;18983:7;;;;:::o;4474:107:26:-;4556:11;:18;4474:107;4530:7;;:::i;:::-;4556:3;:11;:18;:::i;:::-;4549:25;:::o;6415:38701:98:-;;;;;;;:::o;:::-;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;4923:118:26:-;5016:18;4923:118;5016:11;:18;4923:118;4990:7;;:::i;:::-;5016:3;:11;:18;:::i;:::-;;;:::i;:::-;5009:25;:::o;2912:187:1:-;3004:6;;;:::i;:::-;3020:17;3029:8;3020:17;;:::i;:::-;3083:8;3052:40;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;:::i;:::-;;;;2912:187::o;42157:511:98:-;42265:4;;:::i;:::-;42364:20;42363:51;42364:50;:40;:31;:20;42385:9;42364:31;;:::i;:::-;:40;:::i;:::-;42405:8;42364:50;;:::i;:::-;42363:51;;:::i;:::-;42359:69;;42439:64;42468:14;:25;:35;:14;;:25;:::i;:::-;:35;:::i;:::-;42439:64;:::i;:::-;42517:19;;:5;:19;;:::i;:::-;:24;;42540:1;42517:24;:::i;:::-;;;:::i;:::-;;:62;;;;42157:511;42513:80;;42611:50;:37;:50;:15;42629:19;;42611:15;42629:5;:19;;:::i;:::-;42611:37;;:::i;:::-;42652:9;42611:50;:::i;:::-;;;:::i;:::-;;;42604:57;:::o;42513:80::-;42588:5;;;42581:12;:::o;42517:62::-;42545:5;:12;;:5;:12;;:::i;:::-;:34;;42561:18;42545:34;:::i;:::-;;;:::i;:::-;;42517:62;;42359:69;42423:5;;;;42416:12;:::o;6415:38701::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;:::o;:::-;;:::i;2815:1368:26:-;2881:4;;:::i;:::-;3010:3;:21;;:14;:3;:14;3025:5;3010:21;;:::i;:::-;;:::i;:::-;3046:8;;:13;;3058:1;3046:13;:::i;:::-;;;:::i;:::-;;;3042:1135;;;;4069:28;3434:8;4076:14;:21;3434:8;;:12;4069:28;3434:8;:12;3445:1;3434:12;:::i;:::-;;;:::i;:::-;3480:22;:18;:3;;:11;:18;:::i;:::-;:22;3501:1;3480:22;:::i;:::-;;;:::i;:::-;3521:10;:23;;3535:9;3521:23;:::i;:::-;;;:::i;:::-;;3517:378;;3042:1135;3973:3;;;:15;;:3;;:11;:15;:::i;:::-;;:::i;:::-;4076:14;:21;:::i;:::-;4069:28;:::i;:::-;4119:4;4112:11;:::o;3517:378::-;3844:36;3584:3;3705:35;3584:22;;3844:25;3584:3;;;:11;:22;:::i;:::-;;;:::i;:::-;3731:9;3705:23;3731:9;3705:3;;;:11;:23;:::i;:::-;:35;;:::i;:::-;3844:3;;;:14;:25;:::i;:::-;:36;:::i;:::-;3517:378;;;;;3042:1135;4161:5;;;;4154:12;:::o;6415:38701:98:-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;5203:1551:22:-;;;;5329:17;;:::i;:::-;5348:16;;;:::i;:::-;5366:14;;;:::i;:::-;6278:1;6270:10;6278:1;6270:10;:::i;:::-;:79;;6283:66;6270:79;:::i;:::-;;;:::i;:::-;;6266:164;;6551:4;6541:24;;6551:4;;6541:24;6551:4;;6557:1;6560;6541:24;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;6579:6;:20;;6589:10;6597:1;6589:10;:::i;:::-;6579:20;:::i;:::-;;;:::i;:::-;;6575:113;;6714:20;6744:1;6736:10;6744:1;6736:10;:::i;:::-;6698:49;;;;:::o;6575:113::-;6631:1;6623:10;6631:1;6623:10;:::i;:::-;6635:29;6674:1;6666:10;6674:1;6666:10;:::i;:::-;6615:62;;;;:::o;6541:24::-;;:::i;6266:164::-;6381:1;;;6373:10;6381:1;6373:10;:::i;:::-;6385:30;;6417:1;6365:54;;;;:::o","linkReferences":{},"immutableReferences":{"50491":[{"start":3807,"length":32},{"start":14646,"length":32}],"50639":[{"start":5216,"length":32},{"start":9933,"length":32},{"start":13367,"length":32},{"start":22350,"length":32},{"start":25355,"length":32}]}},"methodIdentifiers":{"DEFAULT_HEARTBEAT_INTERVAL()":"2c957688","DEFAULT_MAX_MISSED_HEARTBEATS()":"61d6b86c","DOMAIN_SEPARATOR()":"3644e515","HEARTBEAT_MAX_AGE()":"2f4bd7b8","HEARTBEAT_TYPEHASH()":"f9f16762","MAX_METRIC_DEFINITIONS()":"6076439c","MAX_METRIC_NAME_LENGTH()":"6bfe06a6","MAX_PAGE_SIZE()":"48f4da20","SLASH_ALERT_COOLDOWN()":"3ac3cbe6","acceptOwnership()":"79ba5097","addMetricDefinition(uint64,string,uint256,uint256,bool)":"ae470a85","checkOperatorStatus(uint64,address)":"ba1fb103","checkOperatorsStatus(uint64,address[])":"96686c1e","configureHeartbeat(uint64,uint64,uint8)":"b99f6759","decodeMetricPairs(bytes)":"31e3bd1b","deregisterOperator(uint64,address)":"ffcf08f0","enableCustomMetrics(uint64,bool)":"f9107f3b","getAllOperatorCount(uint64)":"3fd62c6d","getHeartbeatConfig(uint64)":"0758236f","getLastCriticalHeartbeat(uint64,address)":"7639d227","getLastHeartbeat(uint64,address)":"0c76697a","getMetricDefinitions(uint64)":"c1ef9ddf","getMetricValue(uint64,address,string)":"d551162c","getOnlineOperatorCount(uint64)":"7b9f64b2","getOnlineOperators(uint64)":"40235a9c","getOperatorState(uint64,address)":"71e7388c","getOperatorStatus(uint64,address)":"62c7e8fc","getSlashableOperators(uint64)":"59dcea12","getSlashableOperatorsPaginated(uint64,uint256,uint256)":"81beac2e","goOffline(uint64)":"c5d960bb","goOnline(uint64)":"b074e9dd","heartbeatConfigs(uint64)":"da435a7c","isHeartbeatCurrent(uint64,address)":"ee1c0390","isOnline(uint64,address)":"5685cf68","isRegisteredOperator(uint64,address)":"60cf0991","metricValues(uint64,address,string)":"9cbdae22","metricsRecorder()":"2dae1885","operatorStates(uint64,address)":"3e6e34a7","owner()":"8da5cb5b","pendingOwner()":"e30c3978","registerOperator(uint64,address)":"1e8f5ee5","registerServiceOwner(uint64,address)":"05778550","removeInactiveOperator(uint64,address)":"e65cafcb","renounceOwnership()":"715018a6","reportForSlashing(uint64,address,string)":"adff830c","serviceMetrics(uint64,uint256)":"22f1ec93","serviceOwners(uint64)":"56c4e17d","setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":"191cbd1a","setMetricsRecorder(address)":"20812956","setSlashingOracle(address)":"84ef7322","slashingOracle()":"cfe34749","submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":"2bf4d6a7","submitHeartbeatDirect(uint64,uint64,uint8,bytes)":"5cce98a6","tangleCore()":"5a936dc6","transferOwnership(address)":"f2fde38b","validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":"65a6936e"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tangleCore\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatFromFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"signed\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"now_\",\"type\":\"uint64\"}],\"name\":\"HeartbeatStale\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"HeartbeatConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"HeartbeatReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"MetricReported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"MetricViolation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorCameOnline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"}],\"name\":\"OperatorWentOffline\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"SlashingTriggered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"oldStatus\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"newStatus\",\"type\":\"uint8\"}],\"name\":\"StatusChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_HEARTBEAT_INTERVAL\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_MAX_MISSED_HEARTBEATS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_MAX_AGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HEARTBEAT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_DEFINITIONS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_METRIC_NAME_LENGTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PAGE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLASH_ALERT_COOLDOWN\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"name\":\"addMetricDefinition\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"checkOperatorStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"name\":\"checkOperatorsStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"}],\"name\":\"configureHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"decodeMetricPairs\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"enableCustomMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getAllOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getHeartbeatConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.HeartbeatConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastCriticalHeartbeat\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLastHeartbeat\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getMetricDefinitions\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"metricName\",\"type\":\"string\"}],\"name\":\"getMetricValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getOnlineOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct IOperatorStatusRegistry.OperatorState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getOperatorStatus\",\"outputs\":[{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"getSlashableOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"offset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"getSlashableOperatorsPaginated\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"operators\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOffline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"}],\"name\":\"goOnline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"heartbeatConfigs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"interval\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maxMissed\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"customMetrics\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isHeartbeatCurrent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOnline\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isRegisteredOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"metricValues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metricsRecorder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorStates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastHeartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"consecutiveBeats\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"missedBeats\",\"type\":\"uint8\"},{\"internalType\":\"enum IOperatorStatusRegistry.StatusCode\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"lastMetricsHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"registerServiceOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"removeInactiveOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"reportForSlashing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"serviceMetrics\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"serviceOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"required\",\"type\":\"bool\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricDefinition[]\",\"name\":\"definitions\",\"type\":\"tuple[]\"}],\"name\":\"setMetricDefinitions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recorder\",\"type\":\"address\"}],\"name\":\"setMetricsRecorder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"setSlashingOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashingOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blueprintId\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"statusCode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metrics\",\"type\":\"bytes\"}],\"name\":\"submitHeartbeatDirect\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tangleCore\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"serviceId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct IOperatorStatusRegistry.MetricPair[]\",\"name\":\"pairs\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"pairsLen\",\"type\":\"uint256\"}],\"name\":\"validateAndStoreMetrics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Integrates with Blueprint SDK QoS metrics system\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"checkOperatorStatus(uint64,address)\":{\"details\":\"Should be called periodically (e.g., by keepers or during other operations)\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"params\":{\"interval\":\"Heartbeat interval in seconds\",\"maxMissed\":\"Max missed heartbeats before offline\",\"serviceId\":\"The service ID\"}},\"decodeMetricPairs(bytes)\":{\"details\":\"External + try/catch wrapper target so malformed payloads don't brick heartbeats.\"},\"deregisterOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable.\"},\"getSlashableOperators(uint64)\":{\"params\":{\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators (capped at MAX_PAGE_SIZE)\"}},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"params\":{\"limit\":\"Max results per page (capped at MAX_PAGE_SIZE)\",\"offset\":\"Starting index\",\"serviceId\":\"The service ID\"},\"returns\":{\"operators\":\"Array of slashable operators in this page\",\"total\":\"Total operators in the set (for pagination)\"}},\"goOffline(uint64)\":{\"details\":\"Sets status to Exiting but does NOT exempt from slashing \\u2014 operators remain slashable until properly deregistered through the service lifecycle.\",\"params\":{\"serviceId\":\"The service ID\"}},\"goOnline(uint64)\":{\"details\":\"Must submit a heartbeat after coming online to be marked Healthy\",\"params\":{\"serviceId\":\"The service ID\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"registerOperator(uint64,address)\":{\"details\":\"Only callable by Tangle core \\u2014 operator assignment is determined by the service lifecycle (request \\u2192 approve \\u2192 activate), not by service owners.\"},\"registerServiceOwner(uint64,address)\":{\"details\":\"Only callable by the Tangle core contract\"},\"removeInactiveOperator(uint64,address)\":{\"details\":\"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"details\":\"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \\\"healthy\\\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments.\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"details\":\"Can only be called by registered operators\"},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer.\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"details\":\"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external).\"}},\"stateVariables\":{\"HEARTBEAT_MAX_AGE\":{\"details\":\"Beyond this, replays of an old \\\"healthy\\\" heartbeat would mask current liveness.\"},\"MAX_METRIC_PAIRS\":{\"details\":\"Maximum number of metric pairs per heartbeat to bound gas costs.\"}},\"title\":\"OperatorStatusRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_HEARTBEAT_INTERVAL()\":{\"notice\":\"Default heartbeat interval (5 minutes)\"},\"DEFAULT_MAX_MISSED_HEARTBEATS()\":{\"notice\":\"Default max missed heartbeats before offline\"},\"DOMAIN_SEPARATOR()\":{\"notice\":\"Domain separator for EIP-712 signatures (kept for backwards compatibility)\"},\"HEARTBEAT_MAX_AGE()\":{\"notice\":\"Maximum staleness for a heartbeat signature.\"},\"HEARTBEAT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface.\"},\"MAX_METRIC_DEFINITIONS()\":{\"notice\":\"Maximum metric definitions per service to bound validation gas\"},\"MAX_METRIC_NAME_LENGTH()\":{\"notice\":\"Add a custom metric definitionMaximum metric name length to bound hashing gas costs\"},\"MAX_PAGE_SIZE()\":{\"notice\":\"Maximum page size for paginated queries to bound gas usage\"},\"SLASH_ALERT_COOLDOWN()\":{\"notice\":\"Cooldown between successive critical heartbeat alerts per service/operator\"},\"addMetricDefinition(uint64,string,uint256,uint256,bool)\":{\"notice\":\"Add a custom metric definition\"},\"checkOperatorStatus(uint64,address)\":{\"notice\":\"Check and update operator status based on heartbeat timing\"},\"checkOperatorsStatus(uint64,address[])\":{\"notice\":\"Batch check multiple operators\"},\"configureHeartbeat(uint64,uint64,uint8)\":{\"notice\":\"Configure heartbeat settings for a service\"},\"decodeMetricPairs(bytes)\":{\"notice\":\"Decode metric pairs from ABI-encoded payload.\"},\"deregisterOperator(uint64,address)\":{\"notice\":\"Deregister an operator from a service instance\"},\"enableCustomMetrics(uint64,bool)\":{\"notice\":\"Enable custom metrics for a service\"},\"getAllOperatorCount(uint64)\":{\"notice\":\"Get the total count of tracked operators for a service\"},\"getHeartbeatConfig(uint64)\":{\"notice\":\"Get heartbeat config for a service\"},\"getLastCriticalHeartbeat(uint64,address)\":{\"notice\":\"Get the last critical heartbeat timestamp for an operator\"},\"getLastHeartbeat(uint64,address)\":{\"notice\":\"Get last heartbeat timestamp for an operator\"},\"getMetricDefinitions(uint64)\":{\"notice\":\"Get metric definitions for a service\"},\"getMetricValue(uint64,address,string)\":{\"notice\":\"Get a metric value for an operator\"},\"getOnlineOperatorCount(uint64)\":{\"notice\":\"Get online operator count\"},\"getOnlineOperators(uint64)\":{\"notice\":\"Get all online operators for a service\"},\"getOperatorState(uint64,address)\":{\"notice\":\"Get full operator state\"},\"getOperatorStatus(uint64,address)\":{\"notice\":\"Get operator status for a service\"},\"getSlashableOperators(uint64)\":{\"notice\":\"Get offline operators that should be slashed (convenience wrapper)\"},\"getSlashableOperatorsPaginated(uint64,uint256,uint256)\":{\"notice\":\"Paginated version of getSlashableOperators to prevent gas DoS\"},\"goOffline(uint64)\":{\"notice\":\"Operator voluntarily goes offline\"},\"goOnline(uint64)\":{\"notice\":\"Operator comes back online after voluntary offline period\"},\"heartbeatConfigs(uint64)\":{\"notice\":\"Heartbeat config per service: serviceId => config\"},\"isHeartbeatCurrent(uint64,address)\":{\"notice\":\"Check if operator has submitted heartbeat recently\"},\"isOnline(uint64,address)\":{\"notice\":\"Check if an operator is online for a service\"},\"isRegisteredOperator(uint64,address)\":{\"notice\":\"Check if an operator is registered for a service\"},\"metricValues(uint64,address,string)\":{\"notice\":\"Last reported metric values: serviceId => operator => metricName => value\"},\"metricsRecorder()\":{\"notice\":\"Metrics recorder for reward distribution\"},\"operatorStates(uint64,address)\":{\"notice\":\"Operator state per service: serviceId => operator => state\"},\"registerOperator(uint64,address)\":{\"notice\":\"Register an operator for a service instance\"},\"registerServiceOwner(uint64,address)\":{\"notice\":\"Register service owner\"},\"removeInactiveOperator(uint64,address)\":{\"notice\":\"Remove an operator from the _allOperators tracking set\"},\"reportForSlashing(uint64,address,string)\":{\"notice\":\"Report an operator for slashing (called by slashing oracle)\"},\"serviceMetrics(uint64,uint256)\":{\"notice\":\"Custom metrics per service: serviceId => metric definitions\"},\"serviceOwners(uint64)\":{\"notice\":\"Service owners who can configure heartbeat settings\"},\"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])\":{\"notice\":\"Batch set metric definitions for a service (replaces existing)\"},\"setMetricsRecorder(address)\":{\"notice\":\"Set metrics recorder address for reward tracking\"},\"setSlashingOracle(address)\":{\"notice\":\"Set slashing oracle address\"},\"slashingOracle()\":{\"notice\":\"Slashing callback interface\"},\"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)\":{\"notice\":\"Submit a heartbeat to prove operator is online (EIP-712 signed).\"},\"submitHeartbeatDirect(uint64,uint64,uint8,bytes)\":{\"notice\":\"Submit heartbeat without signature (for trusted contexts)\"},\"tangleCore()\":{\"notice\":\"Tangle core contract address for service validation\"},\"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)\":{\"notice\":\"Validate metrics against definitions and store valid ones.\"}},\"notice\":\"Tracks operator online/offline status via heartbeats\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/OperatorStatusRegistry.sol\":\"OperatorStatusRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/\",\":eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/\",\":forge-std/=dependencies/forge-std-1.9.4/src/\",\":hardhat/=dependencies/protocol-solidity/node_modules/hardhat/\",\":openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/\",\":openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/\",\":protocol-solidity/=dependencies/protocol-solidity/\"],\"viaIR\":true},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol\":{\"keccak256\":\"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0\",\"dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/interfaces/IMetricsRecorder.sol\":{\"keccak256\":\"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45\",\"dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk\"]},\"src/staking/OperatorStatusRegistry.sol\":{\"keccak256\":\"0xe30dff10b402ebd73d3eec2615e8521a74f230c2aed6f3c6677450d916f34319\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bd34041ad94af12fc408faf92763c86a611433c8f1051e44600aab45a7c74ec\",\"dweb:/ipfs/QmQZrKr7L9RGSwwnw68HhqMt4AVGXzhaqmuDXiXR8K4A6x\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_tangleCore","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatFromFuture"},{"inputs":[{"internalType":"uint64","name":"signed","type":"uint64"},{"internalType":"uint64","name":"now_","type":"uint64"}],"type":"error","name":"HeartbeatStale"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"interval","type":"uint64","indexed":false},{"internalType":"uint8","name":"maxMissed","type":"uint8","indexed":false}],"type":"event","name":"HeartbeatConfigUpdated","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"uint64","name":"blueprintId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"statusCode","type":"uint8","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"HeartbeatReceived","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"MetricReported","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"metricName","type":"string","indexed":false},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"MetricViolation","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorCameOnline","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorDeregistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"missedBeats","type":"uint8","indexed":false}],"type":"event","name":"OperatorWentOffline","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"string","name":"reason","type":"string","indexed":false}],"type":"event","name":"SlashingTriggered","anonymous":false},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"oldStatus","type":"uint8","indexed":false},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"newStatus","type":"uint8","indexed":false}],"type":"event","name":"StatusChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_HEARTBEAT_INTERVAL","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_MAX_MISSED_HEARTBEATS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_MAX_AGE","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"HEARTBEAT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_DEFINITIONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_METRIC_NAME_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PAGE_SIZE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SLASH_ALERT_COOLDOWN","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"addMetricDefinition"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address[]","name":"operators","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"checkOperatorsStatus"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"configureHeartbeat"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"stateMutability":"pure","type":"function","name":"decodeMetricPairs","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deregisterOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"enableCustomMetrics"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getAllOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getHeartbeatConfig","outputs":[{"internalType":"struct IOperatorStatusRegistry.HeartbeatConfig","name":"","type":"tuple","components":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastCriticalHeartbeat","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getLastHeartbeat","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getMetricDefinitions","outputs":[{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"metricName","type":"string"}],"stateMutability":"view","type":"function","name":"getMetricValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getOnlineOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorState","outputs":[{"internalType":"struct IOperatorStatusRegistry.OperatorState","name":"","type":"tuple","components":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getOperatorStatus","outputs":[{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"","type":"uint8"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getSlashableOperators","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSlashableOperatorsPaginated","outputs":[{"internalType":"address[]","name":"operators","type":"address[]"},{"internalType":"uint256","name":"total","type":"uint256"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOffline"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"goOnline"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"heartbeatConfigs","outputs":[{"internalType":"uint64","name":"interval","type":"uint64"},{"internalType":"uint8","name":"maxMissed","type":"uint8"},{"internalType":"bool","name":"customMetrics","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isHeartbeatCurrent","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOnline","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isRegisteredOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"metricValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"metricsRecorder","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"operatorStates","outputs":[{"internalType":"uint256","name":"lastHeartbeat","type":"uint256"},{"internalType":"uint64","name":"consecutiveBeats","type":"uint64"},{"internalType":"uint8","name":"missedBeats","type":"uint8"},{"internalType":"enum IOperatorStatusRegistry.StatusCode","name":"status","type":"uint8"},{"internalType":"bytes32","name":"lastMetricsHash","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"registerServiceOwner"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeInactiveOperator"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"string","name":"reason","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"reportForSlashing"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"serviceMetrics","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function","name":"serviceOwners","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"struct IOperatorStatusRegistry.MetricDefinition[]","name":"definitions","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"bool","name":"required","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"setMetricDefinitions"},{"inputs":[{"internalType":"address","name":"recorder","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMetricsRecorder"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setSlashingOracle"},{"inputs":[],"stateMutability":"view","type":"function","name":"slashingOracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeat"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"uint64","name":"blueprintId","type":"uint64"},{"internalType":"uint8","name":"statusCode","type":"uint8"},{"internalType":"bytes","name":"metrics","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitHeartbeatDirect"},{"inputs":[],"stateMutability":"view","type":"function","name":"tangleCore","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint64","name":"serviceId","type":"uint64"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"struct IOperatorStatusRegistry.MetricPair[]","name":"pairs","type":"tuple[]","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"value","type":"uint256"}]},{"internalType":"uint256","name":"pairsLen","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"validateAndStoreMetrics"}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"checkOperatorStatus(uint64,address)":{"details":"Should be called periodically (e.g., by keepers or during other operations)"},"configureHeartbeat(uint64,uint64,uint8)":{"params":{"interval":"Heartbeat interval in seconds","maxMissed":"Max missed heartbeats before offline","serviceId":"The service ID"}},"decodeMetricPairs(bytes)":{"details":"External + try/catch wrapper target so malformed payloads don't brick heartbeats."},"deregisterOperator(uint64,address)":{"details":"Only callable by Tangle core. Does not clear operator state so historical data (last heartbeat, metrics) remains queryable."},"getSlashableOperators(uint64)":{"params":{"serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators (capped at MAX_PAGE_SIZE)"}},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"params":{"limit":"Max results per page (capped at MAX_PAGE_SIZE)","offset":"Starting index","serviceId":"The service ID"},"returns":{"operators":"Array of slashable operators in this page","total":"Total operators in the set (for pagination)"}},"goOffline(uint64)":{"details":"Sets status to Exiting but does NOT exempt from slashing — operators remain slashable until properly deregistered through the service lifecycle.","params":{"serviceId":"The service ID"}},"goOnline(uint64)":{"details":"Must submit a heartbeat after coming online to be marked Healthy","params":{"serviceId":"The service ID"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"registerOperator(uint64,address)":{"details":"Only callable by Tangle core — operator assignment is determined by the service lifecycle (request → approve → activate), not by service owners."},"registerServiceOwner(uint64,address)":{"details":"Only callable by the Tangle core contract"},"removeInactiveOperator(uint64,address)":{"details":"Only callable by service owner or contract owner. Operator must be Slashed or have been offline beyond 10x the heartbeat threshold to prevent premature removal."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"details":"Signature is over the EIP-712 typed struct `Heartbeat` defined above. The `timestamp` field bounds the freshness so replays of stale \"healthy\" heartbeats cannot mask an offline operator. The domain separator includes `chainId` and `address(this)` so signatures cannot replay across forks or deployments."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"details":"Can only be called by registered operators"},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner. Setting `newOwner` to the zero address is allowed; this can be used to cancel an initiated ownership transfer."},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"details":"External so it can be called via try/catch from _processMetrics. Must only be called from _processMetrics (not user-facing despite being external)."}},"version":1},"userdoc":{"kind":"user","methods":{"DEFAULT_HEARTBEAT_INTERVAL()":{"notice":"Default heartbeat interval (5 minutes)"},"DEFAULT_MAX_MISSED_HEARTBEATS()":{"notice":"Default max missed heartbeats before offline"},"DOMAIN_SEPARATOR()":{"notice":"Domain separator for EIP-712 signatures (kept for backwards compatibility)"},"HEARTBEAT_MAX_AGE()":{"notice":"Maximum staleness for a heartbeat signature."},"HEARTBEAT_TYPEHASH()":{"notice":"EIP-712 typehash for `Heartbeat`. Binds operator + service + blueprint + status + metrics + timestamp; the domain separator binds it to chainId + verifying contract. Closes cross-fork / cross-service / replay surface."},"MAX_METRIC_DEFINITIONS()":{"notice":"Maximum metric definitions per service to bound validation gas"},"MAX_METRIC_NAME_LENGTH()":{"notice":"Add a custom metric definitionMaximum metric name length to bound hashing gas costs"},"MAX_PAGE_SIZE()":{"notice":"Maximum page size for paginated queries to bound gas usage"},"SLASH_ALERT_COOLDOWN()":{"notice":"Cooldown between successive critical heartbeat alerts per service/operator"},"addMetricDefinition(uint64,string,uint256,uint256,bool)":{"notice":"Add a custom metric definition"},"checkOperatorStatus(uint64,address)":{"notice":"Check and update operator status based on heartbeat timing"},"checkOperatorsStatus(uint64,address[])":{"notice":"Batch check multiple operators"},"configureHeartbeat(uint64,uint64,uint8)":{"notice":"Configure heartbeat settings for a service"},"decodeMetricPairs(bytes)":{"notice":"Decode metric pairs from ABI-encoded payload."},"deregisterOperator(uint64,address)":{"notice":"Deregister an operator from a service instance"},"enableCustomMetrics(uint64,bool)":{"notice":"Enable custom metrics for a service"},"getAllOperatorCount(uint64)":{"notice":"Get the total count of tracked operators for a service"},"getHeartbeatConfig(uint64)":{"notice":"Get heartbeat config for a service"},"getLastCriticalHeartbeat(uint64,address)":{"notice":"Get the last critical heartbeat timestamp for an operator"},"getLastHeartbeat(uint64,address)":{"notice":"Get last heartbeat timestamp for an operator"},"getMetricDefinitions(uint64)":{"notice":"Get metric definitions for a service"},"getMetricValue(uint64,address,string)":{"notice":"Get a metric value for an operator"},"getOnlineOperatorCount(uint64)":{"notice":"Get online operator count"},"getOnlineOperators(uint64)":{"notice":"Get all online operators for a service"},"getOperatorState(uint64,address)":{"notice":"Get full operator state"},"getOperatorStatus(uint64,address)":{"notice":"Get operator status for a service"},"getSlashableOperators(uint64)":{"notice":"Get offline operators that should be slashed (convenience wrapper)"},"getSlashableOperatorsPaginated(uint64,uint256,uint256)":{"notice":"Paginated version of getSlashableOperators to prevent gas DoS"},"goOffline(uint64)":{"notice":"Operator voluntarily goes offline"},"goOnline(uint64)":{"notice":"Operator comes back online after voluntary offline period"},"heartbeatConfigs(uint64)":{"notice":"Heartbeat config per service: serviceId => config"},"isHeartbeatCurrent(uint64,address)":{"notice":"Check if operator has submitted heartbeat recently"},"isOnline(uint64,address)":{"notice":"Check if an operator is online for a service"},"isRegisteredOperator(uint64,address)":{"notice":"Check if an operator is registered for a service"},"metricValues(uint64,address,string)":{"notice":"Last reported metric values: serviceId => operator => metricName => value"},"metricsRecorder()":{"notice":"Metrics recorder for reward distribution"},"operatorStates(uint64,address)":{"notice":"Operator state per service: serviceId => operator => state"},"registerOperator(uint64,address)":{"notice":"Register an operator for a service instance"},"registerServiceOwner(uint64,address)":{"notice":"Register service owner"},"removeInactiveOperator(uint64,address)":{"notice":"Remove an operator from the _allOperators tracking set"},"reportForSlashing(uint64,address,string)":{"notice":"Report an operator for slashing (called by slashing oracle)"},"serviceMetrics(uint64,uint256)":{"notice":"Custom metrics per service: serviceId => metric definitions"},"serviceOwners(uint64)":{"notice":"Service owners who can configure heartbeat settings"},"setMetricDefinitions(uint64,(string,uint256,uint256,bool)[])":{"notice":"Batch set metric definitions for a service (replaces existing)"},"setMetricsRecorder(address)":{"notice":"Set metrics recorder address for reward tracking"},"setSlashingOracle(address)":{"notice":"Set slashing oracle address"},"slashingOracle()":{"notice":"Slashing callback interface"},"submitHeartbeat(uint64,uint64,uint8,bytes,uint64,bytes)":{"notice":"Submit a heartbeat to prove operator is online (EIP-712 signed)."},"submitHeartbeatDirect(uint64,uint64,uint8,bytes)":{"notice":"Submit heartbeat without signature (for trusted contexts)"},"tangleCore()":{"notice":"Tangle core contract address for service validation"},"validateAndStoreMetrics(uint64,address,(string,uint256)[],uint256)":{"notice":"Validate metrics against definitions and store valid ones."}},"version":1}},"settings":{"remappings":["@ensdomains/=dependencies/protocol-solidity/node_modules/@ensdomains/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","@webb-tools/=dependencies/protocol-solidity/node_modules/@webb-tools/","eth-gas-reporter/=dependencies/protocol-solidity/node_modules/eth-gas-reporter/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/src/","forge-std/=dependencies/forge-std-1.9.4/src/","hardhat/=dependencies/protocol-solidity/node_modules/hardhat/","openzeppelin-contracts-4.9.6/=dependencies/openzeppelin-contracts-4.9.6/","openzeppelin/=dependencies/openzeppelin-contracts-4.9.6/contracts/","protocol-solidity/=dependencies/protocol-solidity/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/staking/OperatorStatusRegistry.sol":"OperatorStatusRegistry"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/access/Ownable2Step.sol":{"keccak256":"0xdcad8898fda432696597752e8ec361b87d85c82cb258115427af006dacf7128c","urls":["bzz-raw://e2c9d517f0c136d54bd00cd57959d25681d4d6273f5bbbc263afe228303772f0","dweb:/ipfs/QmReNFjXBiufByiAAzfSQ2SM5r3qeUErn46BmN3yVRvrek"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/interfaces/IMetricsRecorder.sol":{"keccak256":"0x4936a66e1f3f82253c2881ac1262f23e5a8da6b67722bda2a9f572df8f17dd09","urls":["bzz-raw://72f63ddb4efeb4a16f97a7d1a0c408126c5c86b18f3e4bdd5575d24cf1f27e45","dweb:/ipfs/QmT2fvs5p4r6RjCowx1aysm7Jq6rytWaumwMR7NsD4WrAk"],"license":"MIT"},"src/staking/OperatorStatusRegistry.sol":{"keccak256":"0xe30dff10b402ebd73d3eec2615e8521a74f230c2aed6f3c6677450d916f34319","urls":["bzz-raw://1bd34041ad94af12fc408faf92763c86a611433c8f1051e44600aab45a7c74ec","dweb:/ipfs/QmQZrKr7L9RGSwwnw68HhqMt4AVGXzhaqmuDXiXR8K4A6x"],"license":"MIT"}},"version":1},"id":98} \ No newline at end of file diff --git a/bindings/src/bindings/i_tangle_full.rs b/bindings/src/bindings/i_tangle_full.rs index 98d2697d..63e1d16b 100644 --- a/bindings/src/bindings/i_tangle_full.rs +++ b/bindings/src/bindings/i_tangle_full.rs @@ -12639,8 +12639,11 @@ interface ITangleFull { event ServiceRequestedWithSecurity(uint64 indexed requestId, uint64 indexed blueprintId, address indexed requester, Types.ConfidentialityPolicy confidentiality); event ServiceTerminated(uint64 indexed serviceId); event ServiceTerminatedForNonPayment(uint64 indexed serviceId, address indexed triggeredBy, uint64 dueAt, uint64 graceEndsAt, uint256 requiredAmount, uint256 escrowBalance); - event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 amount); - event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 slashBps, bytes32 evidence); + event SlashCancelled(uint64 indexed slashId, address indexed canceller, string reason); + event SlashConfigUpdated(uint64 disputeWindow, bool instantSlashEnabled, uint16 maxSlashBps, uint64 disputeResolutionDeadline, uint256 disputeBond, uint16 maxPendingSlashesPerOperator); + event SlashDisputed(uint64 indexed slashId, address indexed disputer, string reason); + event SlashExecuted(uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, uint256 actualSlashed); + event SlashProposed(uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, address proposer, uint16 slashBps, uint16 effectiveSlashBps, bytes32 evidence, uint64 executeAfter); event SubscriptionBilled(uint64 indexed serviceId, uint256 amount, uint64 period); function addPermittedCaller(uint64 serviceId, address caller) external; @@ -17730,10 +17733,109 @@ interface ITangleFull { ], "anonymous": false }, + { + "type": "event", + "name": "SlashCancelled", + "inputs": [ + { + "name": "slashId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "canceller", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "reason", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SlashConfigUpdated", + "inputs": [ + { + "name": "disputeWindow", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "instantSlashEnabled", + "type": "bool", + "indexed": false, + "internalType": "bool" + }, + { + "name": "maxSlashBps", + "type": "uint16", + "indexed": false, + "internalType": "uint16" + }, + { + "name": "disputeResolutionDeadline", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "disputeBond", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "maxPendingSlashesPerOperator", + "type": "uint16", + "indexed": false, + "internalType": "uint16" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SlashDisputed", + "inputs": [ + { + "name": "slashId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "disputer", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "reason", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, { "type": "event", "name": "SlashExecuted", "inputs": [ + { + "name": "slashId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, { "name": "serviceId", "type": "uint64", @@ -17747,7 +17849,7 @@ interface ITangleFull { "internalType": "address" }, { - "name": "amount", + "name": "actualSlashed", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -17759,6 +17861,12 @@ interface ITangleFull { "type": "event", "name": "SlashProposed", "inputs": [ + { + "name": "slashId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, { "name": "serviceId", "type": "uint64", @@ -17771,17 +17879,35 @@ interface ITangleFull { "indexed": true, "internalType": "address" }, + { + "name": "proposer", + "type": "address", + "indexed": false, + "internalType": "address" + }, { "name": "slashBps", "type": "uint16", "indexed": false, "internalType": "uint16" }, + { + "name": "effectiveSlashBps", + "type": "uint16", + "indexed": false, + "internalType": "uint16" + }, { "name": "evidence", "type": "bytes32", "indexed": false, "internalType": "bytes32" + }, + { + "name": "executeAfter", + "type": "uint64", + "indexed": false, + "internalType": "uint64" } ], "anonymous": false @@ -21012,9 +21138,411 @@ event ServiceTerminatedForNonPayment(uint64 indexed serviceId, address indexed t }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Event with signature `SlashExecuted(uint64,address,uint256)` and selector `0x26c5c426df452d68e3b3d27c7b069a62cd268ad9e1cd55c9c9f239320890de23`. + /**Event with signature `SlashCancelled(uint64,address,string)` and selector `0xe80d1a183af30916f79b15a6c85e82470d0b88065dfdd2505d106adf0e8b7796`. +```solidity +event SlashCancelled(uint64 indexed slashId, address indexed canceller, string reason); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct SlashCancelled { + #[allow(missing_docs)] + pub slashId: u64, + #[allow(missing_docs)] + pub canceller: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub reason: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SlashCancelled { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "SlashCancelled(uint64,address,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 232u8, 13u8, 26u8, 24u8, 58u8, 243u8, 9u8, 22u8, 247u8, 155u8, 21u8, + 166u8, 200u8, 94u8, 130u8, 71u8, 13u8, 11u8, 136u8, 6u8, 93u8, 253u8, + 210u8, 80u8, 93u8, 16u8, 106u8, 223u8, 14u8, 139u8, 119u8, 150u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + slashId: topics.1, + canceller: topics.2, + reason: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.reason, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.slashId.clone(), + self.canceller.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.slashId); + out[2usize] = ::encode_topic( + &self.canceller, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SlashCancelled { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SlashCancelled> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SlashCancelled) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Event with signature `SlashConfigUpdated(uint64,bool,uint16,uint64,uint256,uint16)` and selector `0x384196fec3c27f832a18e6131847b590d155ee4eac26299a7e94026a0416b37b`. +```solidity +event SlashConfigUpdated(uint64 disputeWindow, bool instantSlashEnabled, uint16 maxSlashBps, uint64 disputeResolutionDeadline, uint256 disputeBond, uint16 maxPendingSlashesPerOperator); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct SlashConfigUpdated { + #[allow(missing_docs)] + pub disputeWindow: u64, + #[allow(missing_docs)] + pub instantSlashEnabled: bool, + #[allow(missing_docs)] + pub maxSlashBps: u16, + #[allow(missing_docs)] + pub disputeResolutionDeadline: u64, + #[allow(missing_docs)] + pub disputeBond: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxPendingSlashesPerOperator: u16, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SlashConfigUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Uint<16>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<16>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "SlashConfigUpdated(uint64,bool,uint16,uint64,uint256,uint16)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 56u8, 65u8, 150u8, 254u8, 195u8, 194u8, 127u8, 131u8, 42u8, 24u8, 230u8, + 19u8, 24u8, 71u8, 181u8, 144u8, 209u8, 85u8, 238u8, 78u8, 172u8, 38u8, + 41u8, 154u8, 126u8, 148u8, 2u8, 106u8, 4u8, 22u8, 179u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + disputeWindow: data.0, + instantSlashEnabled: data.1, + maxSlashBps: data.2, + disputeResolutionDeadline: data.3, + disputeBond: data.4, + maxPendingSlashesPerOperator: data.5, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.disputeWindow), + ::tokenize( + &self.instantSlashEnabled, + ), + as alloy_sol_types::SolType>::tokenize(&self.maxSlashBps), + as alloy_sol_types::SolType>::tokenize( + &self.disputeResolutionDeadline, + ), + as alloy_sol_types::SolType>::tokenize(&self.disputeBond), + as alloy_sol_types::SolType>::tokenize( + &self.maxPendingSlashesPerOperator, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SlashConfigUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SlashConfigUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SlashConfigUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Event with signature `SlashDisputed(uint64,address,string)` and selector `0x0d4418cc07b1c81f56e2d1277f5d11c1b27ebac6cdacafccecd4add6742b4b0f`. +```solidity +event SlashDisputed(uint64 indexed slashId, address indexed disputer, string reason); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct SlashDisputed { + #[allow(missing_docs)] + pub slashId: u64, + #[allow(missing_docs)] + pub disputer: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub reason: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SlashDisputed { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "SlashDisputed(uint64,address,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 13u8, 68u8, 24u8, 204u8, 7u8, 177u8, 200u8, 31u8, 86u8, 226u8, 209u8, + 39u8, 127u8, 93u8, 17u8, 193u8, 178u8, 126u8, 186u8, 198u8, 205u8, 172u8, + 175u8, 204u8, 236u8, 212u8, 173u8, 214u8, 116u8, 43u8, 75u8, 15u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + slashId: topics.1, + disputer: topics.2, + reason: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.reason, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.slashId.clone(), + self.disputer.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.slashId); + out[2usize] = ::encode_topic( + &self.disputer, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SlashDisputed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SlashDisputed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SlashDisputed) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Event with signature `SlashExecuted(uint64,uint64,address,uint256)` and selector `0x4a816e132712dbdfe6a363965e5bc68f8e283b999ae11afe294a3162973c3855`. ```solidity -event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 amount); +event SlashExecuted(uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, uint256 actualSlashed); ```*/ #[allow( non_camel_case_types, @@ -21024,12 +21552,14 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 )] #[derive(Clone)] pub struct SlashExecuted { + #[allow(missing_docs)] + pub slashId: u64, #[allow(missing_docs)] pub serviceId: u64, #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub actualSlashed: alloy::sol_types::private::primitives::aliases::U256, } #[allow( non_camel_case_types, @@ -21048,13 +21578,14 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 type TopicList = ( alloy_sol_types::sol_data::FixedBytes<32>, alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, alloy::sol_types::sol_data::Address, ); - const SIGNATURE: &'static str = "SlashExecuted(uint64,address,uint256)"; + const SIGNATURE: &'static str = "SlashExecuted(uint64,uint64,address,uint256)"; const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ - 38u8, 197u8, 196u8, 38u8, 223u8, 69u8, 45u8, 104u8, 227u8, 179u8, 210u8, - 124u8, 123u8, 6u8, 154u8, 98u8, 205u8, 38u8, 138u8, 217u8, 225u8, 205u8, - 85u8, 201u8, 201u8, 242u8, 57u8, 50u8, 8u8, 144u8, 222u8, 35u8, + 74u8, 129u8, 110u8, 19u8, 39u8, 18u8, 219u8, 223u8, 230u8, 163u8, 99u8, + 150u8, 94u8, 91u8, 198u8, 143u8, 142u8, 40u8, 59u8, 153u8, 154u8, 225u8, + 26u8, 254u8, 41u8, 74u8, 49u8, 98u8, 151u8, 60u8, 56u8, 85u8, ]); const ANONYMOUS: bool = false; #[allow(unused_variables)] @@ -21064,9 +21595,10 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - serviceId: topics.1, - operator: topics.2, - amount: data.0, + slashId: topics.1, + serviceId: topics.2, + operator: topics.3, + actualSlashed: data.0, } } #[inline] @@ -21089,13 +21621,14 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 ( as alloy_sol_types::SolType>::tokenize(&self.amount), + > as alloy_sol_types::SolType>::tokenize(&self.actualSlashed), ) } #[inline] fn topics(&self) -> ::RustType { ( Self::SIGNATURE_HASH.into(), + self.slashId.clone(), self.serviceId.clone(), self.operator.clone(), ) @@ -21113,8 +21646,11 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 ); out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.slashId); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.serviceId); - out[2usize] = ::encode_topic( + out[3usize] = ::encode_topic( &self.operator, ); Ok(()) @@ -21139,9 +21675,9 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Event with signature `SlashProposed(uint64,address,uint16,bytes32)` and selector `0x0f9eb929e655f6ca1293bbddbade0ebf2c4b209d4454d5399825561892404962`. + /**Event with signature `SlashProposed(uint64,uint64,address,address,uint16,uint16,bytes32,uint64)` and selector `0xea15712b428139839309538b7a37df5b88a90b4d776dbf7aa14d95c28304b9fc`. ```solidity -event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 slashBps, bytes32 evidence); +event SlashProposed(uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, address proposer, uint16 slashBps, uint16 effectiveSlashBps, bytes32 evidence, uint64 executeAfter); ```*/ #[allow( non_camel_case_types, @@ -21151,14 +21687,22 @@ event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 s )] #[derive(Clone)] pub struct SlashProposed { + #[allow(missing_docs)] + pub slashId: u64, #[allow(missing_docs)] pub serviceId: u64, #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, #[allow(missing_docs)] + pub proposer: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub slashBps: u16, #[allow(missing_docs)] + pub effectiveSlashBps: u16, + #[allow(missing_docs)] pub evidence: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub executeAfter: u64, } #[allow( non_camel_case_types, @@ -21171,8 +21715,11 @@ event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 s #[automatically_derived] impl alloy_sol_types::SolEvent for SlashProposed { type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<16>, alloy::sol_types::sol_data::Uint<16>, alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, ); type DataToken<'a> = , alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, alloy::sol_types::sol_data::Address, ); - const SIGNATURE: &'static str = "SlashProposed(uint64,address,uint16,bytes32)"; + const SIGNATURE: &'static str = "SlashProposed(uint64,uint64,address,address,uint16,uint16,bytes32,uint64)"; const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ - 15u8, 158u8, 185u8, 41u8, 230u8, 85u8, 246u8, 202u8, 18u8, 147u8, 187u8, - 221u8, 186u8, 222u8, 14u8, 191u8, 44u8, 75u8, 32u8, 157u8, 68u8, 84u8, - 213u8, 57u8, 152u8, 37u8, 86u8, 24u8, 146u8, 64u8, 73u8, 98u8, + 234u8, 21u8, 113u8, 43u8, 66u8, 129u8, 57u8, 131u8, 147u8, 9u8, 83u8, + 139u8, 122u8, 55u8, 223u8, 91u8, 136u8, 169u8, 11u8, 77u8, 119u8, 109u8, + 191u8, 122u8, 161u8, 77u8, 149u8, 194u8, 131u8, 4u8, 185u8, 252u8, ]); const ANONYMOUS: bool = false; #[allow(unused_variables)] @@ -21196,10 +21744,14 @@ event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 s data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - serviceId: topics.1, - operator: topics.2, - slashBps: data.0, - evidence: data.1, + slashId: topics.1, + serviceId: topics.2, + operator: topics.3, + proposer: data.0, + slashBps: data.1, + effectiveSlashBps: data.2, + evidence: data.3, + executeAfter: data.4, } } #[inline] @@ -21220,18 +21772,28 @@ event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 s #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( + ::tokenize( + &self.proposer, + ), as alloy_sol_types::SolType>::tokenize(&self.slashBps), + as alloy_sol_types::SolType>::tokenize(&self.effectiveSlashBps), as alloy_sol_types::SolType>::tokenize(&self.evidence), + as alloy_sol_types::SolType>::tokenize(&self.executeAfter), ) } #[inline] fn topics(&self) -> ::RustType { ( Self::SIGNATURE_HASH.into(), + self.slashId.clone(), self.serviceId.clone(), self.operator.clone(), ) @@ -21249,8 +21811,11 @@ event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 s ); out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.slashId); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.serviceId); - out[2usize] = ::encode_topic( + out[3usize] = ::encode_topic( &self.operator, ); Ok(()) @@ -47202,6 +47767,12 @@ function withdrawRemainingEscrow(uint64 serviceId) external; #[allow(missing_docs)] ServiceTerminatedForNonPayment(ServiceTerminatedForNonPayment), #[allow(missing_docs)] + SlashCancelled(SlashCancelled), + #[allow(missing_docs)] + SlashConfigUpdated(SlashConfigUpdated), + #[allow(missing_docs)] + SlashDisputed(SlashDisputed), + #[allow(missing_docs)] SlashExecuted(SlashExecuted), #[allow(missing_docs)] SlashProposed(SlashProposed), @@ -47227,9 +47798,9 @@ function withdrawRemainingEscrow(uint64 serviceId) external; 44u8, 141u8, 94u8, 152u8, 92u8, 153u8, 228u8, 16u8, 65u8, 2u8, ], [ - 15u8, 158u8, 185u8, 41u8, 230u8, 85u8, 246u8, 202u8, 18u8, 147u8, 187u8, - 221u8, 186u8, 222u8, 14u8, 191u8, 44u8, 75u8, 32u8, 157u8, 68u8, 84u8, - 213u8, 57u8, 152u8, 37u8, 86u8, 24u8, 146u8, 64u8, 73u8, 98u8, + 13u8, 68u8, 24u8, 204u8, 7u8, 177u8, 200u8, 31u8, 86u8, 226u8, 209u8, + 39u8, 127u8, 93u8, 17u8, 193u8, 178u8, 126u8, 186u8, 198u8, 205u8, 172u8, + 175u8, 204u8, 236u8, 212u8, 173u8, 214u8, 116u8, 43u8, 75u8, 15u8, ], [ 23u8, 127u8, 73u8, 60u8, 189u8, 97u8, 238u8, 174u8, 90u8, 12u8, 2u8, @@ -47246,21 +47817,26 @@ function withdrawRemainingEscrow(uint64 serviceId) external; 193u8, 3u8, 129u8, 216u8, 217u8, 230u8, 108u8, 86u8, 221u8, 111u8, 186u8, 153u8, 49u8, 183u8, 3u8, 202u8, 22u8, 149u8, 17u8, 119u8, 138u8, ], - [ - 38u8, 197u8, 196u8, 38u8, 223u8, 69u8, 45u8, 104u8, 227u8, 179u8, 210u8, - 124u8, 123u8, 6u8, 154u8, 98u8, 205u8, 38u8, 138u8, 217u8, 225u8, 205u8, - 85u8, 201u8, 201u8, 242u8, 57u8, 50u8, 8u8, 144u8, 222u8, 35u8, - ], [ 42u8, 99u8, 234u8, 229u8, 119u8, 137u8, 163u8, 65u8, 52u8, 211u8, 225u8, 228u8, 203u8, 64u8, 170u8, 77u8, 21u8, 74u8, 44u8, 107u8, 53u8, 181u8, 42u8, 147u8, 141u8, 104u8, 51u8, 222u8, 149u8, 20u8, 173u8, 52u8, ], + [ + 56u8, 65u8, 150u8, 254u8, 195u8, 194u8, 127u8, 131u8, 42u8, 24u8, 230u8, + 19u8, 24u8, 71u8, 181u8, 144u8, 209u8, 85u8, 238u8, 78u8, 172u8, 38u8, + 41u8, 154u8, 126u8, 148u8, 2u8, 106u8, 4u8, 22u8, 179u8, 123u8, + ], [ 63u8, 213u8, 88u8, 165u8, 155u8, 188u8, 225u8, 217u8, 150u8, 209u8, 126u8, 171u8, 127u8, 222u8, 49u8, 75u8, 205u8, 32u8, 30u8, 195u8, 241u8, 115u8, 117u8, 167u8, 248u8, 115u8, 179u8, 22u8, 41u8, 39u8, 232u8, 129u8, ], + [ + 74u8, 129u8, 110u8, 19u8, 39u8, 18u8, 219u8, 223u8, 230u8, 163u8, 99u8, + 150u8, 94u8, 91u8, 198u8, 143u8, 142u8, 40u8, 59u8, 153u8, 154u8, 225u8, + 26u8, 254u8, 41u8, 74u8, 49u8, 98u8, 151u8, 60u8, 56u8, 85u8, + ], [ 92u8, 146u8, 48u8, 28u8, 34u8, 223u8, 76u8, 199u8, 32u8, 154u8, 139u8, 11u8, 37u8, 178u8, 245u8, 120u8, 119u8, 80u8, 35u8, 126u8, 17u8, 14u8, @@ -47346,6 +47922,16 @@ function withdrawRemainingEscrow(uint64 serviceId) external; 221u8, 168u8, 239u8, 144u8, 97u8, 105u8, 153u8, 4u8, 91u8, 222u8, 42u8, 51u8, 227u8, 145u8, 167u8, 181u8, 174u8, 101u8, 137u8, 231u8, 137u8, ], + [ + 232u8, 13u8, 26u8, 24u8, 58u8, 243u8, 9u8, 22u8, 247u8, 155u8, 21u8, + 166u8, 200u8, 94u8, 130u8, 71u8, 13u8, 11u8, 136u8, 6u8, 93u8, 253u8, + 210u8, 80u8, 93u8, 16u8, 106u8, 223u8, 14u8, 139u8, 119u8, 150u8, + ], + [ + 234u8, 21u8, 113u8, 43u8, 66u8, 129u8, 57u8, 131u8, 147u8, 9u8, 83u8, + 139u8, 122u8, 55u8, 223u8, 91u8, 136u8, 169u8, 11u8, 77u8, 119u8, 109u8, + 191u8, 122u8, 161u8, 77u8, 149u8, 194u8, 131u8, 4u8, 185u8, 252u8, + ], [ 244u8, 85u8, 116u8, 247u8, 119u8, 29u8, 153u8, 124u8, 174u8, 23u8, 5u8, 53u8, 254u8, 222u8, 105u8, 17u8, 201u8, 132u8, 185u8, 35u8, 140u8, 193u8, @@ -47356,13 +47942,14 @@ function withdrawRemainingEscrow(uint64 serviceId) external; pub const VARIANT_NAMES: &'static [&'static str] = &[ ::core::stringify!(ServiceActivated), ::core::stringify!(OperatorRegistered), - ::core::stringify!(SlashProposed), + ::core::stringify!(SlashDisputed), ::core::stringify!(ServiceTerminatedForNonPayment), ::core::stringify!(OperatorJoinedService), ::core::stringify!(SubscriptionBilled), - ::core::stringify!(SlashExecuted), ::core::stringify!(BlueprintUpdated), + ::core::stringify!(SlashConfigUpdated), ::core::stringify!(ServiceTerminated), + ::core::stringify!(SlashExecuted), ::core::stringify!(ServiceRequested), ::core::stringify!(JobCompleted), ::core::stringify!(BlueprintCreated), @@ -47380,19 +47967,22 @@ function withdrawRemainingEscrow(uint64 serviceId) external; ::core::stringify!(BlueprintTransferred), ::core::stringify!(JobSubmitted), ::core::stringify!(BlueprintDeactivated), + ::core::stringify!(SlashCancelled), + ::core::stringify!(SlashProposed), ::core::stringify!(ServiceRequestedWithSecurity), ]; /// The signatures in the same order as `SELECTORS`. pub const SIGNATURES: &'static [&'static str] = &[ ::SIGNATURE, ::SIGNATURE, - ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, - ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -47410,6 +48000,8 @@ function withdrawRemainingEscrow(uint64 serviceId) external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ]; /// Returns the signature for the given selector, if known. @@ -47436,7 +48028,7 @@ function withdrawRemainingEscrow(uint64 serviceId) external; #[automatically_derived] impl alloy_sol_types::SolEventInterface for ITangleFullEvents { const NAME: &'static str = "ITangleFullEvents"; - const COUNT: usize = 27usize; + const COUNT: usize = 30usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -47640,6 +48232,29 @@ function withdrawRemainingEscrow(uint64 serviceId) external; ) .map(Self::ServiceTerminatedForNonPayment) } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + ) + .map(Self::SlashCancelled) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + ) + .map(Self::SlashConfigUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + ) + .map(Self::SlashDisputed) + } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, @@ -47753,6 +48368,15 @@ function withdrawRemainingEscrow(uint64 serviceId) external; Self::ServiceTerminatedForNonPayment(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } + Self::SlashCancelled(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::SlashConfigUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::SlashDisputed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } Self::SlashExecuted(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } @@ -47838,6 +48462,15 @@ function withdrawRemainingEscrow(uint64 serviceId) external; Self::ServiceTerminatedForNonPayment(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } + Self::SlashCancelled(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::SlashConfigUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::SlashDisputed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::SlashExecuted(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -49558,6 +50191,24 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ) -> alloy_contract::Event<&P, ServiceTerminatedForNonPayment, N> { self.event_filter::() } + ///Creates a new event filter for the [`SlashCancelled`] event. + pub fn SlashCancelled_filter( + &self, + ) -> alloy_contract::Event<&P, SlashCancelled, N> { + self.event_filter::() + } + ///Creates a new event filter for the [`SlashConfigUpdated`] event. + pub fn SlashConfigUpdated_filter( + &self, + ) -> alloy_contract::Event<&P, SlashConfigUpdated, N> { + self.event_filter::() + } + ///Creates a new event filter for the [`SlashDisputed`] event. + pub fn SlashDisputed_filter( + &self, + ) -> alloy_contract::Event<&P, SlashDisputed, N> { + self.event_filter::() + } ///Creates a new event filter for the [`SlashExecuted`] event. pub fn SlashExecuted_filter( &self, diff --git a/bindings/src/bindings/i_tangle_slashing.rs b/bindings/src/bindings/i_tangle_slashing.rs index b6940782..0d6418d7 100644 --- a/bindings/src/bindings/i_tangle_slashing.rs +++ b/bindings/src/bindings/i_tangle_slashing.rs @@ -1143,8 +1143,11 @@ library SlashingLib { } interface ITangleSlashing { - event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 amount); - event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 slashBps, bytes32 evidence); + event SlashCancelled(uint64 indexed slashId, address indexed canceller, string reason); + event SlashConfigUpdated(uint64 disputeWindow, bool instantSlashEnabled, uint16 maxSlashBps, uint64 disputeResolutionDeadline, uint256 disputeBond, uint16 maxPendingSlashesPerOperator); + event SlashDisputed(uint64 indexed slashId, address indexed disputer, string reason); + event SlashExecuted(uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, uint256 actualSlashed); + event SlashProposed(uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, address proposer, uint16 slashBps, uint16 effectiveSlashBps, bytes32 evidence, uint64 executeAfter); function cancelSlash(uint64 slashId, string memory reason) external; function disputeSlash(uint64 slashId, string memory reason) external payable; @@ -1472,10 +1475,109 @@ interface ITangleSlashing { "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "event", + "name": "SlashCancelled", + "inputs": [ + { + "name": "slashId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "canceller", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "reason", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SlashConfigUpdated", + "inputs": [ + { + "name": "disputeWindow", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "instantSlashEnabled", + "type": "bool", + "indexed": false, + "internalType": "bool" + }, + { + "name": "maxSlashBps", + "type": "uint16", + "indexed": false, + "internalType": "uint16" + }, + { + "name": "disputeResolutionDeadline", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + }, + { + "name": "disputeBond", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "maxPendingSlashesPerOperator", + "type": "uint16", + "indexed": false, + "internalType": "uint16" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SlashDisputed", + "inputs": [ + { + "name": "slashId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, + { + "name": "disputer", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "reason", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, { "type": "event", "name": "SlashExecuted", "inputs": [ + { + "name": "slashId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, { "name": "serviceId", "type": "uint64", @@ -1489,7 +1591,7 @@ interface ITangleSlashing { "internalType": "address" }, { - "name": "amount", + "name": "actualSlashed", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -1501,6 +1603,12 @@ interface ITangleSlashing { "type": "event", "name": "SlashProposed", "inputs": [ + { + "name": "slashId", + "type": "uint64", + "indexed": true, + "internalType": "uint64" + }, { "name": "serviceId", "type": "uint64", @@ -1513,58 +1621,478 @@ interface ITangleSlashing { "indexed": true, "internalType": "address" }, + { + "name": "proposer", + "type": "address", + "indexed": false, + "internalType": "address" + }, { "name": "slashBps", "type": "uint16", "indexed": false, "internalType": "uint16" }, + { + "name": "effectiveSlashBps", + "type": "uint16", + "indexed": false, + "internalType": "uint16" + }, { "name": "evidence", "type": "bytes32", "indexed": false, "internalType": "bytes32" + }, + { + "name": "executeAfter", + "type": "uint64", + "indexed": false, + "internalType": "uint64" } ], "anonymous": false } ] ```*/ -#[allow( - non_camel_case_types, - non_snake_case, - clippy::pub_underscore_fields, - clippy::style, - clippy::empty_structs_with_brackets -)] -pub mod ITangleSlashing { - use super::*; - use alloy::sol_types as alloy_sol_types; - /// The creation / init bytecode of the contract. - /// - /// ```text - ///0x - /// ``` - #[rustfmt::skip] - #[allow(clippy::all)] - pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"", - ); - /// The runtime bytecode of the contract, as deployed on the network. - /// - /// ```text - ///0x - /// ``` - #[rustfmt::skip] - #[allow(clippy::all)] - pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"", - ); +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod ITangleSlashing { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Event with signature `SlashCancelled(uint64,address,string)` and selector `0xe80d1a183af30916f79b15a6c85e82470d0b88065dfdd2505d106adf0e8b7796`. +```solidity +event SlashCancelled(uint64 indexed slashId, address indexed canceller, string reason); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct SlashCancelled { + #[allow(missing_docs)] + pub slashId: u64, + #[allow(missing_docs)] + pub canceller: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub reason: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SlashCancelled { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "SlashCancelled(uint64,address,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 232u8, 13u8, 26u8, 24u8, 58u8, 243u8, 9u8, 22u8, 247u8, 155u8, 21u8, + 166u8, 200u8, 94u8, 130u8, 71u8, 13u8, 11u8, 136u8, 6u8, 93u8, 253u8, + 210u8, 80u8, 93u8, 16u8, 106u8, 223u8, 14u8, 139u8, 119u8, 150u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + slashId: topics.1, + canceller: topics.2, + reason: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.reason, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.slashId.clone(), + self.canceller.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.slashId); + out[2usize] = ::encode_topic( + &self.canceller, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SlashCancelled { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SlashCancelled> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SlashCancelled) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Event with signature `SlashConfigUpdated(uint64,bool,uint16,uint64,uint256,uint16)` and selector `0x384196fec3c27f832a18e6131847b590d155ee4eac26299a7e94026a0416b37b`. +```solidity +event SlashConfigUpdated(uint64 disputeWindow, bool instantSlashEnabled, uint16 maxSlashBps, uint64 disputeResolutionDeadline, uint256 disputeBond, uint16 maxPendingSlashesPerOperator); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct SlashConfigUpdated { + #[allow(missing_docs)] + pub disputeWindow: u64, + #[allow(missing_docs)] + pub instantSlashEnabled: bool, + #[allow(missing_docs)] + pub maxSlashBps: u16, + #[allow(missing_docs)] + pub disputeResolutionDeadline: u64, + #[allow(missing_docs)] + pub disputeBond: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxPendingSlashesPerOperator: u16, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SlashConfigUpdated { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Bool, + alloy::sol_types::sol_data::Uint<16>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<16>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "SlashConfigUpdated(uint64,bool,uint16,uint64,uint256,uint16)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 56u8, 65u8, 150u8, 254u8, 195u8, 194u8, 127u8, 131u8, 42u8, 24u8, 230u8, + 19u8, 24u8, 71u8, 181u8, 144u8, 209u8, 85u8, 238u8, 78u8, 172u8, 38u8, + 41u8, 154u8, 126u8, 148u8, 2u8, 106u8, 4u8, 22u8, 179u8, 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + disputeWindow: data.0, + instantSlashEnabled: data.1, + maxSlashBps: data.2, + disputeResolutionDeadline: data.3, + disputeBond: data.4, + maxPendingSlashesPerOperator: data.5, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.disputeWindow), + ::tokenize( + &self.instantSlashEnabled, + ), + as alloy_sol_types::SolType>::tokenize(&self.maxSlashBps), + as alloy_sol_types::SolType>::tokenize( + &self.disputeResolutionDeadline, + ), + as alloy_sol_types::SolType>::tokenize(&self.disputeBond), + as alloy_sol_types::SolType>::tokenize( + &self.maxPendingSlashesPerOperator, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SlashConfigUpdated { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SlashConfigUpdated> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SlashConfigUpdated) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Event with signature `SlashDisputed(uint64,address,string)` and selector `0x0d4418cc07b1c81f56e2d1277f5d11c1b27ebac6cdacafccecd4add6742b4b0f`. +```solidity +event SlashDisputed(uint64 indexed slashId, address indexed disputer, string reason); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct SlashDisputed { + #[allow(missing_docs)] + pub slashId: u64, + #[allow(missing_docs)] + pub disputer: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub reason: alloy::sol_types::private::String, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for SlashDisputed { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "SlashDisputed(uint64,address,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 13u8, 68u8, 24u8, 204u8, 7u8, 177u8, 200u8, 31u8, 86u8, 226u8, 209u8, + 39u8, 127u8, 93u8, 17u8, 193u8, 178u8, 126u8, 186u8, 198u8, 205u8, 172u8, + 175u8, 204u8, 236u8, 212u8, 173u8, 214u8, 116u8, 43u8, 75u8, 15u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + slashId: topics.1, + disputer: topics.2, + reason: data.0, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.reason, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.slashId.clone(), + self.disputer.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.slashId); + out[2usize] = ::encode_topic( + &self.disputer, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SlashDisputed { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&SlashDisputed> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &SlashDisputed) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Event with signature `SlashExecuted(uint64,address,uint256)` and selector `0x26c5c426df452d68e3b3d27c7b069a62cd268ad9e1cd55c9c9f239320890de23`. + /**Event with signature `SlashExecuted(uint64,uint64,address,uint256)` and selector `0x4a816e132712dbdfe6a363965e5bc68f8e283b999ae11afe294a3162973c3855`. ```solidity -event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 amount); +event SlashExecuted(uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, uint256 actualSlashed); ```*/ #[allow( non_camel_case_types, @@ -1574,12 +2102,14 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 )] #[derive(Clone)] pub struct SlashExecuted { + #[allow(missing_docs)] + pub slashId: u64, #[allow(missing_docs)] pub serviceId: u64, #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub amount: alloy::sol_types::private::primitives::aliases::U256, + pub actualSlashed: alloy::sol_types::private::primitives::aliases::U256, } #[allow( non_camel_case_types, @@ -1598,13 +2128,14 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 type TopicList = ( alloy_sol_types::sol_data::FixedBytes<32>, alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, alloy::sol_types::sol_data::Address, ); - const SIGNATURE: &'static str = "SlashExecuted(uint64,address,uint256)"; + const SIGNATURE: &'static str = "SlashExecuted(uint64,uint64,address,uint256)"; const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ - 38u8, 197u8, 196u8, 38u8, 223u8, 69u8, 45u8, 104u8, 227u8, 179u8, 210u8, - 124u8, 123u8, 6u8, 154u8, 98u8, 205u8, 38u8, 138u8, 217u8, 225u8, 205u8, - 85u8, 201u8, 201u8, 242u8, 57u8, 50u8, 8u8, 144u8, 222u8, 35u8, + 74u8, 129u8, 110u8, 19u8, 39u8, 18u8, 219u8, 223u8, 230u8, 163u8, 99u8, + 150u8, 94u8, 91u8, 198u8, 143u8, 142u8, 40u8, 59u8, 153u8, 154u8, 225u8, + 26u8, 254u8, 41u8, 74u8, 49u8, 98u8, 151u8, 60u8, 56u8, 85u8, ]); const ANONYMOUS: bool = false; #[allow(unused_variables)] @@ -1614,9 +2145,10 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - serviceId: topics.1, - operator: topics.2, - amount: data.0, + slashId: topics.1, + serviceId: topics.2, + operator: topics.3, + actualSlashed: data.0, } } #[inline] @@ -1639,13 +2171,14 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 ( as alloy_sol_types::SolType>::tokenize(&self.amount), + > as alloy_sol_types::SolType>::tokenize(&self.actualSlashed), ) } #[inline] fn topics(&self) -> ::RustType { ( Self::SIGNATURE_HASH.into(), + self.slashId.clone(), self.serviceId.clone(), self.operator.clone(), ) @@ -1663,8 +2196,11 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 ); out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.slashId); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.serviceId); - out[2usize] = ::encode_topic( + out[3usize] = ::encode_topic( &self.operator, ); Ok(()) @@ -1689,9 +2225,9 @@ event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Event with signature `SlashProposed(uint64,address,uint16,bytes32)` and selector `0x0f9eb929e655f6ca1293bbddbade0ebf2c4b209d4454d5399825561892404962`. + /**Event with signature `SlashProposed(uint64,uint64,address,address,uint16,uint16,bytes32,uint64)` and selector `0xea15712b428139839309538b7a37df5b88a90b4d776dbf7aa14d95c28304b9fc`. ```solidity -event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 slashBps, bytes32 evidence); +event SlashProposed(uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, address proposer, uint16 slashBps, uint16 effectiveSlashBps, bytes32 evidence, uint64 executeAfter); ```*/ #[allow( non_camel_case_types, @@ -1701,14 +2237,22 @@ event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 s )] #[derive(Clone)] pub struct SlashProposed { + #[allow(missing_docs)] + pub slashId: u64, #[allow(missing_docs)] pub serviceId: u64, #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, #[allow(missing_docs)] + pub proposer: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub slashBps: u16, #[allow(missing_docs)] + pub effectiveSlashBps: u16, + #[allow(missing_docs)] pub evidence: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub executeAfter: u64, } #[allow( non_camel_case_types, @@ -1721,8 +2265,11 @@ event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 s #[automatically_derived] impl alloy_sol_types::SolEvent for SlashProposed { type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<16>, alloy::sol_types::sol_data::Uint<16>, alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Uint<64>, ); type DataToken<'a> = , alloy::sol_types::sol_data::Uint<64>, + alloy::sol_types::sol_data::Uint<64>, alloy::sol_types::sol_data::Address, ); - const SIGNATURE: &'static str = "SlashProposed(uint64,address,uint16,bytes32)"; + const SIGNATURE: &'static str = "SlashProposed(uint64,uint64,address,address,uint16,uint16,bytes32,uint64)"; const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ - 15u8, 158u8, 185u8, 41u8, 230u8, 85u8, 246u8, 202u8, 18u8, 147u8, 187u8, - 221u8, 186u8, 222u8, 14u8, 191u8, 44u8, 75u8, 32u8, 157u8, 68u8, 84u8, - 213u8, 57u8, 152u8, 37u8, 86u8, 24u8, 146u8, 64u8, 73u8, 98u8, + 234u8, 21u8, 113u8, 43u8, 66u8, 129u8, 57u8, 131u8, 147u8, 9u8, 83u8, + 139u8, 122u8, 55u8, 223u8, 91u8, 136u8, 169u8, 11u8, 77u8, 119u8, 109u8, + 191u8, 122u8, 161u8, 77u8, 149u8, 194u8, 131u8, 4u8, 185u8, 252u8, ]); const ANONYMOUS: bool = false; #[allow(unused_variables)] @@ -1746,10 +2294,14 @@ event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 s data: as alloy_sol_types::SolType>::RustType, ) -> Self { Self { - serviceId: topics.1, - operator: topics.2, - slashBps: data.0, - evidence: data.1, + slashId: topics.1, + serviceId: topics.2, + operator: topics.3, + proposer: data.0, + slashBps: data.1, + effectiveSlashBps: data.2, + evidence: data.3, + executeAfter: data.4, } } #[inline] @@ -1770,18 +2322,28 @@ event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 s #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( + ::tokenize( + &self.proposer, + ), as alloy_sol_types::SolType>::tokenize(&self.slashBps), + as alloy_sol_types::SolType>::tokenize(&self.effectiveSlashBps), as alloy_sol_types::SolType>::tokenize(&self.evidence), + as alloy_sol_types::SolType>::tokenize(&self.executeAfter), ) } #[inline] fn topics(&self) -> ::RustType { ( Self::SIGNATURE_HASH.into(), + self.slashId.clone(), self.serviceId.clone(), self.operator.clone(), ) @@ -1799,8 +2361,11 @@ event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 s ); out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.slashId); + out[2usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.serviceId); - out[2usize] = ::encode_topic( + out[3usize] = ::encode_topic( &self.operator, ); Ok(()) @@ -3830,6 +4395,12 @@ function setSlashConfig(uint64 disputeWindow, bool instantSlashEnabled, uint16 m #[derive(serde::Serialize, serde::Deserialize)] #[derive(Debug, PartialEq, Eq, Hash)] pub enum ITangleSlashingEvents { + #[allow(missing_docs)] + SlashCancelled(SlashCancelled), + #[allow(missing_docs)] + SlashConfigUpdated(SlashConfigUpdated), + #[allow(missing_docs)] + SlashDisputed(SlashDisputed), #[allow(missing_docs)] SlashExecuted(SlashExecuted), #[allow(missing_docs)] @@ -3844,25 +4415,46 @@ function setSlashConfig(uint64 disputeWindow, bool instantSlashEnabled, uint16 m /// Prefer using `SolInterface` methods instead. pub const SELECTORS: &'static [[u8; 32usize]] = &[ [ - 15u8, 158u8, 185u8, 41u8, 230u8, 85u8, 246u8, 202u8, 18u8, 147u8, 187u8, - 221u8, 186u8, 222u8, 14u8, 191u8, 44u8, 75u8, 32u8, 157u8, 68u8, 84u8, - 213u8, 57u8, 152u8, 37u8, 86u8, 24u8, 146u8, 64u8, 73u8, 98u8, + 13u8, 68u8, 24u8, 204u8, 7u8, 177u8, 200u8, 31u8, 86u8, 226u8, 209u8, + 39u8, 127u8, 93u8, 17u8, 193u8, 178u8, 126u8, 186u8, 198u8, 205u8, 172u8, + 175u8, 204u8, 236u8, 212u8, 173u8, 214u8, 116u8, 43u8, 75u8, 15u8, ], [ - 38u8, 197u8, 196u8, 38u8, 223u8, 69u8, 45u8, 104u8, 227u8, 179u8, 210u8, - 124u8, 123u8, 6u8, 154u8, 98u8, 205u8, 38u8, 138u8, 217u8, 225u8, 205u8, - 85u8, 201u8, 201u8, 242u8, 57u8, 50u8, 8u8, 144u8, 222u8, 35u8, + 56u8, 65u8, 150u8, 254u8, 195u8, 194u8, 127u8, 131u8, 42u8, 24u8, 230u8, + 19u8, 24u8, 71u8, 181u8, 144u8, 209u8, 85u8, 238u8, 78u8, 172u8, 38u8, + 41u8, 154u8, 126u8, 148u8, 2u8, 106u8, 4u8, 22u8, 179u8, 123u8, + ], + [ + 74u8, 129u8, 110u8, 19u8, 39u8, 18u8, 219u8, 223u8, 230u8, 163u8, 99u8, + 150u8, 94u8, 91u8, 198u8, 143u8, 142u8, 40u8, 59u8, 153u8, 154u8, 225u8, + 26u8, 254u8, 41u8, 74u8, 49u8, 98u8, 151u8, 60u8, 56u8, 85u8, + ], + [ + 232u8, 13u8, 26u8, 24u8, 58u8, 243u8, 9u8, 22u8, 247u8, 155u8, 21u8, + 166u8, 200u8, 94u8, 130u8, 71u8, 13u8, 11u8, 136u8, 6u8, 93u8, 253u8, + 210u8, 80u8, 93u8, 16u8, 106u8, 223u8, 14u8, 139u8, 119u8, 150u8, + ], + [ + 234u8, 21u8, 113u8, 43u8, 66u8, 129u8, 57u8, 131u8, 147u8, 9u8, 83u8, + 139u8, 122u8, 55u8, 223u8, 91u8, 136u8, 169u8, 11u8, 77u8, 119u8, 109u8, + 191u8, 122u8, 161u8, 77u8, 149u8, 194u8, 131u8, 4u8, 185u8, 252u8, ], ]; /// The names of the variants in the same order as `SELECTORS`. pub const VARIANT_NAMES: &'static [&'static str] = &[ - ::core::stringify!(SlashProposed), + ::core::stringify!(SlashDisputed), + ::core::stringify!(SlashConfigUpdated), ::core::stringify!(SlashExecuted), + ::core::stringify!(SlashCancelled), + ::core::stringify!(SlashProposed), ]; /// The signatures in the same order as `SELECTORS`. pub const SIGNATURES: &'static [&'static str] = &[ - ::SIGNATURE, + ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, + ::SIGNATURE, ]; /// Returns the signature for the given selector, if known. #[inline] @@ -3888,12 +4480,35 @@ function setSlashConfig(uint64 disputeWindow, bool instantSlashEnabled, uint16 m #[automatically_derived] impl alloy_sol_types::SolEventInterface for ITangleSlashingEvents { const NAME: &'static str = "ITangleSlashingEvents"; - const COUNT: usize = 2usize; + const COUNT: usize = 5usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], ) -> alloy_sol_types::Result { match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + ) + .map(Self::SlashCancelled) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + ) + .map(Self::SlashConfigUpdated) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + ) + .map(Self::SlashDisputed) + } Some(::SIGNATURE_HASH) => { ::decode_raw_log( topics, @@ -3926,6 +4541,15 @@ function setSlashConfig(uint64 disputeWindow, bool instantSlashEnabled, uint16 m impl alloy_sol_types::private::IntoLogData for ITangleSlashingEvents { fn to_log_data(&self) -> alloy_sol_types::private::LogData { match self { + Self::SlashCancelled(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::SlashConfigUpdated(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::SlashDisputed(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } Self::SlashExecuted(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } @@ -3936,6 +4560,15 @@ function setSlashConfig(uint64 disputeWindow, bool instantSlashEnabled, uint16 m } fn into_log_data(self) -> alloy_sol_types::private::LogData { match self { + Self::SlashCancelled(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::SlashConfigUpdated(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::SlashDisputed(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::SlashExecuted(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -4216,6 +4849,24 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ) -> alloy_contract::Event<&P, E, N> { alloy_contract::Event::new_sol(&self.provider, &self.address) } + ///Creates a new event filter for the [`SlashCancelled`] event. + pub fn SlashCancelled_filter( + &self, + ) -> alloy_contract::Event<&P, SlashCancelled, N> { + self.event_filter::() + } + ///Creates a new event filter for the [`SlashConfigUpdated`] event. + pub fn SlashConfigUpdated_filter( + &self, + ) -> alloy_contract::Event<&P, SlashConfigUpdated, N> { + self.event_filter::() + } + ///Creates a new event filter for the [`SlashDisputed`] event. + pub fn SlashDisputed_filter( + &self, + ) -> alloy_contract::Event<&P, SlashDisputed, N> { + self.event_filter::() + } ///Creates a new event filter for the [`SlashExecuted`] event. pub fn SlashExecuted_filter( &self, diff --git a/bindings/src/bindings/operator_status_registry.rs b/bindings/src/bindings/operator_status_registry.rs index f71995a9..41c87394 100644 --- a/bindings/src/bindings/operator_status_registry.rs +++ b/bindings/src/bindings/operator_status_registry.rs @@ -3061,22 +3061,22 @@ pub mod OperatorStatusRegistry { /// The creation / init bytecode of the contract. /// /// ```text - ///0x60c0604052346100655761001a610014610139565b90610216565b61002261006a565b617ab96104d38239608051818181610edf015261388d015260a051818181611460015281816126cd015281816133ad015281816156a501526162620152617ab990f35b610070565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009c90610074565b810190811060018060401b038211176100b457604052565b61007e565b906100cc6100c561006a565b9283610092565b565b5f80fd5b60018060a01b031690565b6100e6906100d2565b90565b6100f2816100dd565b036100f957565b5f80fd5b9050519061010a826100e9565b565b91906040838203126101345780610128610131925f86016100fd565b936020016100fd565b90565b6100ce565b610157617f8c8038038061014c816100b9565b92833981019061010c565b9091565b90565b61017261016d610177926100d2565b61015b565b6100d2565b90565b6101839061015e565b90565b61018f9061017a565b90565b90565b61019e90610192565b9052565b90565b6101ae906101a2565b9052565b6101bb906100dd565b9052565b9095949261020a946101f9610203926101ef6080966101e560a088019c5f890190610195565b6020870190610195565b6040850190610195565b60608301906101a5565b01906101b2565b565b60200190565b5190565b90610220906102d3565b60a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6102bb7f36ffc258c865193ae10c3cf640450ab772fdb8da1dfcae7862ad1205a5567f4c916102ac7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64661029730610186565b916102a061006a565b968795602087016101bf565b60208201810382520382610092565b6102cd6102c782610212565b9161020c565b20608052565b6102dc9061031e565b565b90565b6102f56102f06102fa926102de565b61015b565b6100d2565b90565b610306906102e1565b90565b919061031c905f602085019401906101b2565b565b8061033961033361032e5f6102fd565b6100dd565b916100dd565b1461034957610347906103e7565b565b61036c6103555f6102fd565b5f918291631e4fbdf760e01b835260048301610309565b0390fd5b1b90565b9190600861039491029161038e60018060a01b0384610370565b92610370565b9181191691161790565b6103a79061017a565b90565b90565b91906103c36103be6103cb9361039e565b6103aa565b908354610374565b9055565b5f90565b6103e5916103df6103cf565b916103ad565b565b6103fb906103f65f60016103d3565b610473565b565b5f1c90565b60018060a01b031690565b61041961041e916103fd565b610402565b90565b61042b905461040d565b90565b5f1b90565b9061044460018060a01b039161042e565b9181191691161790565b9061046361045e61046a9261039e565b6103aa565b8254610433565b9055565b5f0190565b61047c5f610421565b610486825f61044e565b906104ba6104b47f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361039e565b9161039e565b916104c361006a565b806104cd8161046e565b0390a356fe60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b906133a1565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b6134b7565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613966565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b906139b2565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b6139cc565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613a86565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613b26565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613bad565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613c1f565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613c2e565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613c5a565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b92919091614040565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b61198661466f565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b906147ac565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b90614804565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae61482c565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b61487d565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b9161491b565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614aa2565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614ab1565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614b38565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614d9d565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b94939093929192615072565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b615427565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b9161569c565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b9061585b565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615bd2565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615d62565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615dcf565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615e04565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615eee565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b90616083565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b616182565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b9061618d565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b90616256565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b5061637e565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b60481b90565b9061336869ff0000000000000000009161334d565b9181191691161790565b61337b90611159565b90565b90565b9061339661339161339d92613372565b61337e565b8254613353565b9055565b6133dd336133d76133d17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b613402826133fb6133f56133f05f6125e9565b6103ef565b916103ef565b141561330b565b61342861342361341c61341760068590613334565b61334a565b849061645c565b61264e565b61344b6002600161344561343e60038690610fc8565b8690611012565b01613381565b9061347f6134797f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916134886103a2565b806134928161044b565b0390a3565b6134a8906134a3616496565b6134aa565b565b6134b590600b61269a565b565b6134c090613497565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b6134f660176020926109d5565b6134ff816134c2565b0190565b6135189060208101905f8183039101526134e9565b90565b1561352257565b61352a6103a2565b62461bcd60e51b81528061354060048201613503565b0390fd5b906135799796959493929161357461356f613568613563846006613334565b61334a565b33906164e4565b61351b565b6137ba565b565b61358f61358a613594926103b4565b610749565b610554565b90565b6135ab6135a66135b092610554565b610749565b6103b4565b90565b9160206135d49294936135cd60408201965f830190610c21565b0190610c21565b565b6135e56135eb91939293610554565b92610554565b82039182116135f657565b6128e4565b67ffffffffffffffff8111613619576136156020916108b9565b0190565b6108c3565b9092919261363361362e826135fb565b6116bc565b9381855260208501908284011161364f5761364d9261171d565b565b6116f6565b61365f91369161361e565b90565b60200190565b5190565b949290979695939160e08601985f870161368591610f04565b6020860161369291610cbc565b6040850161369f91610c21565b606084016136ac91610c21565b608083016136b991611129565b60a082016136c691610f04565b60c0016136d291610c21565b565b5f61190160f01b910152565b6136ec60028092611d33565b6136f5816136d4565b0190565b90565b61370861370d91610f01565b6136f9565b9052565b602080939261372c613725613734946136e0565b80926136fc565b0180926136fc565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61376c60116020926109d5565b61377581613738565b0190565b61378e9060208101905f81830391015261375f565b90565b1561379857565b6137a06103a2565b62461bcd60e51b8152806137b660048201613779565b0390fd5b919293949796909597806137d66137d042610554565b9161357b565b1161393e576137ee426137e88361357b565b906135d6565b6138076138016137fc610d13565b61357b565b91610554565b116139165761391497986138eb61390993856138758a6138668d6138f1988d8d61383d61383261248b565b963399959293613654565b61384f61384982613668565b91613662565b20929361385a6103a2565b9889976020890161366c565b602082018103825203826108d7565b61388761388182613668565b91613662565b206138d27f00000000000000000000000000000000000000000000000000000000000000006138c36138b76103a2565b93849260208401613711565b602082018103825203826108d7565b6138e46138de82613668565b91613662565b2092613654565b9061651e565b6139036138fd336103ef565b916103ef565b14613791565b9333919293946166b5565b565b61391f42613597565b9061393a5f9283926318355b7560e21b8452600484016135b3565b0390fd5b61394742613597565b906139625f9283926357ea02e960e01b8452600484016135b3565b0390fd5b9061397697969594939291613544565b565b606090565b906020828203126139ad575f82013567ffffffffffffffff81116139a8576139a59201611849565b90565b6103b0565b6103ac565b906139c9916139bf613978565b509081019061397d565b90565b6139eb6139e66139f0926139de6127ae565b506005613334565b61334a565b616ac7565b90565b606090565b67ffffffffffffffff8111613a105760208091020190565b6108c3565b90613a27613a22836139f8565b6116bc565b918252565b369037565b90613a56613a3e83613a15565b92602080613a4c86936139f8565b9201910390613a2c565b565b90613a628261123a565b811015613a73576020809102010190565b61077e565b90613a82906103ef565b9052565b90613a8f6139f3565b50613aac613aa7613aa260048590613334565b61334a565b616ac7565b91613ab683613a31565b91613ac05f612cc2565b5b80613ad4613ace87610554565b91610554565b1015613b1b57613b1690613b11613aff613af8613af360048890613334565b61334a565b8390616b16565b613b0c8791849092613a58565b613a78565b612cde565b613ac1565b5092505090565b5f90565b90613b2f613b22565b50613b516001613b4b613b4460038690610fc8565b8490611012565b016110a3565b613b63613b5d5f611159565b91611159565b14918215613b71575b505090565b613b929250600191613b87613b8c926003610fc8565b611012565b016110a3565b613ba5613b9f6001611159565b91611159565b145f80613b6c565b613bd390613bb96139f3565b505f90613bcd613bc761132d565b92612cc2565b9061491b565b5090565b90613c0994939291613c04613bff613bf8613bf3846006613334565b61334a565b33906164e4565b61351b565b613c0b565b565b91613c1d9492939133919293946166b5565b565b90613c2c94939291613bd7565b565b90613c4e613c49613c5393613c41613b22565b506006613334565b61334a565b6164e4565b90565b5f90565b613c7c613c8292613c77600193613c6f613c56565b506003610fc8565b611012565b016110a3565b90565b613c8e90610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613cc5600d6020926109d5565b613cce81613c91565b0190565b613ce79060208101905f818303910152613cb8565b90565b15613cf157565b613cf96103a2565b62461bcd60e51b815280613d0f60048201613cd2565b0390fd5b67ffffffffffffffff8111613d2b5760208091020190565b6108c3565b90613d42613d3d83613d13565b6116bc565b918252565b369037565b90613d71613d5983613d30565b92602080613d678693613d13565b9201910390613d47565b565b90613d7d82610d97565b811015613d8e576020809102010190565b61077e565b90565b5190565b90613da482613d96565b811015613db5576020809102010190565b61077e565b90613dc490610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613df3613dec836107e4565b8094613dd0565b916001811690815f14613e4a5750600114613e0e575b505050565b613e1b919293945061079f565b915f925b818410613e3257505001905f8080613e09565b60018160209295939554848601520191019290613e1f565b92949550505060ff19168252151560200201905f8080613e09565b90613e6f91613dd9565b90565b90613e92613e8b92613e826103a2565b93848092613e65565b03836108d7565b565b613e9d90613e72565b90565b613eaa9051610f01565b90565b613eb79051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613eee60136020926109d5565b613ef781613eba565b0190565b613f13613f219260408301908382035f8501526109e9565b906020818303910152613ee1565b90565b92916020613f40613f489360408701908782035f8901526109e9565b940190610557565b565b905f9291805490613f64613f5d836107e4565b80946109d5565b916001811690815f14613fbb5750600114613f7f575b505050565b613f8c9192939450610817565b915f925b818410613fa357505001905f8080613f7a565b60018160209295939554848601520191019290613f90565b92949550505060ff19168252151560200201905f8080613f7a565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b61400a60176020926109d5565b61401381613fd6565b0190565b61402f61403d9260408301908382035f850152613f4a565b906020818303910152613ffd565b90565b929390936140683361406261405c61405730613c85565b6103ef565b916103ef565b14613cea565b61407c61407760088690610768565b612e93565b9461408682613d4c565b946140905f612cc2565b5b806140a461409e86610554565b91610554565b10156140f7576140f2906140ed6140c85f6140c08a8590613d73565b510151613d93565b6140da6140d482613668565b91613662565b206140e88a91849092613d9a565b613dba565b612cde565b614091565b50919490929561410681612e9f565b6141186141125f612cc2565b91610554565b1196614122613dc8565b90886145a2575b6141325f612cc2565b5b806141466141408b610554565b91610554565b10156144055760015f8b614239575b509088878961416b94614170575b505050612cde565b614133565b825f6141ae6141a66141b7946141a161419960206141926141bc9b8d90613d73565b5101613ead565b976009611d07565b611d1d565b928790613d73565b51015190611dae565b613018565b888789906141e660206141df5f6141d4878990613d73565b510151958790613d73565b5101613ead565b6142196142137f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b9361422e6142256103a2565b92839283613f24565b0390a3888789614163565b9a90959291996142485f612cc2565b5b8061426461425e6142598a612e9f565b610554565b91610554565b10156143ef5761427c6142778d87613d9a565b613ea0565b6142a061429a6142956142908a8690613d9a565b613ea0565b610f01565b91610f01565b146142b3576142ae90612cde565b614249565b8a919b929c508961416b9495988a926001908a6142dd60206142d6898b90613d73565b5101613ead565b6143056142ff6142fa60016142f3868890612ea3565b500161093e565b610554565b91610554565b1091888884156143a5575b5050505061433a575b614324905b156104c2565b614333575b9394505050614155565b505f614329565b905082825f61434a878990613d73565b5101519161439661438461437e7fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b9361438d6103a2565b91829182613efb565b0390a36143245f919050614319565b6143e59394506143d36143df936143cd60206143c66143da96600296613d73565b5101613ead565b96612ea3565b500161093e565b610554565b91610554565b118a5f8888614310565b5099909a878961416b9495986143248d9461431e565b5097505092935093506144175f612cc2565b935b8461443461442e61442986612e9f565b610554565b91610554565b101561459b5761445a614454600361444d868990612ea3565b5001610965565b156104c2565b6145905761447c6144775f614470868990612ea3565b5001613dcd565b613e94565b61448e61448882613668565b91613662565b20905f9661449b5f612cc2565b5b806144b76144b16144ac86613d96565b610554565b91610554565b101561457e576144d06144cb848390613d9a565b613ea0565b6144e26144dc86610f01565b91610f01565b146144f5576144f090612cde565b61449c565b5095909650614516915061450b60015b156104c2565b61451d575b5b612cde565b9394614419565b82855f61452b878590612ea3565b50019161457661456461455e7fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b9361456d6103a2565b91829182614017565b0390a3614510565b50959096614516925061450b90614505565b949361451690614511565b5050505050565b969390506145bc6145b7839794999693612e9f565b613d4c565b976145c65f612cc2565b5b806145e26145dc6145d78b612e9f565b610554565b91610554565b101561463c576146379061463261460d6146085f6146018d8690612ea3565b5001613dcd565b613e94565b61461f61461982613668565b91613662565b2061462d8d91849092613d9a565b613dba565b612cde565b6145c7565b509295919497909396614129565b614652616496565b61465a61465c565b565b61466d6146685f6125e9565b616bae565b565b61467761464a565b565b61468360a06116bc565b90565b5f90565b5f90565b5f90565b61469a614679565b90602080808080866146aa614686565b8152016146b5612750565b8152016146c0612754565b8152016146cb61468a565b8152016146d661468e565b81525050565b6146e4614692565b90565b906146f190610554565b9052565b906146ff906103b4565b9052565b9061470d906104af565b9052565b9061471b90611159565b9052565b9061479e6147956002614730614679565b9461474761473f5f830161093e565b5f88016146e7565b61475f61475660018301611049565b602088016146f5565b61477761476e60018301611076565b60408801614703565b61478f614786600183016110a3565b60608801614711565b016110c7565b60808401613dba565b565b6147a99061471f565b90565b6147d1916147c76147cc926147bf6146dc565b506003610fc8565b611012565b6147a0565b90565b5f90565b906147e29061074c565b5f5260205260405f2090565b906147f890611006565b5f5260205260405f2090565b6148299161481f614824926148176147d4565b50600c6147d8565b6147ee565b611049565b90565b614834616bc4565b61483c615e04565b61484e614848836103ef565b916103ef565b0361485e5761485c90616bae565b565b614879905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61489c6148976148a19261488f6127ae565b506004613334565b61334a565b616ac7565b90565b6148ae90516104af565b90565b6148c56148c06148ca926125ca565b610749565b6104af565b90565b6148d790516103b4565b90565b6148ee6148e96148f3926104af565b610749565b610554565b90565b61490561490b91939293610554565b92610554565b820180921161491657565b6128e4565b909291926149276139f3565b506149306127ae565b5061493a8261637e565b9361495761495261494d60058690613334565b61334a565b616ac7565b92614964602087016148a4565b6149766149705f6148b1565b916104af565b148015614a68575b8015614a4d575b614a33576149bf866149b96149b460206149ad6149a85f614a1c9b9c9d016148cd565b61357b565b93016148a4565b6148da565b906128f8565b91806149da6149d46149cf61132d565b610554565b91610554565b115f14614a2e57506149ea61132d565b5b6149f68482906148f6565b614a08614a0288610554565b91610554565b115f14614a1f5750845b9092909192616bfa565b91565b614a2990846148f6565b614a12565b6149eb565b5050509150614a49614a445f612cc2565b613a31565b9190565b5082614a61614a5b86610554565b91610554565b1015614985565b5083614a7c614a765f612cc2565b91610554565b1461497e565b614a9390614a8e616496565b614a95565b565b614aa090600a61269a565b565b614aab90614a82565b565b5f90565b614ab9614aad565b50614ac35f6125bd565b90565b5090565b9190811015614ada576020020190565b61077e565b35614ae9816103fb565b90565b5f80fd5b60e01b90565b5f910312614b0057565b6103ac565b916020614b26929493614b1f60408201965f830190610c21565b0190610cbc565b565b614b306103a2565b3d5f823e3d90fd5b90929192614b455f612cc2565b5b80614b63614b5d614b58858990614ac6565b610554565b91610554565b1015614c1257614b7230613c85565b9063ba1fb10384614b8d614b88868a8691614aca565b614adf565b93803b15614c0d57614bb25f8094614bbd614ba66103a2565b98899687958694614af0565b845260048401614b05565b03925af1918215614c0857614bd792614bdc575b50612cde565b614b46565b614bfb905f3d8111614c01575b614bf381836108d7565b810190614af6565b5f614bd1565b503d614be9565b614b28565b614aec565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614c4d60136020926109d5565b614c5681614c19565b0190565b614c6f9060208101905f818303910152614c40565b90565b15614c7957565b614c816103a2565b62461bcd60e51b815280614c9760048201614c5a565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614ccf60106020926109d5565b614cd881614c9b565b0190565b614cf19060208101905f818303910152614cc2565b90565b15614cfb57565b614d036103a2565b62461bcd60e51b815280614d1960048201614cdc565b0390fd5b90565b90614d3367ffffffffffffffff91612677565b9181191691161790565b90565b90614d55614d50614d5c9261074c565b614d3d565b8254614d20565b9055565b9190614d7a81614d7381614d7f956109d5565b809561171d565b6108b9565b0190565b9091614d9a9260208301925f818503910152614d60565b90565b614dc233614dbc614db6614db1600a6125bd565b6103ef565b916103ef565b14614c72565b614de8614de3614ddc614dd760058590613334565b61334a565b84906164e4565b614cf4565b614e14614e09614e04614dfd60038590610fc8565b8590611012565b614d1d565b600160039101613381565b614e32614e2b614e2660048490613334565b61334a565b8390616d16565b50614e5a614e3f42613597565b614e55614e4e600c85906147d8565b85906147ee565b614d40565b909192614e90614e8a7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614ea5614e9c6103a2565b92839283614d83565b0390a3565b614eb460806116bc565b90565b614ec2913691611728565b90565b52565b90614ed2906104c2565b9052565b5190565b90614ee4816109d1565b9067ffffffffffffffff8211614fa457614f0882614f0285546107e4565b85612ecf565b602090601f8311600114614f3c57918091614f2b935f92614f30575b5050612a07565b90555b565b90915001515f80614f24565b601f19831691614f4b85610817565b925f5b818110614f8c57509160029391856001969410614f72575b50505002019055614f2e565b614f82910151601f8416906129f2565b90555f8080614f66565b91936020600181928787015181550195019201614f4e565b6108c3565b90614fb391614eda565b565b614fbf90516104c2565b90565b9061501f6060600361502594614fe55f8201614fdf5f8801614ed6565b90614fa9565b614ffe60018201614ff860208801613ead565b90613018565b6150176002820161501160408801613ead565b90613018565b019201614fb5565b9061306a565b565b91906150385761503691614fc2565b565b612ba3565b908154916801000000000000000083101561506d578261506591600161506b95018155612ea3565b90615027565b565b6108c3565b61519095615179849661517061516861515461514f615182976150f56150d56150cf61518b9d8d9f9d6150ca336150c46150be6150b96150b460078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b6150ee6150e86150e3611921565b610554565b91610554565b1115612ddb565b6151128661510b6151058d610554565b91610554565b1015612e6a565b61514861512961512460088490610768565b610792565b61514261513c61513761156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b989996929496615162614eaa565b9a614eb7565b5f8a01614ec5565b602088016146e7565b604086016146e7565b60608401614ec8565b61503d565b565b6151c0906151bb6151b66151af6151aa846006613334565b61334a565b33906164e4565b61351b565b6152a1565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b6151f6601e6020926109d5565b6151ff816151c2565b0190565b6152189060208101905f8183039101526151e9565b90565b60401b90565b9061523568ff00000000000000009161521b565b9181191691161790565b61525361524e615258926104af565b610749565b6104af565b90565b90565b9061527361526e61527a9261523f565b61525b565b8254615221565b9055565b91602061529f92949361529860408201965f830190611171565b0190611171565b565b6152bf6152ba6152b360038490610fc8565b3390611012565b614d1d565b906152cc600183016110a3565b91826152e16152db6003611159565b91611159565b1461540557826152f96152f35f611159565b91611159565b1480156153ea575b6153e557615328906153166001808301613381565b60016153215f6148b1565b910161525e565b61534661533f61533a60048490613334565b61334a565b339061645c565b50803361537c6153767fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b916153856103a2565b8061538f8161044b565b0390a39033909160016153cb6153c57f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936153e06153d76103a2565b9283928361527e565b0390a3565b505050565b50826153ff6153f96001611159565b91611159565b14615301565b61540d6103a2565b62461bcd60e51b81528061542360048201615203565b0390fd5b61543090615192565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b615466600e6020926109d5565b61546f81615432565b0190565b6154889060208101905f818303910152615459565b90565b1561549257565b61549a6103a2565b62461bcd60e51b8152806154b060048201615473565b0390fd5b90565b6154cb6154c66154d0926154b4565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b61550760126020926109d5565b615510816154d3565b0190565b6155299060208101905f8183039101526154fa565b90565b1561553357565b61553b6103a2565b62461bcd60e51b81528061555160048201615514565b0390fd5b90565b61556c61556761557192615555565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b6155a860176020926109d5565b6155b181615574565b0190565b6155ca9060208101905f81830391015261559b565b90565b156155d457565b6155dc6103a2565b62461bcd60e51b8152806155f2600482016155b5565b0390fd5b61560060606116bc565b90565b9061561861561361561f9261305b565b613067565b8254613353565b9055565b9061566560405f61566b9461564582820161563f8488016148cd565b90614d40565b61565d828201615657602088016148a4565b9061525e565b019201614fb5565b90615603565b565b9061567791615623565b565b91602061569a92949361569360408201965f830190610c21565b0190611129565b565b336156cf6156c97f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b1480156157bb575b6156e09061548b565b6156fe826156f76156f1603c6154b7565b916103b4565b101561552c565b61571c8361571561570f6001615558565b916104af565b10156155cd565b615775826157648561575b61573d5f61573760028990612287565b016122b1565b916157526157496155f6565b955f87016146f5565b60208501614703565b60408301614ec8565b61577060028490612287565b61566d565b90916157a17fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b926157b66157ad6103a2565b92839283615679565b0390a2565b506156e0336157e56157df6157da6157d5600787906113c5565b6125bd565b6103ef565b916103ef565b1490506156d7565b634e487b7160e01b5f52601260045260245ffd5b61580d61581391610554565b91610554565b90811561581e570490565b6157ed565b61583761583261583c92610554565b610749565b6104af565b90565b61585361584e615858926125ca565b610749565b6103b4565b90565b61587961587461586d60038490610fc8565b8490611012565b614d1d565b906158838161637e565b61588f600184016110a3565b6158a261589c6003611159565b91611159565b14615ab6576158b25f840161093e565b6158c46158be5f612cc2565b91610554565b14615ab0576158fa6158e1426158db5f870161093e565b906135d6565b6158f46158ef5f85016148cd565b61357b565b90615801565b8061590e61590860ff6148da565b91610554565b115f14615aa2575060ff5b908161593861593261592d60018801611076565b6104af565b916104af565b11615945575b5050505050565b615952826001860161525e565b61596761595e5f61583f565b60018601614d40565b61598561597f61597a60208594016148a4565b6104af565b916104af565b101580615a7b575b615998575b8061593e565b6159b36159a7600185016110a3565b93600160029101613381565b6159d16159ca6159c560048590613334565b61334a565b8590616d16565b508190849091615a1f615a0d615a077f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615a166103a2565b91829182611627565b0390a39190916002615a5a615a547f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615a6f615a666103a2565b9283928361527e565b0390a35f808080615992565b50615a88600184016110a3565b615a9b615a956002611159565b91611159565b141561598d565b615aab90615823565b615919565b50505050565b50505050565b606090565b67ffffffffffffffff8111615ad95760208091020190565b6108c3565b90615af0615aeb83615ac1565b6116bc565b918252565b615aff60806116bc565b90565b90615b69615b606003615b13615af5565b94615b2a615b225f8301610900565b5f8801614ec5565b615b42615b396001830161093e565b602088016146e7565b615b5a615b516002830161093e565b604088016146e7565b01610965565b60608401614ec8565b565b615b7490615b02565b90565b90615b8182610792565b615b8a81615ade565b92615b986020850191610796565b5f915b838310615ba85750505050565b60046020600192615bb885615b6b565b815201920192019190615b9b565b615bcf90615b77565b90565b615be9615bee91615be1615abc565b506008610768565b615bc6565b90565b615c1f90615c1a615c15615c0e615c09846006613334565b61334a565b33906164e4565b61351b565b615c7a565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615c55601f6020926109d5565b615c5e81615c21565b0190565b615c779060208101905f818303910152615c48565b90565b615c98615c93615c8c60038490610fc8565b3390611012565b614d1d565b90615ca5600183016110a3565b9182615cba615cb46003611159565b91611159565b14615d4057615cce90600160049101613381565b615cec615ce5615ce060048490613334565b61334a565b3390616d16565b50903390916004615d26615d207f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615d3b615d326103a2565b9283928361527e565b0390a3565b615d486103a2565b62461bcd60e51b815280615d5e60048201615c62565b0390fd5b615d6b90615bf1565b565b909182615d7d81615d8493611d33565b809361171d565b0190565b615d999060209493615da093615d6d565b8092611d64565b0190565b9091615dbb90615db26103a2565b93849384615d88565b03902090565b9091615dcc92615da4565b90565b92615df4615dfc9392615def615e0196615de76127ae565b506009611d07565b611d1d565b919091615dc1565b61093e565b90565b615e0c614aad565b50615e1760016125bd565b90565b615e249051611159565b90565b90565b615e3e615e39615e4392615e27565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615ea060216040926109d5565b615ea981615e46565b0190565b615ec29060208101905f818303910152615e93565b90565b15615ecc57565b615ed46103a2565b62461bcd60e51b815280615eea60048201615ead565b0390fd5b90615f9f615f9a615fa49333615f1f615f19615f14615f0f600786906113c5565b6125bd565b6103ef565b916103ef565b14801561605d575b615f309061548b565b615f4e615f49615f4260038490610fc8565b8690611012565b6147a0565b615f5a60608201615e1a565b615f6d615f676003611159565b91611159565b03615fa7575b50615f92615f8b615f8660058490613334565b61334a565b8590616d16565b506004613334565b61334a565b616d16565b50565b61602390615ff7615fe7615fba8561637e565b615fe1615fdc6020615fd5615fd05f86016148cd565b61357b565b93016148a4565b6148da565b906128f8565b615ff1600a615e2a565b906128f8565b6160025f8301613ead565b61601461600e5f612cc2565b91610554565b119182616029575b5050615ec5565b5f615f73565b61605491925061604861604e916160425f429201613ead565b906135d6565b92610554565b91610554565b10155f8061601c565b50615f303361607b616075616070614ab1565b6103ef565b916103ef565b149050615f27565b906160ad6160b291616093613b22565b506160a86160a08561637e565b946003610fc8565b611012565b6147a0565b6160bd5f8201613ead565b6160cf6160c95f612cc2565b91610554565b1461610a576161006160fb5f6160f4616106946160ee83429201613ead565b906135d6565b94016148cd565b61357b565b91610554565b1090565b50505f90565b6161219061611c616496565b616123565b565b61612e81600161269a565b616136614ab1565b9061616a6161647f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b916161736103a2565b8061617d8161044b565b0390a3565b61618b90616110565b565b5f6161cc6161d2936161c4336161be6161b86161b36161ae60078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b01615603565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b616208600e6020926109d5565b616211816161d4565b0190565b61622a9060208101905f8183039101526161fb565b90565b1561623457565b61623c6103a2565b62461bcd60e51b81528061625260048201616215565b0390fd5b6162923361628c6162867f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b6162b86162b36162ac6162a760068590613334565b61334a565b8490616d16565b61622d565b6162d66162cf6162ca60048490613334565b61334a565b8390616d16565b509061630b6163057f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163146103a2565b8061631e8161044b565b0390a3565b906163706163675f616333612743565b9461634a616342838301611049565b8388016146f5565b616361616358838301611076565b60208801614703565b016122b1565b60408401614ec8565b565b61637b90616323565b90565b61639561639a9161638d61278e565b506002612287565b616372565b6163a55f82016148cd565b6163b76163b15f61583f565b916103b4565b146163fd575b6163c9602082016148a4565b6163db6163d55f6148b1565b916104af565b146163e4575b90565b6163f86163ef61160f565b60208301614703565b6163e1565b616410616408610c08565b5f83016146f5565b6163bd565b61641e90610fde565b90565b61643561643061643a926103e4565b610749565b610554565b90565b61645161644c61645692610554565b612677565b610f01565b90565b90565b9061648e61648861648361647e5f61649396616476613b22565b500194616415565b616421565b61643d565b91616459565b616df9565b90565b61649e614ab1565b6164b76164b16164ac616bc4565b6103ef565b916103ef565b036164be57565b6164e06164c9616bc4565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b9061651661651061650b6165065f61651b966164fe613b22565b500194616415565b616421565b61643d565b91616459565b616e5c565b90565b61653d916165349161652e614aad565b50616ebc565b90929192616f7c565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61657460136020926109d5565b61657d81616540565b0190565b6165969060208101905f818303910152616567565b90565b156165a057565b6165a86103a2565b62461bcd60e51b8152806165be60048201616581565b0390fd5b6165cb90610f01565b90565b6165d790610922565b90565b906165ef6165ea6165f6926165c2565b6165ce565b8254613002565b9055565b616603906103b4565b67ffffffffffffffff81146166185760010190565b6128e4565b90565b61663461662f6166399261661d565b610749565b6104af565b90565b91602061665d92949361665660408201965f830190611129565b0190610557565b565b61666890610fde565b90565b6166749061665f565b90565b61668090610ffa565b90565b6040906166ac6166b394969593966166a260608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b94929391936166d86166d36166cc60038990610fc8565b8790611012565b614d1d565b936166e28761637e565b9361670c6166f2600188016110a3565b6167056166ff6003611159565b91611159565b1415616599565b61672a61672361671e60058b90613334565b61334a565b889061645c565b506167ff604061673c600189016110a3565b96616749425f8b01613018565b616773616757858790613654565b61676961676382613668565b91613662565b2060028b016165da565b61678861677f5f6148b1565b60018b0161525e565b6167a660018a016167a061679b82611049565b6165fa565b90614d40565b6167ae613c56565b50856167c26167bc5f6148b1565b916104af565b145f14616a83576167d95f995b60018b9101613381565b876167ed6167e76002611159565b91611159565b1480616a67575b6169f9575b01614fb5565b806169d5575b6169bf575b505085918591924261684e6168486168427f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b9461686361685a6103a2565b9283928361663c565b0390a48061687961687384611159565b91611159565b03616969575b505061688b600b6125bd565b6168a561689f61689a5f6125e9565b6103ef565b916103ef565b036168af575b5050565b6168c96168c46168bf600b6125bd565b61666b565b616677565b9163d47853b69190926168db42613597565b92813b15616964575f6169019161690c82966168f56103a2565b98899788968795614af0565b855260048501616683565b03925af19081616938575b50155f1461693357600161692e575b5b5f806168ab565b616926565b616927565b616957905f3d811161695d575b61694f81836108d7565b810190614af6565b5f616917565b503d616945565b614aec565b838391926169a061699a7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936169b56169ac6103a2565b9283928361527e565b0390a35f8061687f565b6169ce91889188909192617439565b5f8061680a565b506169e1818390612d7e565b6169f36169ed5f612cc2565b91610554565b11616805565b616a16616a0f616a0a8d6004613334565b61334a565b8b9061645c565b508a8a616a4c616a467fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616a556103a2565b80616a5f8161044b565b0390a36167f9565b5088616a7c616a766002611159565b91611159565b14156167f4565b85616a97616a916064616620565b916104af565b105f14616aaa576167d96001995b6167cf565b6167d9600199616ac28d8d8b908b908a928c946170ed565b616aa5565b616ade5f616ae392616ad76127ae565b5001616459565b6175f7565b90565b616af2616af791610922565b61297e565b90565b616b0e616b09616b1392610554565b610749565b6103e4565b90565b616b41616b3c616b4b93616b375f616b4695616b30614aad565b5001616459565b617665565b616ae6565b616afa565b610ffa565b90565b91906008616b6e910291616b6860018060a01b0384612955565b92612955565b9181191691161790565b9190616b8e616b89616b9693611006565b612697565b908354616b4e565b9055565b616bac91616ba6614aad565b91616b78565b565b616bc290616bbd5f6001616b9a565b617686565b565b616bcc614aad565b503390565b616bda90610554565b5f198114616be85760010190565b6128e4565b616bf790516103ef565b90565b93919293616c066139f3565b50616c1a616c158584906135d6565b613a31565b92616c245f612cc2565b925b80616c39616c3388610554565b91610554565b1015616ca757616c5d616c56616c5160058690613334565b61334a565b8290616b16565b616c6984828a916176e5565b616c7d575b50616c7890612cde565b616c26565b616c789194616c9b616ca092616c968991849092613a58565b613a78565b616bd1565b9390616c6e565b509450509150616cb682613a31565b92616cc05f612cc2565b5b80616cd4616cce86610554565b91610554565b1015616d1057616d0b90616d06616cf4616cef868490613a58565b616bed565b616d018891849092613a58565b613a78565b612cde565b616cc1565b50915050565b90616d48616d42616d3d616d385f616d4d96616d30613b22565b500194616415565b616421565b61643d565b91616459565b617831565b90565b90565b5f5260205f2090565b5490565b616d6981616d5c565b821015616d8357616d7b600191616d53565b910201905f90565b61077e565b9190616d9e616d99616da6936165c2565b6165ce565b908354612959565b9055565b9081549168010000000000000000831015616dda5782616dd2916001616dd895018155616d60565b90616d88565b565b6108c3565b5490565b90616ded906165c2565b5f5260205260405f2090565b616e01613b22565b50616e16616e10828490616e5c565b156104c2565b5f14616e5657616e4c616e5192616e38616e315f8501616d50565b8290616daa565b6001616e455f8501616ddf565b9301616de3565b613018565b600190565b50505f90565b616e7a916001616e7592616e6e613b22565b5001616de3565b61093e565b616e8c616e865f612cc2565b91610554565b141590565b5f90565b5f90565b90565b616eb0616eab616eb592616e99565b610749565b610554565b90565b5f90565b919091616ec7614aad565b50616ed0616e91565b50616ed9616e95565b50616ee383613668565b616ef6616ef06041616e9c565b91610554565b145f14616f3d57616f369192616f0a616e95565b50616f13616e95565b50616f1c616eb8565b506020810151606060408301519201515f1a9091926179b0565b9192909190565b50616f475f6125e9565b90616f5b616f56600294613668565b61643d565b91929190565b60041115616f6b57565b611136565b90616f7a82616f61565b565b80616f8f616f895f616f70565b91616f70565b145f14616f9a575050565b80616fae616fa86001616f70565b91616f70565b145f14616fd1575f63f645eedf60e01b815280616fcd6004820161044b565b0390fd5b80616fe5616fdf6002616f70565b91616f70565b145f146170135761700f616ff883616ae6565b5f91829163fce698f760e01b835260048301610564565b0390fd5b6170266170206003616f70565b91616f70565b1461702e5750565b617049905f9182916335e2f38360e21b835260048301610f11565b0390fd5b61706161705c6170669261130e565b610749565b6104af565b90565b61707561707b916103b4565b916103b4565b90039067ffffffffffffffff821161708f57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b6170c8601b6020926109d5565b6170d181617094565b0190565b6170ea9060208101905f8183039101526170bb565b90565b93505092506171056170ff60c861704d565b916104af565b1015617110575b5050565b61711942613597565b61713761713261712b600c85906147d8565b85906147ee565b611049565b8061714a6171445f61583f565b916103b4565b149081156171d0575b5061715f575b5061710c565b61717e90617179617172600c85906147d8565b85906147ee565b614d40565b906171b26171ac7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916171bb6103a2565b806171c5816170d5565b0390a35f8080617159565b6171db915082617069565b6171f46171ee6171e9610f7a565b6103b4565b916103b4565b10155f617153565b90565b61721361720e617218926171fc565b610749565b610554565b90565b9092919261723061722b826116fa565b6116bc565b9381855260208501908284011161724c5761724a926109de565b565b6116f6565b9080601f8301121561726f5781602061726c9351910161721b565b90565b6105af565b90505190617281826106f9565b565b9190916040818403126172d65761729a60406116bc565b925f8201519167ffffffffffffffff83116172d1576172be826172ca948301617251565b5f860152602001617274565b6020830152565b6116f2565b6116ee565b9291906172ef6172ea826116d1565b6116bc565b93818552602080860192028101918383116173465781905b838210617315575050505050565b815167ffffffffffffffff8111617341576020916173368784938701617283565b815201910190617307565b6105af565b6105b7565b9080601f8301121561736957816020617366935191016172db565b90565b6105af565b9060208282031261739e575f82015167ffffffffffffffff811161739957617396920161734b565b90565b6103b0565b6103ac565b60209181520190565b91906173c6816173bf816173cb956173a3565b809561171d565b6108b9565b0190565b90916173e69260208301925f8185039101526173ac565b90565b6173f36032611551565b90565b9493916060916174379461742261742f9361741860808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b91617445818590612d7e565b6174576174515f612cc2565b91610554565b146175f157617467818590612d7e565b61747b61747561c3506171ff565b91610554565b116175eb575f617489613978565b9461749330613c85565b6174b56331e3bd1b9492946174c06174a96103a2565b96879586948594614af0565b8452600484016173cf565b03915afa80915f926175c7575b50155f146175be575060016175b9575b6174e683610d97565b6174ff6174f96174f46173e9565b610554565b91610554565b115f146175ab5761750e6173e9565b5b61751830613c85565b906365a6936e93929490823b156175a6575f9461755386926175489461753c6103a2565b998a9889978896614af0565b8652600486016173f6565b03925af1908161757a575b50155f14617575576001617570575b5b565b61756d565b61756e565b617599905f3d811161759f575b61759181836108d7565b810190614af6565b5f61755e565b503d617587565b614aec565b6175b483610d97565b61750f565b505050565b909250916174dd565b6175e49192503d805f833e6175dc81836108d7565b81019061736e565b905f6174cd565b50505050565b50505050565b5f61760b916176046127ae565b5001616ddf565b90565b5f5260205f2090565b61762081616ddf565b82101561763a5761763260019161760e565b910201905f90565b61077e565b61764f9060086176549302610c78565b6110b0565b90565b90617662915461763f565b90565b617683915f61767d92617676616e95565b5001617617565b90617657565b90565b61768f5f6125bd565b617699825f61269a565b906176cd6176c77f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916176d66103a2565b806176e08161044b565b0390a3565b6176ed613b22565b5061771561770f61770861770360068590613334565b61334a565b84906164e4565b156104c2565b6177b7576177359161772b617730926003610fc8565b611012565b6147a0565b6177405f8201613ead565b61775261774c5f612cc2565b91610554565b148015617791575b61778b5761778061777a617786926177745f429201613ead565b906135d6565b92610554565b91610554565b101590565b50505f90565b5061779e60608201615e1a565b6177b16177ab6003611159565b91611159565b1461775a565b5050505f90565b6177d26177cd6177d792615555565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b617800916177fa616e95565b91616d88565b565b61780b81616d5c565b801561782c5760019003906178296178238383616d60565b906177ee565b55565b6177da565b617839613b22565b5061785061784b600183018490616de3565b61093e565b908161786461785e5f612cc2565b91610554565b14155f14617930576178e29260016178dd928461788b5f96617885856177be565b906135d6565b6178a8617899888501616ddf565b6178a2866177be565b906135d6565b816178bb6178b583610554565b91610554565b036178e7575b5050506178d76178d2868301616d50565b617802565b01616de3565b6129bf565b600190565b6179289261791a617906617900617923948c8901617617565b90617657565b9361791485918c8901617617565b90616d88565b91858501616de3565b613018565b5f80806178c1565b5050505f90565b90565b61794e61794961795392617937565b610749565b610554565b90565b61798b61799294617981606094989795617977608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179a86179a36179ad926125ca565b612677565b610f01565b90565b9392936179bb614aad565b506179c4616e91565b506179cd616e95565b506179d785616ae6565b617a09617a037f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a061793a565b91610554565b11617a965790617a2c602094955f94939293617a236103a2565b94859485617956565b838052039060015afa15617a9157617a445f51612677565b80617a5f617a59617a545f6125e9565b6103ef565b916103ef565b14617a75575f91617a6f5f617994565b91929190565b50617a7f5f6125e9565b600191617a8b5f617994565b91929190565b614b28565b505050617aa25f6125e9565b906003929192919056fea164736f6c634300081a000a + ///0x60c0604052346100655761001a610014610139565b90610216565b61002261006a565b617b106104d38239608051818181610edf0152613936015260a051818181611460015281816126cd015281816134370152818161574e015261630b0152617b1090f35b610070565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061009c90610074565b810190811060018060401b038211176100b457604052565b61007e565b906100cc6100c561006a565b9283610092565b565b5f80fd5b60018060a01b031690565b6100e6906100d2565b90565b6100f2816100dd565b036100f957565b5f80fd5b9050519061010a826100e9565b565b91906040838203126101345780610128610131925f86016100fd565b936020016100fd565b90565b6100ce565b610157617fe38038038061014c816100b9565b92833981019061010c565b9091565b90565b61017261016d610177926100d2565b61015b565b6100d2565b90565b6101839061015e565b90565b61018f9061017a565b90565b90565b61019e90610192565b9052565b90565b6101ae906101a2565b9052565b6101bb906100dd565b9052565b9095949261020a946101f9610203926101ef6080966101e560a088019c5f890190610195565b6020870190610195565b6040850190610195565b60608301906101a5565b01906101b2565b565b60200190565b5190565b90610220906102d3565b60a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6102bb7f36ffc258c865193ae10c3cf640450ab772fdb8da1dfcae7862ad1205a5567f4c916102ac7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64661029730610186565b916102a061006a565b968795602087016101bf565b60208201810382520382610092565b6102cd6102c782610212565b9161020c565b20608052565b6102dc9061031e565b565b90565b6102f56102f06102fa926102de565b61015b565b6100d2565b90565b610306906102e1565b90565b919061031c905f602085019401906101b2565b565b8061033961033361032e5f6102fd565b6100dd565b916100dd565b1461034957610347906103e7565b565b61036c6103555f6102fd565b5f918291631e4fbdf760e01b835260048301610309565b0390fd5b1b90565b9190600861039491029161038e60018060a01b0384610370565b92610370565b9181191691161790565b6103a79061017a565b90565b90565b91906103c36103be6103cb9361039e565b6103aa565b908354610374565b9055565b5f90565b6103e5916103df6103cf565b916103ad565b565b6103fb906103f65f60016103d3565b610473565b565b5f1c90565b60018060a01b031690565b61041961041e916103fd565b610402565b90565b61042b905461040d565b90565b5f1b90565b9061044460018060a01b039161042e565b9181191691161790565b9061046361045e61046a9261039e565b6103aa565b8254610433565b9055565b5f0190565b61047c5f610421565b610486825f61044e565b906104ba6104b47f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09361039e565b9161039e565b916104c361006a565b806104cd8161046e565b0390a356fe60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xC0`@R4a\0eWa\0\x1Aa\0\x14a\x019V[\x90a\x02\x16V[a\0\"a\0jV[az\xB9a\x04\xD3\x829`\x80Q\x81\x81\x81a\x0E\xDF\x01Ra8\x8D\x01R`\xA0Q\x81\x81\x81a\x14`\x01R\x81\x81a&\xCD\x01R\x81\x81a3\xAD\x01R\x81\x81aV\xA5\x01Rabb\x01Raz\xB9\x90\xF3[a\0pV[`@Q\x90V[_\x80\xFD[`\x1F\x80\x19\x91\x01\x16\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x90a\0\x9C\x90a\0tV[\x81\x01\x90\x81\x10`\x01\x80`@\x1B\x03\x82\x11\x17a\0\xB4W`@RV[a\0~V[\x90a\0\xCCa\0\xC5a\0jV[\x92\x83a\0\x92V[V[_\x80\xFD[`\x01\x80`\xA0\x1B\x03\x16\x90V[a\0\xE6\x90a\0\xD2V[\x90V[a\0\xF2\x81a\0\xDDV[\x03a\0\xF9WV[_\x80\xFD[\x90PQ\x90a\x01\n\x82a\0\xE9V[V[\x91\x90`@\x83\x82\x03\x12a\x014W\x80a\x01(a\x011\x92_\x86\x01a\0\xFDV[\x93` \x01a\0\xFDV[\x90V[a\0\xCEV[a\x01Wa\x7F\x8C\x808\x03\x80a\x01L\x81a\0\xB9V[\x92\x839\x81\x01\x90a\x01\x0CV[\x90\x91V[\x90V[a\x01ra\x01ma\x01w\x92a\0\xD2V[a\x01[V[a\0\xD2V[\x90V[a\x01\x83\x90a\x01^V[\x90V[a\x01\x8F\x90a\x01zV[\x90V[\x90V[a\x01\x9E\x90a\x01\x92V[\x90RV[\x90V[a\x01\xAE\x90a\x01\xA2V[\x90RV[a\x01\xBB\x90a\0\xDDV[\x90RV[\x90\x95\x94\x92a\x02\n\x94a\x01\xF9a\x02\x03\x92a\x01\xEF`\x80\x96a\x01\xE5`\xA0\x88\x01\x9C_\x89\x01\x90a\x01\x95V[` \x87\x01\x90a\x01\x95V[`@\x85\x01\x90a\x01\x95V[``\x83\x01\x90a\x01\xA5V[\x01\x90a\x01\xB2V[V[` \x01\x90V[Q\x90V[\x90a\x02 \x90a\x02\xD3V[`\xA0R\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0Fa\x02\xBB\x7F6\xFF\xC2X\xC8e\x19:\xE1\x0C<\xF6@E\n\xB7r\xFD\xB8\xDA\x1D\xFC\xAExb\xAD\x12\x05\xA5V\x7FL\x91a\x02\xAC\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6Fa\x02\x970a\x01\x86V[\x91a\x02\xA0a\0jV[\x96\x87\x95` \x87\x01a\x01\xBFV[` \x82\x01\x81\x03\x82R\x03\x82a\0\x92V[a\x02\xCDa\x02\xC7\x82a\x02\x12V[\x91a\x02\x0CV[ `\x80RV[a\x02\xDC\x90a\x03\x1EV[V[\x90V[a\x02\xF5a\x02\xF0a\x02\xFA\x92a\x02\xDEV[a\x01[V[a\0\xD2V[\x90V[a\x03\x06\x90a\x02\xE1V[\x90V[\x91\x90a\x03\x1C\x90_` \x85\x01\x94\x01\x90a\x01\xB2V[V[\x80a\x039a\x033a\x03._a\x02\xFDV[a\0\xDDV[\x91a\0\xDDV[\x14a\x03IWa\x03G\x90a\x03\xE7V[V[a\x03la\x03U_a\x02\xFDV[_\x91\x82\x91c\x1EO\xBD\xF7`\xE0\x1B\x83R`\x04\x83\x01a\x03\tV[\x03\x90\xFD[\x1B\x90V[\x91\x90`\x08a\x03\x94\x91\x02\x91a\x03\x8E`\x01\x80`\xA0\x1B\x03\x84a\x03pV[\x92a\x03pV[\x91\x81\x19\x16\x91\x16\x17\x90V[a\x03\xA7\x90a\x01zV[\x90V[\x90V[\x91\x90a\x03\xC3a\x03\xBEa\x03\xCB\x93a\x03\x9EV[a\x03\xAAV[\x90\x83Ta\x03tV[\x90UV[_\x90V[a\x03\xE5\x91a\x03\xDFa\x03\xCFV[\x91a\x03\xADV[V[a\x03\xFB\x90a\x03\xF6_`\x01a\x03\xD3V[a\x04sV[V[_\x1C\x90V[`\x01\x80`\xA0\x1B\x03\x16\x90V[a\x04\x19a\x04\x1E\x91a\x03\xFDV[a\x04\x02V[\x90V[a\x04+\x90Ta\x04\rV[\x90V[_\x1B\x90V[\x90a\x04D`\x01\x80`\xA0\x1B\x03\x91a\x04.V[\x91\x81\x19\x16\x91\x16\x17\x90V[\x90a\x04ca\x04^a\x04j\x92a\x03\x9EV[a\x03\xAAV[\x82Ta\x043V[\x90UV[_\x01\x90V[a\x04|_a\x04!V[a\x04\x86\x82_a\x04NV[\x90a\x04\xBAa\x04\xB4\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x93a\x03\x9EV[\x91a\x03\x9EV[\x91a\x04\xC3a\0jV[\x80a\x04\xCD\x81a\x04nV[\x03\x90\xA3V\xFE`\x80`@R`\x046\x10\x15a\0\x13W[a%#V[a\0\x1D_5a\x03\x9CV[\x80c\x05w\x85P\x14a\x03\x97W\x80c\x07X#o\x14a\x03\x92W\x80c\x0Cviz\x14a\x03\x8DW\x80c\x19\x1C\xBD\x1A\x14a\x03\x88W\x80c\x1E\x8F^\xE5\x14a\x03\x83W\x80c \x81)V\x14a\x03~W\x80c\"\xF1\xEC\x93\x14a\x03yW\x80c+\xF4\xD6\xA7\x14a\x03tW\x80c,\x95v\x88\x14a\x03oW\x80c-\xAE\x18\x85\x14a\x03jW\x80c/K\xD7\xB8\x14a\x03eW\x80c1\xE3\xBD\x1B\x14a\x03`W\x80c6D\xE5\x15\x14a\x03[W\x80c:\xC3\xCB\xE6\x14a\x03VW\x80c>n4\xA7\x14a\x03QW\x80c?\xD6,m\x14a\x03LW\x80c@#Z\x9C\x14a\x03GW\x80cH\xF4\xDA \x14a\x03BW\x80cV\x85\xCFh\x14a\x03=W\x80cV\xC4\xE1}\x14a\x038W\x80cY\xDC\xEA\x12\x14a\x033W\x80cZ\x93m\xC6\x14a\x03.W\x80c\\\xCE\x98\xA6\x14a\x03)W\x80c`vC\x9C\x14a\x03$W\x80c`\xCF\t\x91\x14a\x03\x1FW\x80ca\xD6\xB8l\x14a\x03\x1AW\x80cb\xC7\xE8\xFC\x14a\x03\x15W\x80ce\xA6\x93n\x14a\x03\x10W\x80ck\xFE\x06\xA6\x14a\x03\x0BW\x80cqP\x18\xA6\x14a\x03\x06W\x80cq\xE78\x8C\x14a\x03\x01W\x80cv9\xD2'\x14a\x02\xFCW\x80cy\xBAP\x97\x14a\x02\xF7W\x80c{\x9Fd\xB2\x14a\x02\xF2W\x80c\x81\xBE\xAC.\x14a\x02\xEDW\x80c\x84\xEFs\"\x14a\x02\xE8W\x80c\x8D\xA5\xCB[\x14a\x02\xE3W\x80c\x96hl\x1E\x14a\x02\xDEW\x80c\x9C\xBD\xAE\"\x14a\x02\xD9W\x80c\xAD\xFF\x83\x0C\x14a\x02\xD4W\x80c\xAEG\n\x85\x14a\x02\xCFW\x80c\xB0t\xE9\xDD\x14a\x02\xCAW\x80c\xB9\x9FgY\x14a\x02\xC5W\x80c\xBA\x1F\xB1\x03\x14a\x02\xC0W\x80c\xC1\xEF\x9D\xDF\x14a\x02\xBBW\x80c\xC5\xD9`\xBB\x14a\x02\xB6W\x80c\xCF\xE3GI\x14a\x02\xB1W\x80c\xD5Q\x16,\x14a\x02\xACW\x80c\xDACZ|\x14a\x02\xA7W\x80c\xE3\x0C9x\x14a\x02\xA2W\x80c\xE6\\\xAF\xCB\x14a\x02\x9DW\x80c\xEE\x1C\x03\x90\x14a\x02\x98W\x80c\xF2\xFD\xE3\x8B\x14a\x02\x93W\x80c\xF9\x10\x7F;\x14a\x02\x8EW\x80c\xF9\xF1gb\x14a\x02\x89Wc\xFF\xCF\x08\xF0\x03a\0\x0EWa$\xEFV[a$\xBAV[a$WV[a#\xF7V[a#\xC1V[a#\x8DV[a#XV[a# V[a\"NV[a\"\x19V[a!\xD7V[a!\xA2V[a xV[a DV[a\x1F\xD7V[a\x1F\x9DV[a\x1E\xD2V[a\x1E\x0BV[a\x1C\x82V[a\x1B\xC8V[a\x1B\x95V[a\x1B^V[a\x1A\xC9V[a\x1A\x96V[a\x1A`V[a\x1A*V[a\x19nV[a\x199V[a\x18\xCBV[a\x16\x86V[a\x16V[\x91a\t\xCA`\x03a\t\xC3`\x02\x85\x01a\t>V[\x93\x01a\teV[\x90V[_\x80\xFD[Q\x90V[` \x91\x81R\x01\x90V[\x90\x82_\x93\x92\x82^\x01RV[a\n\x08a\n\x11` \x93a\n\x16\x93a\t\xFF\x81a\t\xD1V[\x93\x84\x80\x93a\t\xD5V[\x95\x86\x91\x01a\t\xDEV[a\x08\xB9V[\x01\x90V[a\n#\x90a\x04\xC2V[\x90RV[a\naa\nh\x94a\nWa\nL``\x95\x99\x98\x96\x99`\x80\x86\x01\x90\x86\x82\x03_\x88\x01Ra\t\xE9V[\x98` \x85\x01\x90a\x05WV[`@\x83\x01\x90a\x05WV[\x01\x90a\n\x1AV[V[4a\n\x9FWa\n\x9Ba\n\x86a\n\x806`\x04a\x07\x1CV[\x90a\trV[\x90a\n\x92\x94\x92\x94a\x03\xA2V[\x94\x85\x94\x85a\n'V[\x03\x90\xF3[a\x03\xA8V[a\n\xAD\x81a\x04\xAFV[\x03a\n\xB4WV[_\x80\xFD[\x90P5\x90a\n\xC5\x82a\n\xA4V[V[\x90\x91\x82`\x1F\x83\x01\x12\x15a\x0B\x01W\x815\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\n\xFCW` \x01\x92`\x01\x83\x02\x84\x01\x11a\n\xF7WV[a\x05\xB7V[a\x05\xB3V[a\x05\xAFV[\x91\x90`\xC0\x83\x82\x03\x12a\x0B\x98Wa\x0B\x1E\x81_\x85\x01a\x03\xD5V[\x92a\x0B,\x82` \x83\x01a\x03\xD5V[\x92a\x0B:\x83`@\x84\x01a\n\xB8V[\x92``\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\x93W\x81a\x0B[\x91\x85\x01a\n\xC7V[\x92\x90\x93a\x0Bk\x83`\x80\x83\x01a\x03\xD5V[\x92`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\x8EWa\x0B\x8A\x92\x01a\n\xC7V[\x90\x91V[a\x03\xB0V[a\x03\xB0V[a\x03\xACV[4a\x0B\xD5Wa\x0B\xBFa\x0B\xB06`\x04a\x0B\x06V[\x96\x95\x90\x95\x94\x91\x94\x93\x92\x93a9fV[a\x0B\xC7a\x03\xA2V[\x80a\x0B\xD1\x81a\x04KV[\x03\x90\xF3[a\x03\xA8V[_\x91\x03\x12a\x0B\xE4WV[a\x03\xACV[\x90V[a\x0C\0a\x0B\xFBa\x0C\x05\x92a\x0B\xE9V[a\x07IV[a\x03\xB4V[\x90V[a\x0C\x13a\x01,a\x0B\xECV[\x90V[a\x0C\x1Ea\x0C\x08V[\x90V[a\x0C*\x90a\x03\xB4V[\x90RV[\x91\x90a\x0CA\x90_` \x85\x01\x94\x01\x90a\x0C!V[V[4a\x0CsWa\x0CS6`\x04a\x0B\xDAV[a\x0Coa\x0C^a\x0C\x16V[a\x0Cfa\x03\xA2V[\x91\x82\x91\x82a\x0C.V[\x03\x90\xF3[a\x03\xA8V[\x1C\x90V[`\x01\x80`\xA0\x1B\x03\x16\x90V[a\x0C\x97\x90`\x08a\x0C\x9C\x93\x02a\x0CxV[a\x0C|V[\x90V[\x90a\x0C\xAA\x91Ta\x0C\x87V[\x90V[a\x0C\xB9`\x0B_\x90a\x0C\x9FV[\x90V[a\x0C\xC5\x90a\x03\xEFV[\x90RV[\x91\x90a\x0C\xDC\x90_` \x85\x01\x94\x01\x90a\x0C\xBCV[V[4a\r\x0EWa\x0C\xEE6`\x04a\x0B\xDAV[a\r\na\x0C\xF9a\x0C\xADV[a\r\x01a\x03\xA2V[\x91\x82\x91\x82a\x0C\xC9V[\x03\x90\xF3[a\x03\xA8V[a\r\x1Ea\x01,a\x0B\xECV[\x90V[a\r)a\r\x13V[\x90V[4a\r\\Wa\r<6`\x04a\x0B\xDAV[a\rXa\rGa\r!V[a\rOa\x03\xA2V[\x91\x82\x91\x82a\x0C.V[\x03\x90\xF3[a\x03\xA8V[\x90` \x82\x82\x03\x12a\r\x92W_\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\r\x8DWa\r\x89\x92\x01a\n\xC7V[\x90\x91V[a\x03\xB0V[a\x03\xACV[Q\x90V[` \x91\x81R\x01\x90V[` \x01\x90V[a\r\xC9a\r\xD2` \x93a\r\xD7\x93a\r\xC0\x81a\t\xD1V[\x93\x84\x80\x93a\x08\x0EV[\x95\x86\x91\x01a\t\xDEV[a\x08\xB9V[\x01\x90V[a\r\xE4\x90a\x05TV[\x90RV[\x90a\x0E\x12\x90` \x80a\x0E\x07`@\x84\x01_\x87\x01Q\x85\x82\x03_\x87\x01Ra\r\xAAV[\x94\x01Q\x91\x01\x90a\r\xDBV[\x90V[\x90a\x0E\x1F\x91a\r\xE8V[\x90V[` \x01\x90V[\x90a\x0EV[\x91a\x11\0`\x01\x83\x01a\x10IV[\x91a\x11\r`\x01\x82\x01a\x10vV[\x91a\x11&`\x02a\x11\x1F`\x01\x85\x01a\x10\xA3V[\x93\x01a\x10\xC7V[\x90V[a\x112\x90a\x04\xAFV[\x90RV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x05\x11\x15a\x11TWV[a\x116V[\x90a\x11c\x82a\x11JV[V[a\x11n\x90a\x11YV[\x90V[a\x11z\x90a\x11eV[\x90RV[\x90\x95\x94\x92a\x11\xC9\x94a\x11\xB8a\x11\xC2\x92a\x11\xAE`\x80\x96a\x11\xA4`\xA0\x88\x01\x9C_\x89\x01\x90a\x05WV[` \x87\x01\x90a\x0C!V[`@\x85\x01\x90a\x11)V[``\x83\x01\x90a\x11qV[\x01\x90a\x0F\x04V[V[4a\x12\0Wa\x11\xFCa\x11\xE7a\x11\xE16`\x04a\x04\x1EV[\x90a\x10\xD4V[\x91a\x11\xF3\x95\x93\x95a\x03\xA2V[\x95\x86\x95\x86a\x11~V[\x03\x90\xF3[a\x03\xA8V[4a\x125Wa\x121a\x12 a\x12\x1B6`\x04a\x04\x84V[a9\xCCV[a\x12(a\x03\xA2V[\x91\x82\x91\x82a\x05dV[\x03\x90\xF3[a\x03\xA8V[Q\x90V[` \x91\x81R\x01\x90V[` \x01\x90V[a\x12V\x90a\x03\xEFV[\x90RV[\x90a\x12g\x81` \x93a\x12MV[\x01\x90V[` \x01\x90V[\x90a\x12\x8Ea\x12\x88a\x12\x81\x84a\x12:V[\x80\x93a\x12>V[\x92a\x12GV[\x90_[\x81\x81\x10a\x12\x9EWPPP\x90V[\x90\x91\x92a\x12\xB7a\x12\xB1`\x01\x92\x86Qa\x12ZV[\x94a\x12kV[\x91\x01\x91\x90\x91a\x12\x91V[a\x12\xD6\x91` \x82\x01\x91_\x81\x84\x03\x91\x01Ra\x12qV[\x90V[4a\x13\tWa\x13\x05a\x12\xF4a\x12\xEF6`\x04a\x04\x84V[a:\x86V[a\x12\xFCa\x03\xA2V[\x91\x82\x91\x82a\x12\xC1V[\x03\x90\xF3[a\x03\xA8V[\x90V[a\x13%a\x13 a\x13*\x92a\x13\x0EV[a\x07IV[a\x05TV[\x90V[a\x137`\xC8a\x13\x11V[\x90V[a\x13Ba\x13-V[\x90V[4a\x13uWa\x13U6`\x04a\x0B\xDAV[a\x13qa\x13`a\x13:V[a\x13ha\x03\xA2V[\x91\x82\x91\x82a\x05dV[\x03\x90\xF3[a\x03\xA8V[\x91\x90a\x13\x8D\x90_` \x85\x01\x94\x01\x90a\n\x1AV[V[4a\x13\xC0Wa\x13\xBCa\x13\xABa\x13\xA56`\x04a\x04\x1EV[\x90a;&V[a\x13\xB3a\x03\xA2V[\x91\x82\x91\x82a\x13zV[\x03\x90\xF3[a\x03\xA8V[\x90a\x13\xCF\x90a\x07LV[_R` R`@_ \x90V[a\x13\xF1\x90a\x13\xEC`\x07\x91_\x92a\x13\xC5V[a\x0C\x9FV[\x90V[4a\x14$Wa\x14 a\x14\x0Fa\x14\n6`\x04a\x04\x84V[a\x13\xDBV[a\x14\x17a\x03\xA2V[\x91\x82\x91\x82a\x0C\xC9V[\x03\x90\xF3[a\x03\xA8V[4a\x14YWa\x14Ua\x14Da\x14?6`\x04a\x04\x84V[a;\xADV[a\x14La\x03\xA2V[\x91\x82\x91\x82a\x12\xC1V[\x03\x90\xF3[a\x03\xA8V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[4a\x14\xB2Wa\x14\x926`\x04a\x0B\xDAV[a\x14\xAEa\x14\x9Da\x14^V[a\x14\xA5a\x03\xA2V[\x91\x82\x91\x82a\x0C\xC9V[\x03\x90\xF3[a\x03\xA8V[\x90`\x80\x82\x82\x03\x12a\x15\x12Wa\x14\xCE\x81_\x84\x01a\x03\xD5V[\x92a\x14\xDC\x82` \x85\x01a\x03\xD5V[\x92a\x14\xEA\x83`@\x83\x01a\n\xB8V[\x92``\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x15\rWa\x15\t\x92\x01a\n\xC7V[\x90\x91V[a\x03\xB0V[a\x03\xACV[4a\x15IWa\x153a\x15*6`\x04a\x14\xB7V[\x93\x92\x90\x92a<\x1FV[a\x15;a\x03\xA2V[\x80a\x15E\x81a\x04KV[\x03\x90\xF3[a\x03\xA8V[\x90V[a\x15ea\x15`a\x15j\x92a\x15NV[a\x07IV[a\x05TV[\x90V[a\x15w`2a\x15QV[\x90V[a\x15\x82a\x15mV[\x90V[4a\x15\xB5Wa\x15\x956`\x04a\x0B\xDAV[a\x15\xB1a\x15\xA0a\x15zV[a\x15\xA8a\x03\xA2V[\x91\x82\x91\x82a\x05dV[\x03\x90\xF3[a\x03\xA8V[4a\x15\xEBWa\x15\xE7a\x15\xD6a\x15\xD06`\x04a\x04\x1EV[\x90a<.V[a\x15\xDEa\x03\xA2V[\x91\x82\x91\x82a\x13zV[\x03\x90\xF3[a\x03\xA8V[\x90V[a\x16\x07a\x16\x02a\x16\x0C\x92a\x15\xF0V[a\x07IV[a\x04\xAFV[\x90V[a\x16\x19`\x03a\x15\xF3V[\x90V[a\x16$a\x16\x0FV[\x90V[\x91\x90a\x16:\x90_` \x85\x01\x94\x01\x90a\x11)V[V[4a\x16lWa\x16L6`\x04a\x0B\xDAV[a\x16ha\x16Wa\x16\x1CV[a\x16_a\x03\xA2V[\x91\x82\x91\x82a\x16'V[\x03\x90\xF3[a\x03\xA8V[\x91\x90a\x16\x84\x90_` \x85\x01\x94\x01\x90a\x11qV[V[4a\x16\xB7Wa\x16\xB3a\x16\xA2a\x16\x9C6`\x04a\x04\x1EV[\x90aV[\x90V[_\x7FNot service owner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a(\x10`\x11` \x92a\t\xD5V[a(\x19\x81a'\xDCV[\x01\x90V[a(2\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra(\x03V[\x90V[\x15a(\x90a\x07LV[_R` R`@_ \x90V[\x90V[`H\x1B\x90V[\x90a3hi\xFF\0\0\0\0\0\0\0\0\0\x91a3MV[\x91\x81\x19\x16\x91\x16\x17\x90V[a3{\x90a\x11YV[\x90V[\x90V[\x90a3\x96a3\x91a3\x9D\x92a3rV[a3~V[\x82Ta3SV[\x90UV[a3\xDD3a3\xD7a3\xD1\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x03\xEFV[\x91a\x03\xEFV[\x14a%\x80V[a4\x02\x82a3\xFBa3\xF5a3\xF0_a%\xE9V[a\x03\xEFV[\x91a\x03\xEFV[\x14\x15a3\x0BV[a4(a4#a4\x1Ca4\x17`\x06\x85\x90a34V[a3JV[\x84\x90ad\\V[a&NV[a4K`\x02`\x01a4Ea4>`\x03\x86\x90a\x0F\xC8V[\x86\x90a\x10\x12V[\x01a3\x81V[\x90a4\x7Fa4y\x7F\x8E-\x88yZ\xB2\xB8\xE1\x83\xCB\x18\xF4oH\x13\x91?\xC8\xAA\xFCK\x93a\x07LV[\x91a\x10\x06V[\x91a4\x88a\x03\xA2V[\x80a4\x92\x81a\x04KV[\x03\x90\xA3V[a4\xA8\x90a4\xA3ad\x96V[a4\xAAV[V[a4\xB5\x90`\x0Ba&\x9AV[V[a4\xC0\x90a4\x97V[V[_\x7FNot registered operator\0\0\0\0\0\0\0\0\0\x91\x01RV[a4\xF6`\x17` \x92a\t\xD5V[a4\xFF\x81a4\xC2V[\x01\x90V[a5\x18\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra4\xE9V[\x90V[\x15a5\"WV[a5*a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a5@`\x04\x82\x01a5\x03V[\x03\x90\xFD[\x90a5y\x97\x96\x95\x94\x93\x92\x91a5ta5oa5ha5c\x84`\x06a34V[a3JV[3\x90ad\xE4V[a5\x1BV[a7\xBAV[V[a5\x8Fa5\x8Aa5\x94\x92a\x03\xB4V[a\x07IV[a\x05TV[\x90V[a5\xABa5\xA6a5\xB0\x92a\x05TV[a\x07IV[a\x03\xB4V[\x90V[\x91` a5\xD4\x92\x94\x93a5\xCD`@\x82\x01\x96_\x83\x01\x90a\x0C!V[\x01\x90a\x0C!V[V[a5\xE5a5\xEB\x91\x93\x92\x93a\x05TV[\x92a\x05TV[\x82\x03\x91\x82\x11a5\xF6WV[a(\xE4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a6\x19Wa6\x15` \x91a\x08\xB9V[\x01\x90V[a\x08\xC3V[\x90\x92\x91\x92a63a6.\x82a5\xFBV[a\x16\xBCV[\x93\x81\x85R` \x85\x01\x90\x82\x84\x01\x11a6OWa6M\x92a\x17\x1DV[V[a\x16\xF6V[a6_\x916\x91a6\x1EV[\x90V[` \x01\x90V[Q\x90V[\x94\x92\x90\x97\x96\x95\x93\x91`\xE0\x86\x01\x98_\x87\x01a6\x85\x91a\x0F\x04V[` \x86\x01a6\x92\x91a\x0C\xBCV[`@\x85\x01a6\x9F\x91a\x0C!V[``\x84\x01a6\xAC\x91a\x0C!V[`\x80\x83\x01a6\xB9\x91a\x11)V[`\xA0\x82\x01a6\xC6\x91a\x0F\x04V[`\xC0\x01a6\xD2\x91a\x0C!V[V[_a\x19\x01`\xF0\x1B\x91\x01RV[a6\xEC`\x02\x80\x92a\x1D3V[a6\xF5\x81a6\xD4V[\x01\x90V[\x90V[a7\x08a7\r\x91a\x0F\x01V[a6\xF9V[\x90RV[` \x80\x93\x92a7,a7%a74\x94a6\xE0V[\x80\x92a6\xFCV[\x01\x80\x92a6\xFCV[\x01\x90V[_\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a7l`\x11` \x92a\t\xD5V[a7u\x81a78V[\x01\x90V[a7\x8E\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra7_V[\x90V[\x15a7\x98WV[a7\xA0a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a7\xB6`\x04\x82\x01a7yV[\x03\x90\xFD[\x91\x92\x93\x94\x97\x96\x90\x95\x97\x80a7\xD6a7\xD0Ba\x05TV[\x91a5{V[\x11a9>Wa7\xEEBa7\xE8\x83a5{V[\x90a5\xD6V[a8\x07a8\x01a7\xFCa\r\x13V[a5{V[\x91a\x05TV[\x11a9\x16Wa9\x14\x97\x98a8\xEBa9\t\x93\x85a8u\x8Aa8f\x8Da8\xF1\x98\x8D\x8Da8=a82a$\x8BV[\x963\x99\x95\x92\x93a6TV[a8Oa8I\x82a6hV[\x91a6bV[ \x92\x93a8Za\x03\xA2V[\x98\x89\x97` \x89\x01a6lV[` \x82\x01\x81\x03\x82R\x03\x82a\x08\xD7V[a8\x87a8\x81\x82a6hV[\x91a6bV[ a8\xD2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a8\xC3a8\xB7a\x03\xA2V[\x93\x84\x92` \x84\x01a7\x11V[` \x82\x01\x81\x03\x82R\x03\x82a\x08\xD7V[a8\xE4a8\xDE\x82a6hV[\x91a6bV[ \x92a6TV[\x90ae\x1EV[a9\x03a8\xFD3a\x03\xEFV[\x91a\x03\xEFV[\x14a7\x91V[\x933\x91\x92\x93\x94af\xB5V[V[a9\x1FBa5\x97V[\x90a9:_\x92\x83\x92c\x185[u`\xE2\x1B\x84R`\x04\x84\x01a5\xB3V[\x03\x90\xFD[a9GBa5\x97V[\x90a9b_\x92\x83\x92cW\xEA\x02\xE9`\xE0\x1B\x84R`\x04\x84\x01a5\xB3V[\x03\x90\xFD[\x90a9v\x97\x96\x95\x94\x93\x92\x91a5DV[V[``\x90V[\x90` \x82\x82\x03\x12a9\xADW_\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a9\xA8Wa9\xA5\x92\x01a\x18IV[\x90V[a\x03\xB0V[a\x03\xACV[\x90a9\xC9\x91a9\xBFa9xV[P\x90\x81\x01\x90a9}V[\x90V[a9\xEBa9\xE6a9\xF0\x92a9\xDEa'\xAEV[P`\x05a34V[a3JV[aj\xC7V[\x90V[``\x90V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a:\x10W` \x80\x91\x02\x01\x90V[a\x08\xC3V[\x90a:'a:\"\x83a9\xF8V[a\x16\xBCV[\x91\x82RV[6\x907V[\x90a:Va:>\x83a:\x15V[\x92` \x80a:L\x86\x93a9\xF8V[\x92\x01\x91\x03\x90a:,V[V[\x90a:b\x82a\x12:V[\x81\x10\x15a:sW` \x80\x91\x02\x01\x01\x90V[a\x07~V[\x90a:\x82\x90a\x03\xEFV[\x90RV[\x90a:\x8Fa9\xF3V[Pa:\xACa:\xA7a:\xA2`\x04\x85\x90a34V[a3JV[aj\xC7V[\x91a:\xB6\x83a:1V[\x91a:\xC0_a,\xC2V[[\x80a:\xD4a:\xCE\x87a\x05TV[\x91a\x05TV[\x10\x15a;\x1BWa;\x16\x90a;\x11a:\xFFa:\xF8a:\xF3`\x04\x88\x90a34V[a3JV[\x83\x90ak\x16V[a;\x0C\x87\x91\x84\x90\x92a:XV[a:xV[a,\xDEV[a:\xC1V[P\x92PP\x90V[_\x90V[\x90a;/a;\"V[Pa;Q`\x01a;Ka;D`\x03\x86\x90a\x0F\xC8V[\x84\x90a\x10\x12V[\x01a\x10\xA3V[a;ca;]_a\x11YV[\x91a\x11YV[\x14\x91\x82\x15a;qW[PP\x90V[a;\x92\x92P`\x01\x91a;\x87a;\x8C\x92`\x03a\x0F\xC8V[a\x10\x12V[\x01a\x10\xA3V[a;\xA5a;\x9F`\x01a\x11YV[\x91a\x11YV[\x14_\x80a;lV[a;\xD3\x90a;\xB9a9\xF3V[P_\x90a;\xCDa;\xC7a\x13-V[\x92a,\xC2V[\x90aI\x1BV[P\x90V[\x90a<\t\x94\x93\x92\x91a<\x04a;\xFFa;\xF8a;\xF3\x84`\x06a34V[a3JV[3\x90ad\xE4V[a5\x1BV[a<\x0BV[V[\x91a<\x1D\x94\x92\x93\x913\x91\x92\x93\x94af\xB5V[V[\x90a<,\x94\x93\x92\x91a;\xD7V[V[\x90aJWP`\x01\x14a>\x0EW[PPPV[a>\x1B\x91\x92\x93\x94Pa\x07\x9FV[\x91_\x92[\x81\x84\x10a>2WPP\x01\x90_\x80\x80a>\tV[`\x01\x81` \x92\x95\x93\x95T\x84\x86\x01R\x01\x91\x01\x92\x90a>\x1FV[\x92\x94\x95PPP`\xFF\x19\x16\x82R\x15\x15` \x02\x01\x90_\x80\x80a>\tV[\x90a>o\x91a=\xD9V[\x90V[\x90a>\x92a>\x8B\x92a>\x82a\x03\xA2V[\x93\x84\x80\x92a>eV[\x03\x83a\x08\xD7V[V[a>\x9D\x90a>rV[\x90V[a>\xAA\x90Qa\x0F\x01V[\x90V[a>\xB7\x90Qa\x05TV[\x90V[_\x7FValue out of bounds\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a>\xEE`\x13` \x92a\t\xD5V[a>\xF7\x81a>\xBAV[\x01\x90V[a?\x13a?!\x92`@\x83\x01\x90\x83\x82\x03_\x85\x01Ra\t\xE9V[\x90` \x81\x83\x03\x91\x01Ra>\xE1V[\x90V[\x92\x91` a?@a?H\x93`@\x87\x01\x90\x87\x82\x03_\x89\x01Ra\t\xE9V[\x94\x01\x90a\x05WV[V[\x90_\x92\x91\x80T\x90a?da?]\x83a\x07\xE4V[\x80\x94a\t\xD5V[\x91`\x01\x81\x16\x90\x81_\x14a?\xBBWP`\x01\x14a?\x7FW[PPPV[a?\x8C\x91\x92\x93\x94Pa\x08\x17V[\x91_\x92[\x81\x84\x10a?\xA3WPP\x01\x90_\x80\x80a?zV[`\x01\x81` \x92\x95\x93\x95T\x84\x86\x01R\x01\x91\x01\x92\x90a?\x90V[\x92\x94\x95PPP`\xFF\x19\x16\x82R\x15\x15` \x02\x01\x90_\x80\x80a?zV[_\x7FRequired metric missing\0\0\0\0\0\0\0\0\0\x91\x01RV[a@\n`\x17` \x92a\t\xD5V[a@\x13\x81a?\xD6V[\x01\x90V[a@/a@=\x92`@\x83\x01\x90\x83\x82\x03_\x85\x01Ra?JV[\x90` \x81\x83\x03\x91\x01Ra?\xFDV[\x90V[\x92\x93\x90\x93a@h3a@ba@\\a@W0a<\x85V[a\x03\xEFV[\x91a\x03\xEFV[\x14a<\xEAV[a@|a@w`\x08\x86\x90a\x07hV[a.\x93V[\x94a@\x86\x82a=LV[\x94a@\x90_a,\xC2V[[\x80a@\xA4a@\x9E\x86a\x05TV[\x91a\x05TV[\x10\x15a@\xF7Wa@\xF2\x90a@\xEDa@\xC8_a@\xC0\x8A\x85\x90a=sV[Q\x01Qa=\x93V[a@\xDAa@\xD4\x82a6hV[\x91a6bV[ a@\xE8\x8A\x91\x84\x90\x92a=\x9AV[a=\xBAV[a,\xDEV[a@\x91V[P\x91\x94\x90\x92\x95aA\x06\x81a.\x9FV[aA\x18aA\x12_a,\xC2V[\x91a\x05TV[\x11\x96aA\"a=\xC8V[\x90\x88aE\xA2W[aA2_a,\xC2V[[\x80aAFaA@\x8Ba\x05TV[\x91a\x05TV[\x10\x15aD\x05W`\x01_\x8BaB9W[P\x90\x88\x87\x89aAk\x94aApW[PPPa,\xDEV[aA3V[\x82_aA\xAEaA\xA6aA\xB7\x94aA\xA1aA\x99` aA\x92aA\xBC\x9B\x8D\x90a=sV[Q\x01a>\xADV[\x97`\ta\x1D\x07V[a\x1D\x1DV[\x92\x87\x90a=sV[Q\x01Q\x90a\x1D\xAEV[a0\x18V[\x88\x87\x89\x90aA\xE6` aA\xDF_aA\xD4\x87\x89\x90a=sV[Q\x01Q\x95\x87\x90a=sV[Q\x01a>\xADV[aB\x19aB\x13\x7F#\xED\x02\xBD6\x05\xBD\xEAj\x8A\xFAv\xC4o\0\xD2t\x86\x0B\xA6\xCE\xA9\x80\xF2X[im\xF9\xE1\x82\xBD\x93a\x07LV[\x93a\x10\x06V[\x93aB.aB%a\x03\xA2V[\x92\x83\x92\x83a?$V[\x03\x90\xA3\x88\x87\x89aAcV[\x9A\x90\x95\x92\x91\x99aBH_a,\xC2V[[\x80aBdaB^aBY\x8Aa.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aC\xEFWaB|aBw\x8D\x87a=\x9AV[a>\xA0V[aB\xA0aB\x9AaB\x95aB\x90\x8A\x86\x90a=\x9AV[a>\xA0V[a\x0F\x01V[\x91a\x0F\x01V[\x14aB\xB3WaB\xAE\x90a,\xDEV[aBIV[\x8A\x91\x9B\x92\x9CP\x89aAk\x94\x95\x98\x8A\x92`\x01\x90\x8AaB\xDD` aB\xD6\x89\x8B\x90a=sV[Q\x01a>\xADV[aC\x05aB\xFFaB\xFA`\x01aB\xF3\x86\x88\x90a.\xA3V[P\x01a\t>V[a\x05TV[\x91a\x05TV[\x10\x91\x88\x88\x84\x15aC\xA5W[PPPPaC:W[aC$\x90[\x15a\x04\xC2V[aC3W[\x93\x94PPPaAUV[P_aC)V[\x90P\x82\x82_aCJ\x87\x89\x90a=sV[Q\x01Q\x91aC\x96aC\x84aC~\x7F\xE0\x8FB\x89l\xE3\xAE\xC2\xFF}\xA9Z\x007/3\xCFg~u\xAD`%\x90\x83*\x8D\xFF\xCD\xADc\x15\x93a\x07LV[\x93a\x10\x06V[\x93aC\x8Da\x03\xA2V[\x91\x82\x91\x82a>\xFBV[\x03\x90\xA3aC$_\x91\x90PaC\x19V[aC\xE5\x93\x94PaC\xD3aC\xDF\x93aC\xCD` aC\xC6aC\xDA\x96`\x02\x96a=sV[Q\x01a>\xADV[\x96a.\xA3V[P\x01a\t>V[a\x05TV[\x91a\x05TV[\x11\x8A_\x88\x88aC\x10V[P\x99\x90\x9A\x87\x89aAk\x94\x95\x98aC$\x8D\x94aC\x1EV[P\x97PP\x92\x93P\x93PaD\x17_a,\xC2V[\x93[\x84aD4aD.aD)\x86a.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aE\x9BWaDZaDT`\x03aDM\x86\x89\x90a.\xA3V[P\x01a\teV[\x15a\x04\xC2V[aE\x90WaD|aDw_aDp\x86\x89\x90a.\xA3V[P\x01a=\xCDV[a>\x94V[aD\x8EaD\x88\x82a6hV[\x91a6bV[ \x90_\x96aD\x9B_a,\xC2V[[\x80aD\xB7aD\xB1aD\xAC\x86a=\x96V[a\x05TV[\x91a\x05TV[\x10\x15aE~WaD\xD0aD\xCB\x84\x83\x90a=\x9AV[a>\xA0V[aD\xE2aD\xDC\x86a\x0F\x01V[\x91a\x0F\x01V[\x14aD\xF5WaD\xF0\x90a,\xDEV[aD\x9CV[P\x95\x90\x96PaE\x16\x91PaE\x0B`\x01[\x15a\x04\xC2V[aE\x1DW[[a,\xDEV[\x93\x94aD\x19V[\x82\x85_aE+\x87\x85\x90a.\xA3V[P\x01\x91aEvaEdaE^\x7F\xE0\x8FB\x89l\xE3\xAE\xC2\xFF}\xA9Z\x007/3\xCFg~u\xAD`%\x90\x83*\x8D\xFF\xCD\xADc\x15\x93a\x07LV[\x93a\x10\x06V[\x93aEma\x03\xA2V[\x91\x82\x91\x82a@\x17V[\x03\x90\xA3aE\x10V[P\x95\x90\x96aE\x16\x92PaE\x0B\x90aE\x05V[\x94\x93aE\x16\x90aE\x11V[PPPPPV[\x96\x93\x90PaE\xBCaE\xB7\x83\x97\x94\x99\x96\x93a.\x9FV[a=LV[\x97aE\xC6_a,\xC2V[[\x80aE\xE2aE\xDCaE\xD7\x8Ba.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aF\x94V[aF\x1FaF\x19\x82a6hV[\x91a6bV[ aF-\x8D\x91\x84\x90\x92a=\x9AV[a=\xBAV[a,\xDEV[aE\xC7V[P\x92\x95\x91\x94\x97\x90\x93\x96aA)V[aFRad\x96V[aFZaF\\V[V[aFmaFh_a%\xE9V[ak\xAEV[V[aFwaFJV[V[aF\x83`\xA0a\x16\xBCV[\x90V[_\x90V[_\x90V[_\x90V[aF\x9AaFyV[\x90` \x80\x80\x80\x80\x86aF\xAAaF\x86V[\x81R\x01aF\xB5a'PV[\x81R\x01aF\xC0a'TV[\x81R\x01aF\xCBaF\x8AV[\x81R\x01aF\xD6aF\x8EV[\x81RPPV[aF\xE4aF\x92V[\x90V[\x90aF\xF1\x90a\x05TV[\x90RV[\x90aF\xFF\x90a\x03\xB4V[\x90RV[\x90aG\r\x90a\x04\xAFV[\x90RV[\x90aG\x1B\x90a\x11YV[\x90RV[\x90aG\x9EaG\x95`\x02aG0aFyV[\x94aGGaG?_\x83\x01a\t>V[_\x88\x01aF\xE7V[aG_aGV`\x01\x83\x01a\x10IV[` \x88\x01aF\xF5V[aGwaGn`\x01\x83\x01a\x10vV[`@\x88\x01aG\x03V[aG\x8FaG\x86`\x01\x83\x01a\x10\xA3V[``\x88\x01aG\x11V[\x01a\x10\xC7V[`\x80\x84\x01a=\xBAV[V[aG\xA9\x90aG\x1FV[\x90V[aG\xD1\x91aG\xC7aG\xCC\x92aG\xBFaF\xDCV[P`\x03a\x0F\xC8V[a\x10\x12V[aG\xA0V[\x90V[_\x90V[\x90aG\xE2\x90a\x07LV[_R` R`@_ \x90V[\x90aG\xF8\x90a\x10\x06V[_R` R`@_ \x90V[aH)\x91aH\x1FaH$\x92aH\x17aG\xD4V[P`\x0CaG\xD8V[aG\xEEV[a\x10IV[\x90V[aH4ak\xC4V[aH=\x90\xFD[\x90\x92\x91\x92aKE_a,\xC2V[[\x80aKcaK]aKX\x85\x89\x90aJ\xC6V[a\x05TV[\x91a\x05TV[\x10\x15aL\x12WaKr0a<\x85V[\x90c\xBA\x1F\xB1\x03\x84aK\x8DaK\x88\x86\x8A\x86\x91aJ\xCAV[aJ\xDFV[\x93\x80;\x15aL\rWaK\xB2_\x80\x94aK\xBDaK\xA6a\x03\xA2V[\x98\x89\x96\x87\x95\x86\x94aJ\xF0V[\x84R`\x04\x84\x01aK\x05V[\x03\x92Z\xF1\x91\x82\x15aL\x08WaK\xD7\x92aK\xDCW[Pa,\xDEV[aKFV[aK\xFB\x90_=\x81\x11aL\x01W[aK\xF3\x81\x83a\x08\xD7V[\x81\x01\x90aJ\xF6V[_aK\xD1V[P=aK\xE9V[aK(V[aJ\xECV[PPP\x90PV[_\x7FNot slashing oracle\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aLM`\x13` \x92a\t\xD5V[aLV\x81aL\x19V[\x01\x90V[aLo\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaL@V[\x90V[\x15aLyWV[aL\x81a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aL\x97`\x04\x82\x01aLZV[\x03\x90\xFD[_\x7FOperator unknown\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aL\xCF`\x10` \x92a\t\xD5V[aL\xD8\x81aL\x9BV[\x01\x90V[aL\xF1\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaL\xC2V[\x90V[\x15aL\xFBWV[aM\x03a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aM\x19`\x04\x82\x01aL\xDCV[\x03\x90\xFD[\x90V[\x90aM3g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91a&wV[\x91\x81\x19\x16\x91\x16\x17\x90V[\x90V[\x90aMUaMPaM\\\x92a\x07LV[aM=V[\x82TaM V[\x90UV[\x91\x90aMz\x81aMs\x81aM\x7F\x95a\t\xD5V[\x80\x95a\x17\x1DV[a\x08\xB9V[\x01\x90V[\x90\x91aM\x9A\x92` \x83\x01\x92_\x81\x85\x03\x91\x01RaM`V[\x90V[aM\xC23aM\xBCaM\xB6aM\xB1`\na%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14aLrV[aM\xE8aM\xE3aM\xDCaM\xD7`\x05\x85\x90a34V[a3JV[\x84\x90ad\xE4V[aL\xF4V[aN\x14aN\taN\x04aM\xFD`\x03\x85\x90a\x0F\xC8V[\x85\x90a\x10\x12V[aM\x1DV[`\x01`\x03\x91\x01a3\x81V[aN2aN+aN&`\x04\x84\x90a34V[a3JV[\x83\x90am\x16V[PaNZaN?Ba5\x97V[aNUaNN`\x0C\x85\x90aG\xD8V[\x85\x90aG\xEEV[aM@V[\x90\x91\x92aN\x90aN\x8A\x7F\x1E)\t\xCFE\xD7\x0C\xF0\x03\xF34\xB7<\x933\x0C\xE7\xE5rx-\xFC\x82\xFA\xB7\x9D\xEB\x88U\xA7\xC7\x91\x93a\x07LV[\x93a\x10\x06V[\x93aN\xA5aN\x9Ca\x03\xA2V[\x92\x83\x92\x83aM\x83V[\x03\x90\xA3V[aN\xB4`\x80a\x16\xBCV[\x90V[aN\xC2\x916\x91a\x17(V[\x90V[RV[\x90aN\xD2\x90a\x04\xC2V[\x90RV[Q\x90V[\x90aN\xE4\x81a\t\xD1V[\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11aO\xA4WaO\x08\x82aO\x02\x85Ta\x07\xE4V[\x85a.\xCFV[` \x90`\x1F\x83\x11`\x01\x14aO\xADV[\x90a0\x18V[aP\x17`\x02\x82\x01aP\x11`@\x88\x01a>\xADV[\x90a0\x18V[\x01\x92\x01aO\xB5V[\x90a0jV[V[\x91\x90aP8WaP6\x91aO\xC2V[V[a+\xA3V[\x90\x81T\x91h\x01\0\0\0\0\0\0\0\0\x83\x10\x15aPmW\x82aPe\x91`\x01aPk\x95\x01\x81Ua.\xA3V[\x90aP'V[V[a\x08\xC3V[aQ\x90\x95aQy\x84\x96aQpaQhaQTaQOaQ\x82\x97aP\xF5aP\xD5aP\xCFaQ\x8B\x9D\x8D\x9F\x9DaP\xCA3aP\xC4aP\xBEaP\xB9aP\xB4`\x07\x8C\x90a\x13\xC5V[a%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14a(5V[a-{V[\x90a-~V[aP\xEEaP\xE8aP\xE3a\x19!V[a\x05TV[\x91a\x05TV[\x11\x15a-\xDBV[aQ\x12\x86aQ\x0BaQ\x05\x8Da\x05TV[\x91a\x05TV[\x10\x15a.jV[aQHaQ)aQ$`\x08\x84\x90a\x07hV[a\x07\x92V[aQBaQ= 1\0\0\0\0\0\0\0\0\0\x91\x01RV[aU\xA8`\x17` \x92a\t\xD5V[aU\xB1\x81aUtV[\x01\x90V[aU\xCA\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaU\x9BV[\x90V[\x15aU\xD4WV[aU\xDCa\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aU\xF2`\x04\x82\x01aU\xB5V[\x03\x90\xFD[aV\0``a\x16\xBCV[\x90V[\x90aV\x18aV\x13aV\x1F\x92a0[V[a0gV[\x82Ta3SV[\x90UV[\x90aVe`@_aVk\x94aVE\x82\x82\x01aV?\x84\x88\x01aH\xCDV[\x90aM@V[aV]\x82\x82\x01aVW` \x88\x01aH\xA4V[\x90aR^V[\x01\x92\x01aO\xB5V[\x90aV\x03V[V[\x90aVw\x91aV#V[V[\x91` aV\x9A\x92\x94\x93aV\x93`@\x82\x01\x96_\x83\x01\x90a\x0C!V[\x01\x90a\x11)V[V[3aV\xCFaV\xC9\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x03\xEFV[\x91a\x03\xEFV[\x14\x80\x15aW\xBBW[aV\xE0\x90aT\x8BV[aV\xFE\x82aV\xF7aV\xF1`V[aX\xC4aX\xBE_a,\xC2V[\x91a\x05TV[\x14aZ\xB0WaX\xFAaX\xE1BaX\xDB_\x87\x01a\t>V[\x90a5\xD6V[aX\xF4aX\xEF_\x85\x01aH\xCDV[a5{V[\x90aX\x01V[\x80aY\x0EaY\x08`\xFFaH\xDAV[\x91a\x05TV[\x11_\x14aZ\xA2WP`\xFF[\x90\x81aY8aY2aY-`\x01\x88\x01a\x10vV[a\x04\xAFV[\x91a\x04\xAFV[\x11aYEW[PPPPPV[aYR\x82`\x01\x86\x01aR^V[aYgaY^_aX?V[`\x01\x86\x01aM@V[aY\x85aY\x7FaYz` \x85\x94\x01aH\xA4V[a\x04\xAFV[\x91a\x04\xAFV[\x10\x15\x80aZ{W[aY\x98W[\x80aY>V[aY\xB3aY\xA7`\x01\x85\x01a\x10\xA3V[\x93`\x01`\x02\x91\x01a3\x81V[aY\xD1aY\xCAaY\xC5`\x04\x85\x90a34V[a3JV[\x85\x90am\x16V[P\x81\x90\x84\x90\x91aZ\x1FaZ\raZ\x07\x7FD\xFD2\xB6wpL\xE6\x8Ewc\x89|Is;\x8FR\x89\x01\x8A\xC6\n\\\x92h\x02\xD67Y\xDBM\x93a\x07LV[\x93a\x10\x06V[\x93aZ\x16a\x03\xA2V[\x91\x82\x91\x82a\x16'V[\x03\x90\xA3\x91\x90\x91`\x02aZZaZT\x7F\"\x88$\xB8l%di\x12_R\\\xE1\x8Cl-\n\x9E\x13=\x13\xB8\xECz,\x96\xA1\x93\xB0\xC2\x8A\t\x93a\x07LV[\x93a\x10\x06V[\x93aZoaZfa\x03\xA2V[\x92\x83\x92\x83aR~V[\x03\x90\xA3_\x80\x80\x80aY\x92V[PaZ\x88`\x01\x84\x01a\x10\xA3V[aZ\x9BaZ\x95`\x02a\x11YV[\x91a\x11YV[\x14\x15aY\x8DV[aZ\xAB\x90aX#V[aY\x19V[PPPPV[PPPPV[``\x90V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11aZ\xD9W` \x80\x91\x02\x01\x90V[a\x08\xC3V[\x90aZ\xF0aZ\xEB\x83aZ\xC1V[a\x16\xBCV[\x91\x82RV[aZ\xFF`\x80a\x16\xBCV[\x90V[\x90a[ia[``\x03a[\x13aZ\xF5V[\x94a[*a[\"_\x83\x01a\t\0V[_\x88\x01aN\xC5V[a[Ba[9`\x01\x83\x01a\t>V[` \x88\x01aF\xE7V[a[Za[Q`\x02\x83\x01a\t>V[`@\x88\x01aF\xE7V[\x01a\teV[``\x84\x01aN\xC8V[V[a[t\x90a[\x02V[\x90V[\x90a[\x81\x82a\x07\x92V[a[\x8A\x81aZ\xDEV[\x92a[\x98` \x85\x01\x91a\x07\x96V[_\x91[\x83\x83\x10a[\xA8WPPPPV[`\x04` `\x01\x92a[\xB8\x85a[kV[\x81R\x01\x92\x01\x92\x01\x91\x90a[\x9BV[a[\xCF\x90a[wV[\x90V[a[\xE9a[\xEE\x91a[\xE1aZ\xBCV[P`\x08a\x07hV[a[\xC6V[\x90V[a\\\x1F\x90a\\\x1Aa\\\x15a\\\x0Ea\\\t\x84`\x06a34V[a3JV[3\x90ad\xE4V[a5\x1BV[a\\zV[V[_\x7FCannot go offline while slashed\0\x91\x01RV[a\\U`\x1F` \x92a\t\xD5V[a\\^\x81a\\!V[\x01\x90V[a\\w\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra\\HV[\x90V[a\\\x98a\\\x93a\\\x8C`\x03\x84\x90a\x0F\xC8V[3\x90a\x10\x12V[aM\x1DV[\x90a\\\xA5`\x01\x83\x01a\x10\xA3V[\x91\x82a\\\xBAa\\\xB4`\x03a\x11YV[\x91a\x11YV[\x14a]@Wa\\\xCE\x90`\x01`\x04\x91\x01a3\x81V[a\\\xECa\\\xE5a\\\xE0`\x04\x84\x90a34V[a3JV[3\x90am\x16V[P\x903\x90\x91`\x04a]&a] \x7F\"\x88$\xB8l%di\x12_R\\\xE1\x8Cl-\n\x9E\x13=\x13\xB8\xECz,\x96\xA1\x93\xB0\xC2\x8A\t\x93a\x07LV[\x93a\x10\x06V[\x93a];a]2a\x03\xA2V[\x92\x83\x92\x83aR~V[\x03\x90\xA3V[a]Ha\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a]^`\x04\x82\x01a\\bV[\x03\x90\xFD[a]k\x90a[\xF1V[V[\x90\x91\x82a]}\x81a]\x84\x93a\x1D3V[\x80\x93a\x17\x1DV[\x01\x90V[a]\x99\x90` \x94\x93a]\xA0\x93a]mV[\x80\x92a\x1DdV[\x01\x90V[\x90\x91a]\xBB\x90a]\xB2a\x03\xA2V[\x93\x84\x93\x84a]\x88V[\x03\x90 \x90V[\x90\x91a]\xCC\x92a]\xA4V[\x90V[\x92a]\xF4a]\xFC\x93\x92a]\xEFa^\x01\x96a]\xE7a'\xAEV[P`\ta\x1D\x07V[a\x1D\x1DV[\x91\x90\x91a]\xC1V[a\t>V[\x90V[a^\x0CaJ\xADV[Pa^\x17`\x01a%\xBDV[\x90V[a^$\x90Qa\x11YV[\x90V[\x90V[a^>a^9a^C\x92a^'V[a\x07IV[a\x05TV[\x90V[` \x7Fl\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x7FOperator not eligible for remova_\x82\x01R\x01RV[a^\xA0`!`@\x92a\t\xD5V[a^\xA9\x81a^FV[\x01\x90V[a^\xC2\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra^\x93V[\x90V[\x15a^\xCCWV[a^\xD4a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a^\xEA`\x04\x82\x01a^\xADV[\x03\x90\xFD[\x90a_\x9Fa_\x9Aa_\xA4\x933a_\x1Fa_\x19a_\x14a_\x0F`\x07\x86\x90a\x13\xC5V[a%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14\x80\x15a`]W[a_0\x90aT\x8BV[a_Na_Ia_B`\x03\x84\x90a\x0F\xC8V[\x86\x90a\x10\x12V[aG\xA0V[a_Z``\x82\x01a^\x1AV[a_ma_g`\x03a\x11YV[\x91a\x11YV[\x03a_\xA7W[Pa_\x92a_\x8Ba_\x86`\x05\x84\x90a34V[a3JV[\x85\x90am\x16V[P`\x04a34V[a3JV[am\x16V[PV[a`#\x90a_\xF7a_\xE7a_\xBA\x85ac~V[a_\xE1a_\xDC` a_\xD5a_\xD0_\x86\x01aH\xCDV[a5{V[\x93\x01aH\xA4V[aH\xDAV[\x90a(\xF8V[a_\xF1`\na^*V[\x90a(\xF8V[a`\x02_\x83\x01a>\xADV[a`\x14a`\x0E_a,\xC2V[\x91a\x05TV[\x11\x91\x82a`)W[PPa^\xC5V[_a_sV[a`T\x91\x92Pa`Ha`N\x91a`B_B\x92\x01a>\xADV[\x90a5\xD6V[\x92a\x05TV[\x91a\x05TV[\x10\x15_\x80a`\x1CV[Pa_03a`{a`ua`paJ\xB1V[a\x03\xEFV[\x91a\x03\xEFV[\x14\x90Pa_'V[\x90a`\xADa`\xB2\x91a`\x93a;\"V[Pa`\xA8a`\xA0\x85ac~V[\x94`\x03a\x0F\xC8V[a\x10\x12V[aG\xA0V[a`\xBD_\x82\x01a>\xADV[a`\xCFa`\xC9_a,\xC2V[\x91a\x05TV[\x14aa\nWaa\0a`\xFB_a`\xF4aa\x06\x94a`\xEE\x83B\x92\x01a>\xADV[\x90a5\xD6V[\x94\x01aH\xCDV[a5{V[\x91a\x05TV[\x10\x90V[PP_\x90V[aa!\x90aa\x1Cad\x96V[aa#V[V[aa.\x81`\x01a&\x9AV[aa6aJ\xB1V[\x90aajaad\x7F8\xD1k\x8C\xAC\"\xD9\x9F\xC7\xC1$\xB9\xCD\r\xE2\xD3\xFA\x1F\xAE\xF4 \xBF\xE7\x91\xD8\xC3b\xD7e\xE2'\0\x93a\x10\x06V[\x91a\x10\x06V[\x91aasa\x03\xA2V[\x80aa}\x81a\x04KV[\x03\x90\xA3V[aa\x8B\x90aa\x10V[V[_aa\xCCaa\xD2\x93aa\xC43aa\xBEaa\xB8aa\xB3aa\xAE`\x07\x8A\x90a\x13\xC5V[a%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14a(5V[\x92`\x02a\"\x87V[\x01aV\x03V[V[_\x7FNot registered\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[ab\x08`\x0E` \x92a\t\xD5V[ab\x11\x81aa\xD4V[\x01\x90V[ab*\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Raa\xFBV[\x90V[\x15ab4WV[abV[an\x8Can\x86_a,\xC2V[\x91a\x05TV[\x14\x15\x90V[_\x90V[_\x90V[\x90V[an\xB0an\xABan\xB5\x92an\x99V[a\x07IV[a\x05TV[\x90V[_\x90V[\x91\x90\x91an\xC7aJ\xADV[Pan\xD0an\x91V[Pan\xD9an\x95V[Pan\xE3\x83a6hV[an\xF6an\xF0`Aan\x9CV[\x91a\x05TV[\x14_\x14ao=Wao6\x91\x92ao\nan\x95V[Pao\x13an\x95V[Pao\x1Can\xB8V[P` \x81\x01Q```@\x83\x01Q\x92\x01Q_\x1A\x90\x91\x92ay\xB0V[\x91\x92\x90\x91\x90V[PaoG_a%\xE9V[\x90ao[aoV`\x02\x94a6hV[ad=V[\x91\x92\x91\x90V[`\x04\x11\x15aokWV[a\x116V[\x90aoz\x82aoaV[V[\x80ao\x8Fao\x89_aopV[\x91aopV[\x14_\x14ao\x9AWPPV[\x80ao\xAEao\xA8`\x01aopV[\x91aopV[\x14_\x14ao\xD1W_c\xF6E\xEE\xDF`\xE0\x1B\x81R\x80ao\xCD`\x04\x82\x01a\x04KV[\x03\x90\xFD[\x80ao\xE5ao\xDF`\x02aopV[\x91aopV[\x14_\x14ap\x13Wap\x0Fao\xF8\x83aj\xE6V[_\x91\x82\x91c\xFC\xE6\x98\xF7`\xE0\x1B\x83R`\x04\x83\x01a\x05dV[\x03\x90\xFD[ap&ap `\x03aopV[\x91aopV[\x14ap.WPV[apI\x90_\x91\x82\x91c5\xE2\xF3\x83`\xE2\x1B\x83R`\x04\x83\x01a\x0F\x11V[\x03\x90\xFD[apaap\\apf\x92a\x13\x0EV[a\x07IV[a\x04\xAFV[\x90V[apuap{\x91a\x03\xB4V[\x91a\x03\xB4V[\x90\x03\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11ap\x8FWV[a(\xE4V[_\x7FProtocol violation reported\0\0\0\0\0\x91\x01RV[ap\xC8`\x1B` \x92a\t\xD5V[ap\xD1\x81ap\x94V[\x01\x90V[ap\xEA\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Rap\xBBV[\x90V[\x93PP\x92Paq\x05ap\xFF`\xC8apMV[\x91a\x04\xAFV[\x10\x15aq\x10W[PPV[aq\x19Ba5\x97V[aq7aq2aq+`\x0C\x85\x90aG\xD8V[\x85\x90aG\xEEV[a\x10IV[\x80aqJaqD_aX?V[\x91a\x03\xB4V[\x14\x90\x81\x15aq\xD0W[Paq_W[Paq\x0CV[aq~\x90aqyaqr`\x0C\x85\x90aG\xD8V[\x85\x90aG\xEEV[aM@V[\x90aq\xB2aq\xAC\x7F\x1E)\t\xCFE\xD7\x0C\xF0\x03\xF34\xB7<\x933\x0C\xE7\xE5rx-\xFC\x82\xFA\xB7\x9D\xEB\x88U\xA7\xC7\x91\x93a\x07LV[\x91a\x10\x06V[\x91aq\xBBa\x03\xA2V[\x80aq\xC5\x81ap\xD5V[\x03\x90\xA3_\x80\x80aqYV[aq\xDB\x91P\x82apiV[aq\xF4aq\xEEaq\xE9a\x0FzV[a\x03\xB4V[\x91a\x03\xB4V[\x10\x15_aqSV[\x90V[ar\x13ar\x0Ear\x18\x92aq\xFCV[a\x07IV[a\x05TV[\x90V[\x90\x92\x91\x92ar0ar+\x82a\x16\xFAV[a\x16\xBCV[\x93\x81\x85R` \x85\x01\x90\x82\x84\x01\x11arLWarJ\x92a\t\xDEV[V[a\x16\xF6V[\x90\x80`\x1F\x83\x01\x12\x15aroW\x81` arl\x93Q\x91\x01ar\x1BV[\x90V[a\x05\xAFV[\x90PQ\x90ar\x81\x82a\x06\xF9V[V[\x91\x90\x91`@\x81\x84\x03\x12ar\xD6War\x9A`@a\x16\xBCV[\x92_\x82\x01Q\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11ar\xD1War\xBE\x82ar\xCA\x94\x83\x01arQV[_\x86\x01R` \x01artV[` \x83\x01RV[a\x16\xF2V[a\x16\xEEV[\x92\x91\x90ar\xEFar\xEA\x82a\x16\xD1V[a\x16\xBCV[\x93\x81\x85R` \x80\x86\x01\x92\x02\x81\x01\x91\x83\x83\x11asFW\x81\x90[\x83\x82\x10as\x15WPPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11asAW` \x91as6\x87\x84\x93\x87\x01ar\x83V[\x81R\x01\x91\x01\x90as\x07V[a\x05\xAFV[a\x05\xB7V[\x90\x80`\x1F\x83\x01\x12\x15asiW\x81` asf\x93Q\x91\x01ar\xDBV[\x90V[a\x05\xAFV[\x90` \x82\x82\x03\x12as\x9EW_\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11as\x99Was\x96\x92\x01asKV[\x90V[a\x03\xB0V[a\x03\xACV[` \x91\x81R\x01\x90V[\x91\x90as\xC6\x81as\xBF\x81as\xCB\x95as\xA3V[\x80\x95a\x17\x1DV[a\x08\xB9V[\x01\x90V[\x90\x91as\xE6\x92` \x83\x01\x92_\x81\x85\x03\x91\x01Ras\xACV[\x90V[as\xF3`2a\x15QV[\x90V[\x94\x93\x91``\x91at7\x94at\"at/\x93at\x18`\x80\x8B\x01\x94_\x8C\x01\x90a\x0C!V[` \x8A\x01\x90a\x0C\xBCV[\x87\x82\x03`@\x89\x01Ra\x0E(V[\x94\x01\x90a\x05WV[V[\x91atE\x81\x85\x90a-~V[atWatQ_a,\xC2V[\x91a\x05TV[\x14au\xF1Watg\x81\x85\x90a-~V[at{atua\xC3Paq\xFFV[\x91a\x05TV[\x11au\xEBW_at\x89a9xV[\x94at\x930a<\x85V[at\xB5c1\xE3\xBD\x1B\x94\x92\x94at\xC0at\xA9a\x03\xA2V[\x96\x87\x95\x86\x94\x85\x94aJ\xF0V[\x84R`\x04\x84\x01as\xCFV[\x03\x91Z\xFA\x80\x91_\x92au\xC7W[P\x15_\x14au\xBEWP`\x01au\xB9W[at\xE6\x83a\r\x97V[at\xFFat\xF9at\xF4as\xE9V[a\x05TV[\x91a\x05TV[\x11_\x14au\xABWau\x0Eas\xE9V[[au\x180a<\x85V[\x90ce\xA6\x93n\x93\x92\x94\x90\x82;\x15au\xA6W_\x94auS\x86\x92auH\x94auau\xDC\x81\x83a\x08\xD7V[\x81\x01\x90asnV[\x90_at\xCDV[PPPPV[PPPPV[_av\x0B\x91av\x04a'\xAEV[P\x01am\xDFV[\x90V[_R` _ \x90V[av \x81am\xDFV[\x82\x10\x15av:Wav2`\x01\x91av\x0EV[\x91\x02\x01\x90_\x90V[a\x07~V[avO\x90`\x08avT\x93\x02a\x0CxV[a\x10\xB0V[\x90V[\x90avb\x91Tav?V[\x90V[av\x83\x91_av}\x92avvan\x95V[P\x01av\x17V[\x90avWV[\x90V[av\x8F_a%\xBDV[av\x99\x82_a&\x9AV[\x90av\xCDav\xC7\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x93a\x10\x06V[\x91a\x10\x06V[\x91av\xD6a\x03\xA2V[\x80av\xE0\x81a\x04KV[\x03\x90\xA3V[av\xEDa;\"V[Paw\x15aw\x0Faw\x08aw\x03`\x06\x85\x90a34V[a3JV[\x84\x90ad\xE4V[\x15a\x04\xC2V[aw\xB7Waw5\x91aw+aw0\x92`\x03a\x0F\xC8V[a\x10\x12V[aG\xA0V[aw@_\x82\x01a>\xADV[awRawL_a,\xC2V[\x91a\x05TV[\x14\x80\x15aw\x91W[aw\x8BWaw\x80awzaw\x86\x92awt_B\x92\x01a>\xADV[\x90a5\xD6V[\x92a\x05TV[\x91a\x05TV[\x10\x15\x90V[PP_\x90V[Paw\x9E``\x82\x01a^\x1AV[aw\xB1aw\xAB`\x03a\x11YV[\x91a\x11YV[\x14awZV[PPP_\x90V[aw\xD2aw\xCDaw\xD7\x92aUUV[a\x07IV[a\x05TV[\x90V[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[ax\0\x91aw\xFAan\x95V[\x91am\x88V[V[ax\x0B\x81am\\V[\x80\x15ax,W`\x01\x90\x03\x90ax)ax#\x83\x83am`V[\x90aw\xEEV[UV[aw\xDAV[ax9a;\"V[PaxPaxK`\x01\x83\x01\x84\x90am\xE3V[a\t>V[\x90\x81axdax^_a,\xC2V[\x91a\x05TV[\x14\x15_\x14ay0Wax\xE2\x92`\x01ax\xDD\x92\x84ax\x8B_\x96ax\x85\x85aw\xBEV[\x90a5\xD6V[ax\xA8ax\x99\x88\x85\x01am\xDFV[ax\xA2\x86aw\xBEV[\x90a5\xD6V[\x81ax\xBBax\xB5\x83a\x05TV[\x91a\x05TV[\x03ax\xE7W[PPPax\xD7ax\xD2\x86\x83\x01amPV[ax\x02V[\x01am\xE3V[a)\xBFV[`\x01\x90V[ay(\x92ay\x1Aay\x06ay\0ay#\x94\x8C\x89\x01av\x17V[\x90avWV[\x93ay\x14\x85\x91\x8C\x89\x01av\x17V[\x90am\x88V[\x91\x85\x85\x01am\xE3V[a0\x18V[_\x80\x80ax\xC1V[PPP_\x90V[\x90V[ayNayIayS\x92ay7V[a\x07IV[a\x05TV[\x90V[ay\x8Bay\x92\x94ay\x81``\x94\x98\x97\x95ayw`\x80\x86\x01\x9A_\x87\x01\x90a\x0F\x04V[` \x85\x01\x90a\x11)V[`@\x83\x01\x90a\x0F\x04V[\x01\x90a\x0F\x04V[V[ay\xA8ay\xA3ay\xAD\x92a%\xCAV[a&wV[a\x0F\x01V[\x90V[\x93\x92\x93ay\xBBaJ\xADV[Pay\xC4an\x91V[Pay\xCDan\x95V[Pay\xD7\x85aj\xE6V[az\taz\x03\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0ay:V[\x91a\x05TV[\x11az\x96W\x90az,` \x94\x95_\x94\x93\x92\x93az#a\x03\xA2V[\x94\x85\x94\x85ayVV[\x83\x80R\x03\x90`\x01Z\xFA\x15az\x91WazD_Qa&wV[\x80az_azYazT_a%\xE9V[a\x03\xEFV[\x91a\x03\xEFV[\x14azuW_\x91azo_ay\x94V[\x91\x92\x91\x90V[Paz\x7F_a%\xE9V[`\x01\x91az\x8B_ay\x94V[\x91\x92\x91\x90V[aK(V[PPPaz\xA2_a%\xE9V[\x90`\x03\x92\x91\x92\x91\x90V\xFE\xA1dsolcC\0\x08\x1A\0\n", + b"`\xC0`@R4a\0eWa\0\x1Aa\0\x14a\x019V[\x90a\x02\x16V[a\0\"a\0jV[a{\x10a\x04\xD3\x829`\x80Q\x81\x81\x81a\x0E\xDF\x01Ra96\x01R`\xA0Q\x81\x81\x81a\x14`\x01R\x81\x81a&\xCD\x01R\x81\x81a47\x01R\x81\x81aWN\x01Rac\x0B\x01Ra{\x10\x90\xF3[a\0pV[`@Q\x90V[_\x80\xFD[`\x1F\x80\x19\x91\x01\x16\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x90a\0\x9C\x90a\0tV[\x81\x01\x90\x81\x10`\x01\x80`@\x1B\x03\x82\x11\x17a\0\xB4W`@RV[a\0~V[\x90a\0\xCCa\0\xC5a\0jV[\x92\x83a\0\x92V[V[_\x80\xFD[`\x01\x80`\xA0\x1B\x03\x16\x90V[a\0\xE6\x90a\0\xD2V[\x90V[a\0\xF2\x81a\0\xDDV[\x03a\0\xF9WV[_\x80\xFD[\x90PQ\x90a\x01\n\x82a\0\xE9V[V[\x91\x90`@\x83\x82\x03\x12a\x014W\x80a\x01(a\x011\x92_\x86\x01a\0\xFDV[\x93` \x01a\0\xFDV[\x90V[a\0\xCEV[a\x01Wa\x7F\xE3\x808\x03\x80a\x01L\x81a\0\xB9V[\x92\x839\x81\x01\x90a\x01\x0CV[\x90\x91V[\x90V[a\x01ra\x01ma\x01w\x92a\0\xD2V[a\x01[V[a\0\xD2V[\x90V[a\x01\x83\x90a\x01^V[\x90V[a\x01\x8F\x90a\x01zV[\x90V[\x90V[a\x01\x9E\x90a\x01\x92V[\x90RV[\x90V[a\x01\xAE\x90a\x01\xA2V[\x90RV[a\x01\xBB\x90a\0\xDDV[\x90RV[\x90\x95\x94\x92a\x02\n\x94a\x01\xF9a\x02\x03\x92a\x01\xEF`\x80\x96a\x01\xE5`\xA0\x88\x01\x9C_\x89\x01\x90a\x01\x95V[` \x87\x01\x90a\x01\x95V[`@\x85\x01\x90a\x01\x95V[``\x83\x01\x90a\x01\xA5V[\x01\x90a\x01\xB2V[V[` \x01\x90V[Q\x90V[\x90a\x02 \x90a\x02\xD3V[`\xA0R\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0Fa\x02\xBB\x7F6\xFF\xC2X\xC8e\x19:\xE1\x0C<\xF6@E\n\xB7r\xFD\xB8\xDA\x1D\xFC\xAExb\xAD\x12\x05\xA5V\x7FL\x91a\x02\xAC\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6Fa\x02\x970a\x01\x86V[\x91a\x02\xA0a\0jV[\x96\x87\x95` \x87\x01a\x01\xBFV[` \x82\x01\x81\x03\x82R\x03\x82a\0\x92V[a\x02\xCDa\x02\xC7\x82a\x02\x12V[\x91a\x02\x0CV[ `\x80RV[a\x02\xDC\x90a\x03\x1EV[V[\x90V[a\x02\xF5a\x02\xF0a\x02\xFA\x92a\x02\xDEV[a\x01[V[a\0\xD2V[\x90V[a\x03\x06\x90a\x02\xE1V[\x90V[\x91\x90a\x03\x1C\x90_` \x85\x01\x94\x01\x90a\x01\xB2V[V[\x80a\x039a\x033a\x03._a\x02\xFDV[a\0\xDDV[\x91a\0\xDDV[\x14a\x03IWa\x03G\x90a\x03\xE7V[V[a\x03la\x03U_a\x02\xFDV[_\x91\x82\x91c\x1EO\xBD\xF7`\xE0\x1B\x83R`\x04\x83\x01a\x03\tV[\x03\x90\xFD[\x1B\x90V[\x91\x90`\x08a\x03\x94\x91\x02\x91a\x03\x8E`\x01\x80`\xA0\x1B\x03\x84a\x03pV[\x92a\x03pV[\x91\x81\x19\x16\x91\x16\x17\x90V[a\x03\xA7\x90a\x01zV[\x90V[\x90V[\x91\x90a\x03\xC3a\x03\xBEa\x03\xCB\x93a\x03\x9EV[a\x03\xAAV[\x90\x83Ta\x03tV[\x90UV[_\x90V[a\x03\xE5\x91a\x03\xDFa\x03\xCFV[\x91a\x03\xADV[V[a\x03\xFB\x90a\x03\xF6_`\x01a\x03\xD3V[a\x04sV[V[_\x1C\x90V[`\x01\x80`\xA0\x1B\x03\x16\x90V[a\x04\x19a\x04\x1E\x91a\x03\xFDV[a\x04\x02V[\x90V[a\x04+\x90Ta\x04\rV[\x90V[_\x1B\x90V[\x90a\x04D`\x01\x80`\xA0\x1B\x03\x91a\x04.V[\x91\x81\x19\x16\x91\x16\x17\x90V[\x90a\x04ca\x04^a\x04j\x92a\x03\x9EV[a\x03\xAAV[\x82Ta\x043V[\x90UV[_\x01\x90V[a\x04|_a\x04!V[a\x04\x86\x82_a\x04NV[\x90a\x04\xBAa\x04\xB4\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x93a\x03\x9EV[\x91a\x03\x9EV[\x91a\x04\xC3a\0jV[\x80a\x04\xCD\x81a\x04nV[\x03\x90\xA3V\xFE`\x80`@R`\x046\x10\x15a\0\x13W[a%#V[a\0\x1D_5a\x03\x9CV[\x80c\x05w\x85P\x14a\x03\x97W\x80c\x07X#o\x14a\x03\x92W\x80c\x0Cviz\x14a\x03\x8DW\x80c\x19\x1C\xBD\x1A\x14a\x03\x88W\x80c\x1E\x8F^\xE5\x14a\x03\x83W\x80c \x81)V\x14a\x03~W\x80c\"\xF1\xEC\x93\x14a\x03yW\x80c+\xF4\xD6\xA7\x14a\x03tW\x80c,\x95v\x88\x14a\x03oW\x80c-\xAE\x18\x85\x14a\x03jW\x80c/K\xD7\xB8\x14a\x03eW\x80c1\xE3\xBD\x1B\x14a\x03`W\x80c6D\xE5\x15\x14a\x03[W\x80c:\xC3\xCB\xE6\x14a\x03VW\x80c>n4\xA7\x14a\x03QW\x80c?\xD6,m\x14a\x03LW\x80c@#Z\x9C\x14a\x03GW\x80cH\xF4\xDA \x14a\x03BW\x80cV\x85\xCFh\x14a\x03=W\x80cV\xC4\xE1}\x14a\x038W\x80cY\xDC\xEA\x12\x14a\x033W\x80cZ\x93m\xC6\x14a\x03.W\x80c\\\xCE\x98\xA6\x14a\x03)W\x80c`vC\x9C\x14a\x03$W\x80c`\xCF\t\x91\x14a\x03\x1FW\x80ca\xD6\xB8l\x14a\x03\x1AW\x80cb\xC7\xE8\xFC\x14a\x03\x15W\x80ce\xA6\x93n\x14a\x03\x10W\x80ck\xFE\x06\xA6\x14a\x03\x0BW\x80cqP\x18\xA6\x14a\x03\x06W\x80cq\xE78\x8C\x14a\x03\x01W\x80cv9\xD2'\x14a\x02\xFCW\x80cy\xBAP\x97\x14a\x02\xF7W\x80c{\x9Fd\xB2\x14a\x02\xF2W\x80c\x81\xBE\xAC.\x14a\x02\xEDW\x80c\x84\xEFs\"\x14a\x02\xE8W\x80c\x8D\xA5\xCB[\x14a\x02\xE3W\x80c\x96hl\x1E\x14a\x02\xDEW\x80c\x9C\xBD\xAE\"\x14a\x02\xD9W\x80c\xAD\xFF\x83\x0C\x14a\x02\xD4W\x80c\xAEG\n\x85\x14a\x02\xCFW\x80c\xB0t\xE9\xDD\x14a\x02\xCAW\x80c\xB9\x9FgY\x14a\x02\xC5W\x80c\xBA\x1F\xB1\x03\x14a\x02\xC0W\x80c\xC1\xEF\x9D\xDF\x14a\x02\xBBW\x80c\xC5\xD9`\xBB\x14a\x02\xB6W\x80c\xCF\xE3GI\x14a\x02\xB1W\x80c\xD5Q\x16,\x14a\x02\xACW\x80c\xDACZ|\x14a\x02\xA7W\x80c\xE3\x0C9x\x14a\x02\xA2W\x80c\xE6\\\xAF\xCB\x14a\x02\x9DW\x80c\xEE\x1C\x03\x90\x14a\x02\x98W\x80c\xF2\xFD\xE3\x8B\x14a\x02\x93W\x80c\xF9\x10\x7F;\x14a\x02\x8EW\x80c\xF9\xF1gb\x14a\x02\x89Wc\xFF\xCF\x08\xF0\x03a\0\x0EWa$\xEFV[a$\xBAV[a$WV[a#\xF7V[a#\xC1V[a#\x8DV[a#XV[a# V[a\"NV[a\"\x19V[a!\xD7V[a!\xA2V[a xV[a DV[a\x1F\xD7V[a\x1F\x9DV[a\x1E\xD2V[a\x1E\x0BV[a\x1C\x82V[a\x1B\xC8V[a\x1B\x95V[a\x1B^V[a\x1A\xC9V[a\x1A\x96V[a\x1A`V[a\x1A*V[a\x19nV[a\x199V[a\x18\xCBV[a\x16\x86V[a\x16V[\x91a\t\xCA`\x03a\t\xC3`\x02\x85\x01a\t>V[\x93\x01a\teV[\x90V[_\x80\xFD[Q\x90V[` \x91\x81R\x01\x90V[\x90\x82_\x93\x92\x82^\x01RV[a\n\x08a\n\x11` \x93a\n\x16\x93a\t\xFF\x81a\t\xD1V[\x93\x84\x80\x93a\t\xD5V[\x95\x86\x91\x01a\t\xDEV[a\x08\xB9V[\x01\x90V[a\n#\x90a\x04\xC2V[\x90RV[a\naa\nh\x94a\nWa\nL``\x95\x99\x98\x96\x99`\x80\x86\x01\x90\x86\x82\x03_\x88\x01Ra\t\xE9V[\x98` \x85\x01\x90a\x05WV[`@\x83\x01\x90a\x05WV[\x01\x90a\n\x1AV[V[4a\n\x9FWa\n\x9Ba\n\x86a\n\x806`\x04a\x07\x1CV[\x90a\trV[\x90a\n\x92\x94\x92\x94a\x03\xA2V[\x94\x85\x94\x85a\n'V[\x03\x90\xF3[a\x03\xA8V[a\n\xAD\x81a\x04\xAFV[\x03a\n\xB4WV[_\x80\xFD[\x90P5\x90a\n\xC5\x82a\n\xA4V[V[\x90\x91\x82`\x1F\x83\x01\x12\x15a\x0B\x01W\x815\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\n\xFCW` \x01\x92`\x01\x83\x02\x84\x01\x11a\n\xF7WV[a\x05\xB7V[a\x05\xB3V[a\x05\xAFV[\x91\x90`\xC0\x83\x82\x03\x12a\x0B\x98Wa\x0B\x1E\x81_\x85\x01a\x03\xD5V[\x92a\x0B,\x82` \x83\x01a\x03\xD5V[\x92a\x0B:\x83`@\x84\x01a\n\xB8V[\x92``\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\x93W\x81a\x0B[\x91\x85\x01a\n\xC7V[\x92\x90\x93a\x0Bk\x83`\x80\x83\x01a\x03\xD5V[\x92`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\x8EWa\x0B\x8A\x92\x01a\n\xC7V[\x90\x91V[a\x03\xB0V[a\x03\xB0V[a\x03\xACV[4a\x0B\xD5Wa\x0B\xBFa\x0B\xB06`\x04a\x0B\x06V[\x96\x95\x90\x95\x94\x91\x94\x93\x92\x93a:\x0FV[a\x0B\xC7a\x03\xA2V[\x80a\x0B\xD1\x81a\x04KV[\x03\x90\xF3[a\x03\xA8V[_\x91\x03\x12a\x0B\xE4WV[a\x03\xACV[\x90V[a\x0C\0a\x0B\xFBa\x0C\x05\x92a\x0B\xE9V[a\x07IV[a\x03\xB4V[\x90V[a\x0C\x13a\x01,a\x0B\xECV[\x90V[a\x0C\x1Ea\x0C\x08V[\x90V[a\x0C*\x90a\x03\xB4V[\x90RV[\x91\x90a\x0CA\x90_` \x85\x01\x94\x01\x90a\x0C!V[V[4a\x0CsWa\x0CS6`\x04a\x0B\xDAV[a\x0Coa\x0C^a\x0C\x16V[a\x0Cfa\x03\xA2V[\x91\x82\x91\x82a\x0C.V[\x03\x90\xF3[a\x03\xA8V[\x1C\x90V[`\x01\x80`\xA0\x1B\x03\x16\x90V[a\x0C\x97\x90`\x08a\x0C\x9C\x93\x02a\x0CxV[a\x0C|V[\x90V[\x90a\x0C\xAA\x91Ta\x0C\x87V[\x90V[a\x0C\xB9`\x0B_\x90a\x0C\x9FV[\x90V[a\x0C\xC5\x90a\x03\xEFV[\x90RV[\x91\x90a\x0C\xDC\x90_` \x85\x01\x94\x01\x90a\x0C\xBCV[V[4a\r\x0EWa\x0C\xEE6`\x04a\x0B\xDAV[a\r\na\x0C\xF9a\x0C\xADV[a\r\x01a\x03\xA2V[\x91\x82\x91\x82a\x0C\xC9V[\x03\x90\xF3[a\x03\xA8V[a\r\x1Ea\x01,a\x0B\xECV[\x90V[a\r)a\r\x13V[\x90V[4a\r\\Wa\r<6`\x04a\x0B\xDAV[a\rXa\rGa\r!V[a\rOa\x03\xA2V[\x91\x82\x91\x82a\x0C.V[\x03\x90\xF3[a\x03\xA8V[\x90` \x82\x82\x03\x12a\r\x92W_\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\r\x8DWa\r\x89\x92\x01a\n\xC7V[\x90\x91V[a\x03\xB0V[a\x03\xACV[Q\x90V[` \x91\x81R\x01\x90V[` \x01\x90V[a\r\xC9a\r\xD2` \x93a\r\xD7\x93a\r\xC0\x81a\t\xD1V[\x93\x84\x80\x93a\x08\x0EV[\x95\x86\x91\x01a\t\xDEV[a\x08\xB9V[\x01\x90V[a\r\xE4\x90a\x05TV[\x90RV[\x90a\x0E\x12\x90` \x80a\x0E\x07`@\x84\x01_\x87\x01Q\x85\x82\x03_\x87\x01Ra\r\xAAV[\x94\x01Q\x91\x01\x90a\r\xDBV[\x90V[\x90a\x0E\x1F\x91a\r\xE8V[\x90V[` \x01\x90V[\x90a\x0EV[\x91a\x11\0`\x01\x83\x01a\x10IV[\x91a\x11\r`\x01\x82\x01a\x10vV[\x91a\x11&`\x02a\x11\x1F`\x01\x85\x01a\x10\xA3V[\x93\x01a\x10\xC7V[\x90V[a\x112\x90a\x04\xAFV[\x90RV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x05\x11\x15a\x11TWV[a\x116V[\x90a\x11c\x82a\x11JV[V[a\x11n\x90a\x11YV[\x90V[a\x11z\x90a\x11eV[\x90RV[\x90\x95\x94\x92a\x11\xC9\x94a\x11\xB8a\x11\xC2\x92a\x11\xAE`\x80\x96a\x11\xA4`\xA0\x88\x01\x9C_\x89\x01\x90a\x05WV[` \x87\x01\x90a\x0C!V[`@\x85\x01\x90a\x11)V[``\x83\x01\x90a\x11qV[\x01\x90a\x0F\x04V[V[4a\x12\0Wa\x11\xFCa\x11\xE7a\x11\xE16`\x04a\x04\x1EV[\x90a\x10\xD4V[\x91a\x11\xF3\x95\x93\x95a\x03\xA2V[\x95\x86\x95\x86a\x11~V[\x03\x90\xF3[a\x03\xA8V[4a\x125Wa\x121a\x12 a\x12\x1B6`\x04a\x04\x84V[a:uV[a\x12(a\x03\xA2V[\x91\x82\x91\x82a\x05dV[\x03\x90\xF3[a\x03\xA8V[Q\x90V[` \x91\x81R\x01\x90V[` \x01\x90V[a\x12V\x90a\x03\xEFV[\x90RV[\x90a\x12g\x81` \x93a\x12MV[\x01\x90V[` \x01\x90V[\x90a\x12\x8Ea\x12\x88a\x12\x81\x84a\x12:V[\x80\x93a\x12>V[\x92a\x12GV[\x90_[\x81\x81\x10a\x12\x9EWPPP\x90V[\x90\x91\x92a\x12\xB7a\x12\xB1`\x01\x92\x86Qa\x12ZV[\x94a\x12kV[\x91\x01\x91\x90\x91a\x12\x91V[a\x12\xD6\x91` \x82\x01\x91_\x81\x84\x03\x91\x01Ra\x12qV[\x90V[4a\x13\tWa\x13\x05a\x12\xF4a\x12\xEF6`\x04a\x04\x84V[a;/V[a\x12\xFCa\x03\xA2V[\x91\x82\x91\x82a\x12\xC1V[\x03\x90\xF3[a\x03\xA8V[\x90V[a\x13%a\x13 a\x13*\x92a\x13\x0EV[a\x07IV[a\x05TV[\x90V[a\x137`\xC8a\x13\x11V[\x90V[a\x13Ba\x13-V[\x90V[4a\x13uWa\x13U6`\x04a\x0B\xDAV[a\x13qa\x13`a\x13:V[a\x13ha\x03\xA2V[\x91\x82\x91\x82a\x05dV[\x03\x90\xF3[a\x03\xA8V[\x91\x90a\x13\x8D\x90_` \x85\x01\x94\x01\x90a\n\x1AV[V[4a\x13\xC0Wa\x13\xBCa\x13\xABa\x13\xA56`\x04a\x04\x1EV[\x90a;\xCFV[a\x13\xB3a\x03\xA2V[\x91\x82\x91\x82a\x13zV[\x03\x90\xF3[a\x03\xA8V[\x90a\x13\xCF\x90a\x07LV[_R` R`@_ \x90V[a\x13\xF1\x90a\x13\xEC`\x07\x91_\x92a\x13\xC5V[a\x0C\x9FV[\x90V[4a\x14$Wa\x14 a\x14\x0Fa\x14\n6`\x04a\x04\x84V[a\x13\xDBV[a\x14\x17a\x03\xA2V[\x91\x82\x91\x82a\x0C\xC9V[\x03\x90\xF3[a\x03\xA8V[4a\x14YWa\x14Ua\x14Da\x14?6`\x04a\x04\x84V[aV[\x90V[_\x7FNot service owner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a(\x10`\x11` \x92a\t\xD5V[a(\x19\x81a'\xDCV[\x01\x90V[a(2\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra(\x03V[\x90V[\x15a(\x90a\x07LV[_R` R`@_ \x90V[\x90V[a3V\x90a\x0F\x01V[\x90V[a3b\x90a\t\"V[\x90V[\x91\x90a3{a3va3\x83\x93a3MV[a3YV[\x90\x83Ta)YV[\x90UV[_\x90V[a3\x9D\x91a3\x97a3\x87V[\x91a3eV[V[_`\x02a3\xBE\x92a3\xB2\x83\x80\x83\x01a)\xBFV[\x82`\x01\x82\x01U\x01a3\x8BV[V[\x90_\x03a3\xD2Wa3\xD0\x90a3\x9FV[V[a+\xA3V[`H\x1B\x90V[\x90a3\xF2i\xFF\0\0\0\0\0\0\0\0\0\x91a3\xD7V[\x91\x81\x19\x16\x91\x16\x17\x90V[a4\x05\x90a\x11YV[\x90V[\x90V[\x90a4 a4\x1Ba4'\x92a3\xFCV[a4\x08V[\x82Ta3\xDDV[\x90UV[a4g3a4aa4[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x03\xEFV[\x91a\x03\xEFV[\x14a%\x80V[a4\x8C\x82a4\x85a4\x7Fa4z_a%\xE9V[a\x03\xEFV[\x91a\x03\xEFV[\x14\x15a3\x0BV[a4\xB2a4\xADa4\xA6a4\xA1`\x06\x85\x90a34V[a3JV[\x84\x90ae\x05V[a&NV[a4\xD1_a4\xCCa4\xC5`\x03\x85\x90a\x0F\xC8V[\x85\x90a\x10\x12V[a3\xC0V[a4\xF4`\x02`\x01a4\xEEa4\xE7`\x03\x86\x90a\x0F\xC8V[\x86\x90a\x10\x12V[\x01a4\x0BV[\x90a5(a5\"\x7F\x8E-\x88yZ\xB2\xB8\xE1\x83\xCB\x18\xF4oH\x13\x91?\xC8\xAA\xFCK\x93a\x07LV[\x91a\x10\x06V[\x91a51a\x03\xA2V[\x80a5;\x81a\x04KV[\x03\x90\xA3V[a5Q\x90a5Lae?V[a5SV[V[a5^\x90`\x0Ba&\x9AV[V[a5i\x90a5@V[V[_\x7FNot registered operator\0\0\0\0\0\0\0\0\0\x91\x01RV[a5\x9F`\x17` \x92a\t\xD5V[a5\xA8\x81a5kV[\x01\x90V[a5\xC1\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra5\x92V[\x90V[\x15a5\xCBWV[a5\xD3a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a5\xE9`\x04\x82\x01a5\xACV[\x03\x90\xFD[\x90a6\"\x97\x96\x95\x94\x93\x92\x91a6\x1Da6\x18a6\x11a6\x0C\x84`\x06a34V[a3JV[3\x90ae\x8DV[a5\xC4V[a8cV[V[a68a63a6=\x92a\x03\xB4V[a\x07IV[a\x05TV[\x90V[a6Ta6Oa6Y\x92a\x05TV[a\x07IV[a\x03\xB4V[\x90V[\x91` a6}\x92\x94\x93a6v`@\x82\x01\x96_\x83\x01\x90a\x0C!V[\x01\x90a\x0C!V[V[a6\x8Ea6\x94\x91\x93\x92\x93a\x05TV[\x92a\x05TV[\x82\x03\x91\x82\x11a6\x9FWV[a(\xE4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a6\xC2Wa6\xBE` \x91a\x08\xB9V[\x01\x90V[a\x08\xC3V[\x90\x92\x91\x92a6\xDCa6\xD7\x82a6\xA4V[a\x16\xBCV[\x93\x81\x85R` \x85\x01\x90\x82\x84\x01\x11a6\xF8Wa6\xF6\x92a\x17\x1DV[V[a\x16\xF6V[a7\x08\x916\x91a6\xC7V[\x90V[` \x01\x90V[Q\x90V[\x94\x92\x90\x97\x96\x95\x93\x91`\xE0\x86\x01\x98_\x87\x01a7.\x91a\x0F\x04V[` \x86\x01a7;\x91a\x0C\xBCV[`@\x85\x01a7H\x91a\x0C!V[``\x84\x01a7U\x91a\x0C!V[`\x80\x83\x01a7b\x91a\x11)V[`\xA0\x82\x01a7o\x91a\x0F\x04V[`\xC0\x01a7{\x91a\x0C!V[V[_a\x19\x01`\xF0\x1B\x91\x01RV[a7\x95`\x02\x80\x92a\x1D3V[a7\x9E\x81a7}V[\x01\x90V[\x90V[a7\xB1a7\xB6\x91a\x0F\x01V[a7\xA2V[\x90RV[` \x80\x93\x92a7\xD5a7\xCEa7\xDD\x94a7\x89V[\x80\x92a7\xA5V[\x01\x80\x92a7\xA5V[\x01\x90V[_\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a8\x15`\x11` \x92a\t\xD5V[a8\x1E\x81a7\xE1V[\x01\x90V[a87\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra8\x08V[\x90V[\x15a8AWV[a8Ia\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a8_`\x04\x82\x01a8\"V[\x03\x90\xFD[\x91\x92\x93\x94\x97\x96\x90\x95\x97\x80a8\x7Fa8yBa\x05TV[\x91a6$V[\x11a9\xE7Wa8\x97Ba8\x91\x83a6$V[\x90a6\x7FV[a8\xB0a8\xAAa8\xA5a\r\x13V[a6$V[\x91a\x05TV[\x11a9\xBFWa9\xBD\x97\x98a9\x94a9\xB2\x93\x85a9\x1E\x8Aa9\x0F\x8Da9\x9A\x98\x8D\x8Da8\xE6a8\xDBa$\x8BV[\x963\x99\x95\x92\x93a6\xFDV[a8\xF8a8\xF2\x82a7\x11V[\x91a7\x0BV[ \x92\x93a9\x03a\x03\xA2V[\x98\x89\x97` \x89\x01a7\x15V[` \x82\x01\x81\x03\x82R\x03\x82a\x08\xD7V[a90a9*\x82a7\x11V[\x91a7\x0BV[ a9{\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a9la9`a\x03\xA2V[\x93\x84\x92` \x84\x01a7\xBAV[` \x82\x01\x81\x03\x82R\x03\x82a\x08\xD7V[a9\x8Da9\x87\x82a7\x11V[\x91a7\x0BV[ \x92a6\xFDV[\x90ae\xC7V[a9\xACa9\xA63a\x03\xEFV[\x91a\x03\xEFV[\x14a8:V[\x933\x91\x92\x93\x94agFV[V[a9\xC8Ba6@V[\x90a9\xE3_\x92\x83\x92c\x185[u`\xE2\x1B\x84R`\x04\x84\x01a6\\V[\x03\x90\xFD[a9\xF0Ba6@V[\x90a:\x0B_\x92\x83\x92cW\xEA\x02\xE9`\xE0\x1B\x84R`\x04\x84\x01a6\\V[\x03\x90\xFD[\x90a:\x1F\x97\x96\x95\x94\x93\x92\x91a5\xEDV[V[``\x90V[\x90` \x82\x82\x03\x12a:VW_\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a:QWa:N\x92\x01a\x18IV[\x90V[a\x03\xB0V[a\x03\xACV[\x90a:r\x91a:ha:!V[P\x90\x81\x01\x90a:&V[\x90V[a:\x94a:\x8Fa:\x99\x92a:\x87a'\xAEV[P`\x05a34V[a3JV[akXV[\x90V[``\x90V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a:\xB9W` \x80\x91\x02\x01\x90V[a\x08\xC3V[\x90a:\xD0a:\xCB\x83a:\xA1V[a\x16\xBCV[\x91\x82RV[6\x907V[\x90a:\xFFa:\xE7\x83a:\xBEV[\x92` \x80a:\xF5\x86\x93a:\xA1V[\x92\x01\x91\x03\x90a:\xD5V[V[\x90a;\x0B\x82a\x12:V[\x81\x10\x15a;\x1CW` \x80\x91\x02\x01\x01\x90V[a\x07~V[\x90a;+\x90a\x03\xEFV[\x90RV[\x90a;8a:\x9CV[Pa;Ua;Pa;K`\x04\x85\x90a34V[a3JV[akXV[\x91a;_\x83a:\xDAV[\x91a;i_a,\xC2V[[\x80a;}a;w\x87a\x05TV[\x91a\x05TV[\x10\x15a;\xC4Wa;\xBF\x90a;\xBAa;\xA8a;\xA1a;\x9C`\x04\x88\x90a34V[a3JV[\x83\x90ak\xA7V[a;\xB5\x87\x91\x84\x90\x92a;\x01V[a;!V[a,\xDEV[a;jV[P\x92PP\x90V[_\x90V[\x90a;\xD8a;\xCBV[Pa;\xFA`\x01a;\xF4a;\xED`\x03\x86\x90a\x0F\xC8V[\x84\x90a\x10\x12V[\x01a\x10\xA3V[a<\x0Ca<\x06_a\x11YV[\x91a\x11YV[\x14\x91\x82\x15a<\x1AW[PP\x90V[a<;\x92P`\x01\x91a<0a<5\x92`\x03a\x0F\xC8V[a\x10\x12V[\x01a\x10\xA3V[a\x1Aa>\x02\x83a=\xD9V[\x92` \x80a>\x10\x86\x93a=\xBCV[\x92\x01\x91\x03\x90a=\xF0V[V[\x90a>&\x82a\r\x97V[\x81\x10\x15a>7W` \x80\x91\x02\x01\x01\x90V[a\x07~V[\x90V[Q\x90V[\x90a>M\x82a>?V[\x81\x10\x15a>^W` \x80\x91\x02\x01\x01\x90V[a\x07~V[\x90a>m\x90a\x0F\x01V[\x90RV[``\x90V[\x90V[` \x91\x81R\x01\x90V[\x90_\x92\x91\x80T\x90a>\x9Ca>\x95\x83a\x07\xE4V[\x80\x94a>yV[\x91`\x01\x81\x16\x90\x81_\x14a>\xF3WP`\x01\x14a>\xB7W[PPPV[a>\xC4\x91\x92\x93\x94Pa\x07\x9FV[\x91_\x92[\x81\x84\x10a>\xDBWPP\x01\x90_\x80\x80a>\xB2V[`\x01\x81` \x92\x95\x93\x95T\x84\x86\x01R\x01\x91\x01\x92\x90a>\xC8V[\x92\x94\x95PPP`\xFF\x19\x16\x82R\x15\x15` \x02\x01\x90_\x80\x80a>\xB2V[\x90a?\x18\x91a>\x82V[\x90V[\x90a?;a?4\x92a?+a\x03\xA2V[\x93\x84\x80\x92a?\x0EV[\x03\x83a\x08\xD7V[V[a?F\x90a?\x1BV[\x90V[a?S\x90Qa\x0F\x01V[\x90V[a?`\x90Qa\x05TV[\x90V[_\x7FValue out of bounds\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a?\x97`\x13` \x92a\t\xD5V[a?\xA0\x81a?cV[\x01\x90V[a?\xBCa?\xCA\x92`@\x83\x01\x90\x83\x82\x03_\x85\x01Ra\t\xE9V[\x90` \x81\x83\x03\x91\x01Ra?\x8AV[\x90V[\x92\x91` a?\xE9a?\xF1\x93`@\x87\x01\x90\x87\x82\x03_\x89\x01Ra\t\xE9V[\x94\x01\x90a\x05WV[V[\x90_\x92\x91\x80T\x90a@\ra@\x06\x83a\x07\xE4V[\x80\x94a\t\xD5V[\x91`\x01\x81\x16\x90\x81_\x14a@dWP`\x01\x14a@(W[PPPV[a@5\x91\x92\x93\x94Pa\x08\x17V[\x91_\x92[\x81\x84\x10a@LWPP\x01\x90_\x80\x80a@#V[`\x01\x81` \x92\x95\x93\x95T\x84\x86\x01R\x01\x91\x01\x92\x90a@9V[\x92\x94\x95PPP`\xFF\x19\x16\x82R\x15\x15` \x02\x01\x90_\x80\x80a@#V[_\x7FRequired metric missing\0\0\0\0\0\0\0\0\0\x91\x01RV[a@\xB3`\x17` \x92a\t\xD5V[a@\xBC\x81a@\x7FV[\x01\x90V[a@\xD8a@\xE6\x92`@\x83\x01\x90\x83\x82\x03_\x85\x01Ra?\xF3V[\x90` \x81\x83\x03\x91\x01Ra@\xA6V[\x90V[\x92\x93\x90\x93aA\x113aA\x0BaA\x05aA\x000a=.V[a\x03\xEFV[\x91a\x03\xEFV[\x14a=\x93V[aA%aA `\x08\x86\x90a\x07hV[a.\x93V[\x94aA/\x82a=\xF5V[\x94aA9_a,\xC2V[[\x80aAMaAG\x86a\x05TV[\x91a\x05TV[\x10\x15aA\xA0WaA\x9B\x90aA\x96aAq_aAi\x8A\x85\x90a>\x1CV[Q\x01Qa>CV[a>cV[a,\xDEV[aA:V[P\x91\x94\x90\x92\x95aA\xAF\x81a.\x9FV[aA\xC1aA\xBB_a,\xC2V[\x91a\x05TV[\x11\x96aA\xCBa>qV[\x90\x88aFKW[aA\xDB_a,\xC2V[[\x80aA\xEFaA\xE9\x8Ba\x05TV[\x91a\x05TV[\x10\x15aD\xAEW`\x01_\x8BaB\xE2W[P\x90\x88\x87\x89aB\x14\x94aB\x19W[PPPa,\xDEV[aA\xDCV[\x82_aBWaBOaB`\x94aBJaBB` aB;aBe\x9B\x8D\x90a>\x1CV[Q\x01a?VV[\x97`\ta\x1D\x07V[a\x1D\x1DV[\x92\x87\x90a>\x1CV[Q\x01Q\x90a\x1D\xAEV[a0\x18V[\x88\x87\x89\x90aB\x8F` aB\x88_aB}\x87\x89\x90a>\x1CV[Q\x01Q\x95\x87\x90a>\x1CV[Q\x01a?VV[aB\xC2aB\xBC\x7F#\xED\x02\xBD6\x05\xBD\xEAj\x8A\xFAv\xC4o\0\xD2t\x86\x0B\xA6\xCE\xA9\x80\xF2X[im\xF9\xE1\x82\xBD\x93a\x07LV[\x93a\x10\x06V[\x93aB\xD7aB\xCEa\x03\xA2V[\x92\x83\x92\x83a?\xCDV[\x03\x90\xA3\x88\x87\x89aB\x0CV[\x9A\x90\x95\x92\x91\x99aB\xF1_a,\xC2V[[\x80aC\raC\x07aC\x02\x8Aa.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aD\x98WaC%aC \x8D\x87a>CV[a?IV[aCIaCCaC>aC9\x8A\x86\x90a>CV[a?IV[a\x0F\x01V[\x91a\x0F\x01V[\x14aC\\WaCW\x90a,\xDEV[aB\xF2V[\x8A\x91\x9B\x92\x9CP\x89aB\x14\x94\x95\x98\x8A\x92`\x01\x90\x8AaC\x86` aC\x7F\x89\x8B\x90a>\x1CV[Q\x01a?VV[aC\xAEaC\xA8aC\xA3`\x01aC\x9C\x86\x88\x90a.\xA3V[P\x01a\t>V[a\x05TV[\x91a\x05TV[\x10\x91\x88\x88\x84\x15aDNW[PPPPaC\xE3W[aC\xCD\x90[\x15a\x04\xC2V[aC\xDCW[\x93\x94PPPaA\xFEV[P_aC\xD2V[\x90P\x82\x82_aC\xF3\x87\x89\x90a>\x1CV[Q\x01Q\x91aD?aD-aD'\x7F\xE0\x8FB\x89l\xE3\xAE\xC2\xFF}\xA9Z\x007/3\xCFg~u\xAD`%\x90\x83*\x8D\xFF\xCD\xADc\x15\x93a\x07LV[\x93a\x10\x06V[\x93aD6a\x03\xA2V[\x91\x82\x91\x82a?\xA4V[\x03\x90\xA3aC\xCD_\x91\x90PaC\xC2V[aD\x8E\x93\x94PaD|aD\x88\x93aDv` aDoaD\x83\x96`\x02\x96a>\x1CV[Q\x01a?VV[\x96a.\xA3V[P\x01a\t>V[a\x05TV[\x91a\x05TV[\x11\x8A_\x88\x88aC\xB9V[P\x99\x90\x9A\x87\x89aB\x14\x94\x95\x98aC\xCD\x8D\x94aC\xC7V[P\x97PP\x92\x93P\x93PaD\xC0_a,\xC2V[\x93[\x84aD\xDDaD\xD7aD\xD2\x86a.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aFDWaE\x03aD\xFD`\x03aD\xF6\x86\x89\x90a.\xA3V[P\x01a\teV[\x15a\x04\xC2V[aF9WaE%aE _aE\x19\x86\x89\x90a.\xA3V[P\x01a>vV[a?=V[aE7aE1\x82a7\x11V[\x91a7\x0BV[ \x90_\x96aED_a,\xC2V[[\x80aE`aEZaEU\x86a>?V[a\x05TV[\x91a\x05TV[\x10\x15aF'WaEyaEt\x84\x83\x90a>CV[a?IV[aE\x8BaE\x85\x86a\x0F\x01V[\x91a\x0F\x01V[\x14aE\x9EWaE\x99\x90a,\xDEV[aEEV[P\x95\x90\x96PaE\xBF\x91PaE\xB4`\x01[\x15a\x04\xC2V[aE\xC6W[[a,\xDEV[\x93\x94aD\xC2V[\x82\x85_aE\xD4\x87\x85\x90a.\xA3V[P\x01\x91aF\x1FaF\raF\x07\x7F\xE0\x8FB\x89l\xE3\xAE\xC2\xFF}\xA9Z\x007/3\xCFg~u\xAD`%\x90\x83*\x8D\xFF\xCD\xADc\x15\x93a\x07LV[\x93a\x10\x06V[\x93aF\x16a\x03\xA2V[\x91\x82\x91\x82a@\xC0V[\x03\x90\xA3aE\xB9V[P\x95\x90\x96aE\xBF\x92PaE\xB4\x90aE\xAEV[\x94\x93aE\xBF\x90aE\xBAV[PPPPPV[\x96\x93\x90PaFeaF`\x83\x97\x94\x99\x96\x93a.\x9FV[a=\xF5V[\x97aFo_a,\xC2V[[\x80aF\x8BaF\x85aF\x80\x8Ba.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aF\xE5WaF\xE0\x90aF\xDBaF\xB6aF\xB1_aF\xAA\x8D\x86\x90a.\xA3V[P\x01a>vV[a?=V[aF\xC8aF\xC2\x82a7\x11V[\x91a7\x0BV[ aF\xD6\x8D\x91\x84\x90\x92a>CV[a>cV[a,\xDEV[aFpV[P\x92\x95\x91\x94\x97\x90\x93\x96aA\xD2V[aF\xFBae?V[aG\x03aG\x05V[V[aG\x16aG\x11_a%\xE9V[al?V[V[aG aF\xF3V[V[aG,`\xA0a\x16\xBCV[\x90V[_\x90V[_\x90V[_\x90V[aGCaG\"V[\x90` \x80\x80\x80\x80\x86aGSaG/V[\x81R\x01aG^a'PV[\x81R\x01aGia'TV[\x81R\x01aGtaG3V[\x81R\x01aG\x7FaG7V[\x81RPPV[aG\x8DaG;V[\x90V[\x90aG\x9A\x90a\x05TV[\x90RV[\x90aG\xA8\x90a\x03\xB4V[\x90RV[\x90aG\xB6\x90a\x04\xAFV[\x90RV[\x90aG\xC4\x90a\x11YV[\x90RV[\x90aHGaH>`\x02aG\xD9aG\"V[\x94aG\xF0aG\xE8_\x83\x01a\t>V[_\x88\x01aG\x90V[aH\x08aG\xFF`\x01\x83\x01a\x10IV[` \x88\x01aG\x9EV[aH aH\x17`\x01\x83\x01a\x10vV[`@\x88\x01aG\xACV[aH8aH/`\x01\x83\x01a\x10\xA3V[``\x88\x01aG\xBAV[\x01a\x10\xC7V[`\x80\x84\x01a>cV[V[aHR\x90aG\xC8V[\x90V[aHz\x91aHpaHu\x92aHhaG\x85V[P`\x03a\x0F\xC8V[a\x10\x12V[aHIV[\x90V[_\x90V[\x90aH\x8B\x90a\x07LV[_R` R`@_ \x90V[\x90aH\xA1\x90a\x10\x06V[_R` R`@_ \x90V[aH\xD2\x91aH\xC8aH\xCD\x92aH\xC0aH}V[P`\x0CaH\x81V[aH\x97V[a\x10IV[\x90V[aH\xDDalUV[aH\xE5a^\xADV[aH\xF7aH\xF1\x83a\x03\xEFV[\x91a\x03\xEFV[\x03aI\x07WaI\x05\x90al?V[V[aI\"\x90_\x91\x82\x91c\x11\x8C\xDA\xA7`\xE0\x1B\x83R`\x04\x83\x01a\x0C\xC9V[\x03\x90\xFD[aIEaI@aIJ\x92aI8a'\xAEV[P`\x04a34V[a3JV[akXV[\x90V[aIW\x90Qa\x04\xAFV[\x90V[aInaIiaIs\x92a%\xCAV[a\x07IV[a\x04\xAFV[\x90V[aI\x80\x90Qa\x03\xB4V[\x90V[aI\x97aI\x92aI\x9C\x92a\x04\xAFV[a\x07IV[a\x05TV[\x90V[aI\xAEaI\xB4\x91\x93\x92\x93a\x05TV[\x92a\x05TV[\x82\x01\x80\x92\x11aI\xBFWV[a(\xE4V[\x90\x92\x91\x92aI\xD0a:\x9CV[PaI\xD9a'\xAEV[PaI\xE3\x82ad'V[\x93aJ\0aI\xFBaI\xF6`\x05\x86\x90a34V[a3JV[akXV[\x92aJ\r` \x87\x01aIMV[aJ\x1FaJ\x19_aIZV[\x91a\x04\xAFV[\x14\x80\x15aK\x11W[\x80\x15aJ\xF6W[aJ\xDCWaJh\x86aJbaJ]` aJVaJQ_aJ\xC5\x9B\x9C\x9D\x01aIvV[a6$V[\x93\x01aIMV[aI\x83V[\x90a(\xF8V[\x91\x80aJ\x83aJ}aJxa\x13-V[a\x05TV[\x91a\x05TV[\x11_\x14aJ\xD7WPaJ\x93a\x13-V[[aJ\x9F\x84\x82\x90aI\x9FV[aJ\xB1aJ\xAB\x88a\x05TV[\x91a\x05TV[\x11_\x14aJ\xC8WP\x84[\x90\x92\x90\x91\x92al\x8BV[\x91V[aJ\xD2\x90\x84aI\x9FV[aJ\xBBV[aJ\x94V[PPP\x91PaJ\xF2aJ\xED_a,\xC2V[a:\xDAV[\x91\x90V[P\x82aK\naK\x04\x86a\x05TV[\x91a\x05TV[\x10\x15aJ.V[P\x83aK%aK\x1F_a,\xC2V[\x91a\x05TV[\x14aJ'V[aK<\x90aK7ae?V[aK>V[V[aKI\x90`\na&\x9AV[V[aKT\x90aK+V[V[_\x90V[aKbaKVV[PaKl_a%\xBDV[\x90V[P\x90V[\x91\x90\x81\x10\x15aK\x83W` \x02\x01\x90V[a\x07~V[5aK\x92\x81a\x03\xFBV[\x90V[_\x80\xFD[`\xE0\x1B\x90V[_\x91\x03\x12aK\xA9WV[a\x03\xACV[\x91` aK\xCF\x92\x94\x93aK\xC8`@\x82\x01\x96_\x83\x01\x90a\x0C!V[\x01\x90a\x0C\xBCV[V[aK\xD9a\x03\xA2V[=_\x82>=\x90\xFD[\x90\x92\x91\x92aK\xEE_a,\xC2V[[\x80aL\x0CaL\x06aL\x01\x85\x89\x90aKoV[a\x05TV[\x91a\x05TV[\x10\x15aL\xBBWaL\x1B0a=.V[\x90c\xBA\x1F\xB1\x03\x84aL6aL1\x86\x8A\x86\x91aKsV[aK\x88V[\x93\x80;\x15aL\xB6WaL[_\x80\x94aLfaLOa\x03\xA2V[\x98\x89\x96\x87\x95\x86\x94aK\x99V[\x84R`\x04\x84\x01aK\xAEV[\x03\x92Z\xF1\x91\x82\x15aL\xB1WaL\x80\x92aL\x85W[Pa,\xDEV[aK\xEFV[aL\xA4\x90_=\x81\x11aL\xAAW[aL\x9C\x81\x83a\x08\xD7V[\x81\x01\x90aK\x9FV[_aLzV[P=aL\x92V[aK\xD1V[aK\x95V[PPP\x90PV[_\x7FNot slashing oracle\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aL\xF6`\x13` \x92a\t\xD5V[aL\xFF\x81aL\xC2V[\x01\x90V[aM\x18\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaL\xE9V[\x90V[\x15aM\"WV[aM*a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aM@`\x04\x82\x01aM\x03V[\x03\x90\xFD[_\x7FOperator unknown\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aMx`\x10` \x92a\t\xD5V[aM\x81\x81aMDV[\x01\x90V[aM\x9A\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaMkV[\x90V[\x15aM\xA4WV[aM\xACa\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aM\xC2`\x04\x82\x01aM\x85V[\x03\x90\xFD[\x90V[\x90aM\xDCg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91a&wV[\x91\x81\x19\x16\x91\x16\x17\x90V[\x90V[\x90aM\xFEaM\xF9aN\x05\x92a\x07LV[aM\xE6V[\x82TaM\xC9V[\x90UV[\x91\x90aN#\x81aN\x1C\x81aN(\x95a\t\xD5V[\x80\x95a\x17\x1DV[a\x08\xB9V[\x01\x90V[\x90\x91aNC\x92` \x83\x01\x92_\x81\x85\x03\x91\x01RaN\tV[\x90V[aNk3aNeaN_aNZ`\na%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14aM\x1BV[aN\x91aN\x8CaN\x85aN\x80`\x05\x85\x90a34V[a3JV[\x84\x90ae\x8DV[aM\x9DV[aN\xBDaN\xB2aN\xADaN\xA6`\x03\x85\x90a\x0F\xC8V[\x85\x90a\x10\x12V[aM\xC6V[`\x01`\x03\x91\x01a4\x0BV[aN\xDBaN\xD4aN\xCF`\x04\x84\x90a34V[a3JV[\x83\x90am\xA7V[PaO\x03aN\xE8Ba6@V[aN\xFEaN\xF7`\x0C\x85\x90aH\x81V[\x85\x90aH\x97V[aM\xE9V[\x90\x91\x92aO9aO3\x7F\x1E)\t\xCFE\xD7\x0C\xF0\x03\xF34\xB7<\x933\x0C\xE7\xE5rx-\xFC\x82\xFA\xB7\x9D\xEB\x88U\xA7\xC7\x91\x93a\x07LV[\x93a\x10\x06V[\x93aONaOEa\x03\xA2V[\x92\x83\x92\x83aN,V[\x03\x90\xA3V[aO]`\x80a\x16\xBCV[\x90V[aOk\x916\x91a\x17(V[\x90V[RV[\x90aO{\x90a\x04\xC2V[\x90RV[Q\x90V[\x90aO\x8D\x81a\t\xD1V[\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11aPMWaO\xB1\x82aO\xAB\x85Ta\x07\xE4V[\x85a.\xCFV[` \x90`\x1F\x83\x11`\x01\x14aO\xE5W\x91\x80\x91aO\xD4\x93_\x92aO\xD9W[PPa*\x07V[\x90U[V[\x90\x91P\x01Q_\x80aO\xCDV[`\x1F\x19\x83\x16\x91aO\xF4\x85a\x08\x17V[\x92_[\x81\x81\x10aP5WP\x91`\x02\x93\x91\x85`\x01\x96\x94\x10aP\x1BW[PPP\x02\x01\x90UaO\xD7V[aP+\x91\x01Q`\x1F\x84\x16\x90a)\xF2V[\x90U_\x80\x80aP\x0FV[\x91\x93` `\x01\x81\x92\x87\x87\x01Q\x81U\x01\x95\x01\x92\x01aO\xF7V[a\x08\xC3V[\x90aP\\\x91aO\x83V[V[aPh\x90Qa\x04\xC2V[\x90V[\x90aP\xC8```\x03aP\xCE\x94aP\x8E_\x82\x01aP\x88_\x88\x01aO\x7FV[\x90aPRV[aP\xA7`\x01\x82\x01aP\xA1` \x88\x01a?VV[\x90a0\x18V[aP\xC0`\x02\x82\x01aP\xBA`@\x88\x01a?VV[\x90a0\x18V[\x01\x92\x01aP^V[\x90a0jV[V[\x91\x90aP\xE1WaP\xDF\x91aPkV[V[a+\xA3V[\x90\x81T\x91h\x01\0\0\0\0\0\0\0\0\x83\x10\x15aQ\x16W\x82aQ\x0E\x91`\x01aQ\x14\x95\x01\x81Ua.\xA3V[\x90aP\xD0V[V[a\x08\xC3V[aR9\x95aR\"\x84\x96aR\x19aR\x11aQ\xFDaQ\xF8aR+\x97aQ\x9EaQ~aQxaR4\x9D\x8D\x9F\x9DaQs3aQmaQgaQbaQ]`\x07\x8C\x90a\x13\xC5V[a%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14a(5V[a-{V[\x90a-~V[aQ\x97aQ\x91aQ\x8Ca\x19!V[a\x05TV[\x91a\x05TV[\x11\x15a-\xDBV[aQ\xBB\x86aQ\xB4aQ\xAE\x8Da\x05TV[\x91a\x05TV[\x10\x15a.jV[aQ\xF1aQ\xD2aQ\xCD`\x08\x84\x90a\x07hV[a\x07\x92V[aQ\xEBaQ\xE5aQ\xE0a\x15mV[a\x05TV[\x91a\x05TV[\x10a(\xBBV[`\x08a\x07hV[a.\x93V[\x98\x99\x96\x92\x94\x96aR\x0BaOSV[\x9AaO`V[_\x8A\x01aOnV[` \x88\x01aG\x90V[`@\x86\x01aG\x90V[``\x84\x01aOqV[aP\xE6V[V[aRi\x90aRdaR_aRXaRS\x84`\x06a34V[a3JV[3\x90ae\x8DV[a5\xC4V[aSJV[V[_\x7FCannot go online while slashed\0\0\x91\x01RV[aR\x9F`\x1E` \x92a\t\xD5V[aR\xA8\x81aRkV[\x01\x90V[aR\xC1\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaR\x92V[\x90V[`@\x1B\x90V[\x90aR\xDEh\xFF\0\0\0\0\0\0\0\0\x91aR\xC4V[\x91\x81\x19\x16\x91\x16\x17\x90V[aR\xFCaR\xF7aS\x01\x92a\x04\xAFV[a\x07IV[a\x04\xAFV[\x90V[\x90V[\x90aS\x1CaS\x17aS#\x92aR\xE8V[aS\x04V[\x82TaR\xCAV[\x90UV[\x91` aSH\x92\x94\x93aSA`@\x82\x01\x96_\x83\x01\x90a\x11qV[\x01\x90a\x11qV[V[aShaScaS\\`\x03\x84\x90a\x0F\xC8V[3\x90a\x10\x12V[aM\xC6V[\x90aSu`\x01\x83\x01a\x10\xA3V[\x91\x82aS\x8AaS\x84`\x03a\x11YV[\x91a\x11YV[\x14aT\xAEW\x82aS\xA2aS\x9C_a\x11YV[\x91a\x11YV[\x14\x80\x15aT\x93W[aT\x8EWaS\xD1\x90aS\xBF`\x01\x80\x83\x01a4\x0BV[`\x01aS\xCA_aIZV[\x91\x01aS\x07V[aS\xEFaS\xE8aS\xE3`\x04\x84\x90a34V[a3JV[3\x90ae\x05V[P\x803aT%aT\x1F\x7F\xC9\x86,_\x02\xEE\xFB\xDC\xEA\x01\xC2\x07\xAES\x8E\x1D0M\xC90&\x87\x0FH\x95\x1EH\xA0\xF4\xC8G\x0C\x93a\x07LV[\x91a\x10\x06V[\x91aT.a\x03\xA2V[\x80aT8\x81a\x04KV[\x03\x90\xA3\x903\x90\x91`\x01aTtaTn\x7F\"\x88$\xB8l%di\x12_R\\\xE1\x8Cl-\n\x9E\x13=\x13\xB8\xECz,\x96\xA1\x93\xB0\xC2\x8A\t\x93a\x07LV[\x93a\x10\x06V[\x93aT\x89aT\x80a\x03\xA2V[\x92\x83\x92\x83aS'V[\x03\x90\xA3V[PPPV[P\x82aT\xA8aT\xA2`\x01a\x11YV[\x91a\x11YV[\x14aS\xAAV[aT\xB6a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aT\xCC`\x04\x82\x01aR\xACV[\x03\x90\xFD[aT\xD9\x90aR;V[V[_\x7FNot authorized\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aU\x0F`\x0E` \x92a\t\xD5V[aU\x18\x81aT\xDBV[\x01\x90V[aU1\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaU\x02V[\x90V[\x15aU;WV[aUCa\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aUY`\x04\x82\x01aU\x1CV[\x03\x90\xFD[\x90V[aUtaUoaUy\x92aU]V[a\x07IV[a\x03\xB4V[\x90V[_\x7FInterval too short\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aU\xB0`\x12` \x92a\t\xD5V[aU\xB9\x81aU|V[\x01\x90V[aU\xD2\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaU\xA3V[\x90V[\x15aU\xDCWV[aU\xE4a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aU\xFA`\x04\x82\x01aU\xBDV[\x03\x90\xFD[\x90V[aV\x15aV\x10aV\x1A\x92aU\xFEV[a\x07IV[a\x04\xAFV[\x90V[_\x7FMax missed must be >= 1\0\0\0\0\0\0\0\0\0\x91\x01RV[aVQ`\x17` \x92a\t\xD5V[aVZ\x81aV\x1DV[\x01\x90V[aVs\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaVDV[\x90V[\x15aV}WV[aV\x85a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aV\x9B`\x04\x82\x01aV^V[\x03\x90\xFD[aV\xA9``a\x16\xBCV[\x90V[\x90aV\xC1aV\xBCaV\xC8\x92a0[V[a0gV[\x82Ta3\xDDV[\x90UV[\x90aW\x0E`@_aW\x14\x94aV\xEE\x82\x82\x01aV\xE8\x84\x88\x01aIvV[\x90aM\xE9V[aW\x06\x82\x82\x01aW\0` \x88\x01aIMV[\x90aS\x07V[\x01\x92\x01aP^V[\x90aV\xACV[V[\x90aW \x91aV\xCCV[V[\x91` aWC\x92\x94\x93aW<`@\x82\x01\x96_\x83\x01\x90a\x0C!V[\x01\x90a\x11)V[V[3aWxaWr\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x03\xEFV[\x91a\x03\xEFV[\x14\x80\x15aXdW[aW\x89\x90aU4V[aW\xA7\x82aW\xA0aW\x9A`V[aYmaYg_a,\xC2V[\x91a\x05TV[\x14a[YWaY\xA3aY\x8ABaY\x84_\x87\x01a\t>V[\x90a6\x7FV[aY\x9DaY\x98_\x85\x01aIvV[a6$V[\x90aX\xAAV[\x80aY\xB7aY\xB1`\xFFaI\x83V[\x91a\x05TV[\x11_\x14a[KWP`\xFF[\x90\x81aY\xE1aY\xDBaY\xD6`\x01\x88\x01a\x10vV[a\x04\xAFV[\x91a\x04\xAFV[\x11aY\xEEW[PPPPPV[aY\xFB\x82`\x01\x86\x01aS\x07V[aZ\x10aZ\x07_aX\xE8V[`\x01\x86\x01aM\xE9V[aZ.aZ(aZ#` \x85\x94\x01aIMV[a\x04\xAFV[\x91a\x04\xAFV[\x10\x15\x80a[$W[aZAW[\x80aY\xE7V[aZ\\aZP`\x01\x85\x01a\x10\xA3V[\x93`\x01`\x02\x91\x01a4\x0BV[aZzaZsaZn`\x04\x85\x90a34V[a3JV[\x85\x90am\xA7V[P\x81\x90\x84\x90\x91aZ\xC8aZ\xB6aZ\xB0\x7FD\xFD2\xB6wpL\xE6\x8Ewc\x89|Is;\x8FR\x89\x01\x8A\xC6\n\\\x92h\x02\xD67Y\xDBM\x93a\x07LV[\x93a\x10\x06V[\x93aZ\xBFa\x03\xA2V[\x91\x82\x91\x82a\x16'V[\x03\x90\xA3\x91\x90\x91`\x02a[\x03aZ\xFD\x7F\"\x88$\xB8l%di\x12_R\\\xE1\x8Cl-\n\x9E\x13=\x13\xB8\xECz,\x96\xA1\x93\xB0\xC2\x8A\t\x93a\x07LV[\x93a\x10\x06V[\x93a[\x18a[\x0Fa\x03\xA2V[\x92\x83\x92\x83aS'V[\x03\x90\xA3_\x80\x80\x80aZ;V[Pa[1`\x01\x84\x01a\x10\xA3V[a[Da[>`\x02a\x11YV[\x91a\x11YV[\x14\x15aZ6V[a[T\x90aX\xCCV[aY\xC2V[PPPPV[PPPPV[``\x90V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a[\x82W` \x80\x91\x02\x01\x90V[a\x08\xC3V[\x90a[\x99a[\x94\x83a[jV[a\x16\xBCV[\x91\x82RV[a[\xA8`\x80a\x16\xBCV[\x90V[\x90a\\\x12a\\\t`\x03a[\xBCa[\x9EV[\x94a[\xD3a[\xCB_\x83\x01a\t\0V[_\x88\x01aOnV[a[\xEBa[\xE2`\x01\x83\x01a\t>V[` \x88\x01aG\x90V[a\\\x03a[\xFA`\x02\x83\x01a\t>V[`@\x88\x01aG\x90V[\x01a\teV[``\x84\x01aOqV[V[a\\\x1D\x90a[\xABV[\x90V[\x90a\\*\x82a\x07\x92V[a\\3\x81a[\x87V[\x92a\\A` \x85\x01\x91a\x07\x96V[_\x91[\x83\x83\x10a\\QWPPPPV[`\x04` `\x01\x92a\\a\x85a\\\x14V[\x81R\x01\x92\x01\x92\x01\x91\x90a\\DV[a\\x\x90a\\ V[\x90V[a\\\x92a\\\x97\x91a\\\x8Aa[eV[P`\x08a\x07hV[a\\oV[\x90V[a\\\xC8\x90a\\\xC3a\\\xBEa\\\xB7a\\\xB2\x84`\x06a34V[a3JV[3\x90ae\x8DV[a5\xC4V[a]#V[V[_\x7FCannot go offline while slashed\0\x91\x01RV[a\\\xFE`\x1F` \x92a\t\xD5V[a]\x07\x81a\\\xCAV[\x01\x90V[a] \x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra\\\xF1V[\x90V[a]Aa]V[\x90V[a^\xB5aKVV[Pa^\xC0`\x01a%\xBDV[\x90V[a^\xCD\x90Qa\x11YV[\x90V[\x90V[a^\xE7a^\xE2a^\xEC\x92a^\xD0V[a\x07IV[a\x05TV[\x90V[` \x7Fl\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x7FOperator not eligible for remova_\x82\x01R\x01RV[a_I`!`@\x92a\t\xD5V[a_R\x81a^\xEFV[\x01\x90V[a_k\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra_adC\x91ad6a'\x8EV[P`\x02a\"\x87V[ad\x1BV[adN_\x82\x01aIvV[ad`adZ_aX\xE8V[\x91a\x03\xB4V[\x14ad\xA6W[adr` \x82\x01aIMV[ad\x84ad~_aIZV[\x91a\x04\xAFV[\x14ad\x8DW[\x90V[ad\xA1ad\x98a\x16\x0FV[` \x83\x01aG\xACV[ad\x8AV[ad\xB9ad\xB1a\x0C\x08V[_\x83\x01aG\x9EV[adfV[ad\xC7\x90a\x0F\xDEV[\x90V[ad\xDEad\xD9ad\xE3\x92a\x03\xE4V[a\x07IV[a\x05TV[\x90V[ad\xFAad\xF5ad\xFF\x92a\x05TV[a&wV[a\x0F\x01V[\x90V[\x90V[\x90ae7ae1ae,ae'_ae<\x96ae\x1Fa;\xCBV[P\x01\x94ad\xBEV[ad\xCAV[ad\xE6V[\x91ae\x02V[anhV[\x90V[aeGaKZV[ae`aeZaeUalUV[a\x03\xEFV[\x91a\x03\xEFV[\x03aegWV[ae\x89aeralUV[_\x91\x82\x91c\x11\x8C\xDA\xA7`\xE0\x1B\x83R`\x04\x83\x01a\x0C\xC9V[\x03\x90\xFD[\x90ae\xBFae\xB9ae\xB4ae\xAF_ae\xC4\x96ae\xA7a;\xCBV[P\x01\x94ad\xBEV[ad\xCAV[ad\xE6V[\x91ae\x02V[an\xCBV[\x90V[ae\xE6\x91ae\xDD\x91ae\xD7aKVV[Pao'V[\x90\x92\x91\x92ao\xE7V[\x90V[_\x7FOperator is slashed\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[af\x1D`\x13` \x92a\t\xD5V[af&\x81ae\xE9V[\x01\x90V[af?\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Raf\x10V[\x90V[\x15afIWV[afQa\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80afg`\x04\x82\x01af*V[\x03\x90\xFD[\x90af\x80af{af\x87\x92a3MV[a3YV[\x82Ta0\x02V[\x90UV[af\x94\x90a\x03\xB4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14af\xA9W`\x01\x01\x90V[a(\xE4V[\x90V[af\xC5af\xC0af\xCA\x92af\xAEV[a\x07IV[a\x04\xAFV[\x90V[\x91` af\xEE\x92\x94\x93af\xE7`@\x82\x01\x96_\x83\x01\x90a\x11)V[\x01\x90a\x05WV[V[af\xF9\x90a\x0F\xDEV[\x90V[ag\x05\x90af\xF0V[\x90V[ag\x11\x90a\x0F\xFAV[\x90V[`@\x90ag=agD\x94\x96\x95\x93\x96ag3``\x84\x01\x98_\x85\x01\x90a\x0C\xBCV[` \x83\x01\x90a\x0C!V[\x01\x90a\x0C!V[V[\x94\x92\x93\x91\x93agiagdag]`\x03\x89\x90a\x0F\xC8V[\x87\x90a\x10\x12V[aM\xC6V[\x93ags\x87ad'V[\x93ag\x9Dag\x83`\x01\x88\x01a\x10\xA3V[ag\x96ag\x90`\x03a\x11YV[\x91a\x11YV[\x14\x15afBV[ag\xBBag\xB4ag\xAF`\x05\x8B\x90a34V[a3JV[\x88\x90ae\x05V[Pah\x90`@ag\xCD`\x01\x89\x01a\x10\xA3V[\x96ag\xDAB_\x8B\x01a0\x18V[ah\x04ag\xE8\x85\x87\x90a6\xFDV[ag\xFAag\xF4\x82a7\x11V[\x91a7\x0BV[ `\x02\x8B\x01afkV[ah\x19ah\x10_aIZV[`\x01\x8B\x01aS\x07V[ah7`\x01\x8A\x01ah1ah,\x82a\x10IV[af\x8BV[\x90aM\xE9V[ah?a<\xFFV[P\x85ahSahM_aIZV[\x91a\x04\xAFV[\x14_\x14ak\x14Wahj_\x99[`\x01\x8B\x91\x01a4\x0BV[\x87ah~ahx`\x02a\x11YV[\x91a\x11YV[\x14\x80aj\xF8W[aj\x8AW[\x01aP^V[\x80ajfW[ajPW[PP\x85\x91\x85\x91\x92Bah\xDFah\xD9ah\xD3\x7Fe\x89\x18\xE3\x14\x7F\x13\xDD\x06\x8E\xC2\x147\xB4\xC2\\!h*\x8D\xC2\x12\x93Hg\x1E\xAD\0\r\xB3\xE7\xB9\x94a\x07LV[\x94a\x07LV[\x94a\x10\x06V[\x94ah\xF4ah\xEBa\x03\xA2V[\x92\x83\x92\x83af\xCDV[\x03\x90\xA4\x80ai\nai\x04\x84a\x11YV[\x91a\x11YV[\x03ai\xFAW[PPai\x1C`\x0Ba%\xBDV[ai6ai0ai+_a%\xE9V[a\x03\xEFV[\x91a\x03\xEFV[\x03ai@W[PPV[aiZaiUaiP`\x0Ba%\xBDV[af\xFCV[ag\x08V[\x91c\xD4xS\xB6\x91\x90\x92ailBa6@V[\x92\x81;\x15ai\xF5W_ai\x92\x91ai\x9D\x82\x96ai\x86a\x03\xA2V[\x98\x89\x97\x88\x96\x87\x95aK\x99V[\x85R`\x04\x85\x01ag\x14V[\x03\x92Z\xF1\x90\x81ai\xC9W[P\x15_\x14ai\xC4W`\x01ai\xBFW[[_\x80aiV[an\xFBan\xF5_a,\xC2V[\x91a\x05TV[\x14\x15\x90V[_\x90V[\x90V[ao\x1Bao\x16ao \x92ao\x04V[a\x07IV[a\x05TV[\x90V[_\x90V[\x91\x90\x91ao2aKVV[Pao;ao\0V[PaoDa3\x87V[PaoN\x83a7\x11V[aoaao[`Aao\x07V[\x91a\x05TV[\x14_\x14ao\xA8Wao\xA1\x91\x92aoua3\x87V[Pao~a3\x87V[Pao\x87ao#V[P` \x81\x01Q```@\x83\x01Q\x92\x01Q_\x1A\x90\x91\x92az\x07V[\x91\x92\x90\x91\x90V[Pao\xB2_a%\xE9V[\x90ao\xC6ao\xC1`\x02\x94a7\x11V[ad\xE6V[\x91\x92\x91\x90V[`\x04\x11\x15ao\xD6WV[a\x116V[\x90ao\xE5\x82ao\xCCV[V[\x80ao\xFAao\xF4_ao\xDBV[\x91ao\xDBV[\x14_\x14ap\x05WPPV[\x80ap\x19ap\x13`\x01ao\xDBV[\x91ao\xDBV[\x14_\x14apavG\x81\x83a\x08\xD7V[\x81\x01\x90as\xD9V[\x90_au8V[PPPPV[PPPPV[_avv\x91avoa'\xAEV[P\x01anNV[\x90V[_R` _ \x90V[av\x8B\x81anNV[\x82\x10\x15av\xA5Wav\x9D`\x01\x91avyV[\x91\x02\x01\x90_\x90V[a\x07~V[av\xBA\x90`\x08av\xBF\x93\x02a\x0CxV[a\x10\xB0V[\x90V[\x90av\xCD\x91Tav\xAAV[\x90V[av\xEE\x91_av\xE8\x92av\xE1a3\x87V[P\x01av\x82V[\x90av\xC2V[\x90V[av\xFA_a%\xBDV[aw\x04\x82_a&\x9AV[\x90aw8aw2\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x93a\x10\x06V[\x91a\x10\x06V[\x91awAa\x03\xA2V[\x80awK\x81a\x04KV[\x03\x90\xA3V[awXa;\xCBV[Paw\x80awzawsawn`\x06\x85\x90a34V[a3JV[\x84\x90ae\x8DV[\x15a\x04\xC2V[ax\"Waw\xA0\x91aw\x96aw\x9B\x92`\x03a\x0F\xC8V[a\x10\x12V[aHIV[aw\xAB_\x82\x01a?VV[aw\xBDaw\xB7_a,\xC2V[\x91a\x05TV[\x14\x80\x15aw\xFCW[aw\xF6Waw\xEBaw\xE5aw\xF1\x92aw\xDF_B\x92\x01a?VV[\x90a6\x7FV[\x92a\x05TV[\x91a\x05TV[\x10\x15\x90V[PP_\x90V[Pax\t``\x82\x01a^\xC3V[ax\x1Cax\x16`\x03a\x11YV[\x91a\x11YV[\x14aw\xC5V[PPP_\x90V[ax=ax8axB\x92aU\xFEV[a\x07IV[a\x05TV[\x90V[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[axb\x81am\xEDV[\x80\x15ax\x83W`\x01\x90\x03\x90ax\x80axz\x83\x83am\xF1V[\x90a3\x8BV[UV[axEV[ax\x90a;\xCBV[Pax\xA7ax\xA2`\x01\x83\x01\x84\x90anRV[a\t>V[\x90\x81ax\xBBax\xB5_a,\xC2V[\x91a\x05TV[\x14\x15_\x14ay\x87Way9\x92`\x01ay4\x92\x84ax\xE2_\x96ax\xDC\x85ax)V[\x90a6\x7FV[ax\xFFax\xF0\x88\x85\x01anNV[ax\xF9\x86ax)V[\x90a6\x7FV[\x81ay\x12ay\x0C\x83a\x05TV[\x91a\x05TV[\x03ay>W[PPPay.ay)\x86\x83\x01am\xE1V[axYV[\x01anRV[a)\xBFV[`\x01\x90V[ay\x7F\x92ayqay]ayWayz\x94\x8C\x89\x01av\x82V[\x90av\xC2V[\x93ayk\x85\x91\x8C\x89\x01av\x82V[\x90a3eV[\x91\x85\x85\x01anRV[a0\x18V[_\x80\x80ay\x18V[PPP_\x90V[\x90V[ay\xA5ay\xA0ay\xAA\x92ay\x8EV[a\x07IV[a\x05TV[\x90V[ay\xE2ay\xE9\x94ay\xD8``\x94\x98\x97\x95ay\xCE`\x80\x86\x01\x9A_\x87\x01\x90a\x0F\x04V[` \x85\x01\x90a\x11)V[`@\x83\x01\x90a\x0F\x04V[\x01\x90a\x0F\x04V[V[ay\xFFay\xFAaz\x04\x92a%\xCAV[a&wV[a\x0F\x01V[\x90V[\x93\x92\x93az\x12aKVV[Paz\x1Bao\0V[Paz$a3\x87V[Paz.\x85akwV[az`azZ\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0ay\x91V[\x91a\x05TV[\x11az\xEDW\x90az\x83` \x94\x95_\x94\x93\x92\x93azza\x03\xA2V[\x94\x85\x94\x85ay\xADV[\x83\x80R\x03\x90`\x01Z\xFA\x15az\xE8Waz\x9B_Qa&wV[\x80az\xB6az\xB0az\xAB_a%\xE9V[a\x03\xEFV[\x91a\x03\xEFV[\x14az\xCCW_\x91az\xC6_ay\xEBV[\x91\x92\x91\x90V[Paz\xD6_a%\xE9V[`\x01\x91az\xE2_ay\xEBV[\x91\x92\x91\x90V[aK\xD1V[PPPaz\xF9_a%\xE9V[\x90`\x03\x92\x91\x92\x91\x90V\xFE\xA1dsolcC\0\x08\x1A\0\n", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b906133a1565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b6134b7565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613966565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b906139b2565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b6139cc565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613a86565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613b26565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613bad565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613c1f565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613c2e565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613c5a565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b92919091614040565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b61198661466f565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b906147ac565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b90614804565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae61482c565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b61487d565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b9161491b565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614aa2565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614ab1565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614b38565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614d9d565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b94939093929192615072565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b615427565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b9161569c565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b9061585b565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615bd2565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615d62565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615dcf565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615e04565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615eee565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b90616083565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b616182565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b9061618d565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b90616256565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b5061637e565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b60481b90565b9061336869ff0000000000000000009161334d565b9181191691161790565b61337b90611159565b90565b90565b9061339661339161339d92613372565b61337e565b8254613353565b9055565b6133dd336133d76133d17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b613402826133fb6133f56133f05f6125e9565b6103ef565b916103ef565b141561330b565b61342861342361341c61341760068590613334565b61334a565b849061645c565b61264e565b61344b6002600161344561343e60038690610fc8565b8690611012565b01613381565b9061347f6134797f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916134886103a2565b806134928161044b565b0390a3565b6134a8906134a3616496565b6134aa565b565b6134b590600b61269a565b565b6134c090613497565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b6134f660176020926109d5565b6134ff816134c2565b0190565b6135189060208101905f8183039101526134e9565b90565b1561352257565b61352a6103a2565b62461bcd60e51b81528061354060048201613503565b0390fd5b906135799796959493929161357461356f613568613563846006613334565b61334a565b33906164e4565b61351b565b6137ba565b565b61358f61358a613594926103b4565b610749565b610554565b90565b6135ab6135a66135b092610554565b610749565b6103b4565b90565b9160206135d49294936135cd60408201965f830190610c21565b0190610c21565b565b6135e56135eb91939293610554565b92610554565b82039182116135f657565b6128e4565b67ffffffffffffffff8111613619576136156020916108b9565b0190565b6108c3565b9092919261363361362e826135fb565b6116bc565b9381855260208501908284011161364f5761364d9261171d565b565b6116f6565b61365f91369161361e565b90565b60200190565b5190565b949290979695939160e08601985f870161368591610f04565b6020860161369291610cbc565b6040850161369f91610c21565b606084016136ac91610c21565b608083016136b991611129565b60a082016136c691610f04565b60c0016136d291610c21565b565b5f61190160f01b910152565b6136ec60028092611d33565b6136f5816136d4565b0190565b90565b61370861370d91610f01565b6136f9565b9052565b602080939261372c613725613734946136e0565b80926136fc565b0180926136fc565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61376c60116020926109d5565b61377581613738565b0190565b61378e9060208101905f81830391015261375f565b90565b1561379857565b6137a06103a2565b62461bcd60e51b8152806137b660048201613779565b0390fd5b919293949796909597806137d66137d042610554565b9161357b565b1161393e576137ee426137e88361357b565b906135d6565b6138076138016137fc610d13565b61357b565b91610554565b116139165761391497986138eb61390993856138758a6138668d6138f1988d8d61383d61383261248b565b963399959293613654565b61384f61384982613668565b91613662565b20929361385a6103a2565b9889976020890161366c565b602082018103825203826108d7565b61388761388182613668565b91613662565b206138d27f00000000000000000000000000000000000000000000000000000000000000006138c36138b76103a2565b93849260208401613711565b602082018103825203826108d7565b6138e46138de82613668565b91613662565b2092613654565b9061651e565b6139036138fd336103ef565b916103ef565b14613791565b9333919293946166b5565b565b61391f42613597565b9061393a5f9283926318355b7560e21b8452600484016135b3565b0390fd5b61394742613597565b906139625f9283926357ea02e960e01b8452600484016135b3565b0390fd5b9061397697969594939291613544565b565b606090565b906020828203126139ad575f82013567ffffffffffffffff81116139a8576139a59201611849565b90565b6103b0565b6103ac565b906139c9916139bf613978565b509081019061397d565b90565b6139eb6139e66139f0926139de6127ae565b506005613334565b61334a565b616ac7565b90565b606090565b67ffffffffffffffff8111613a105760208091020190565b6108c3565b90613a27613a22836139f8565b6116bc565b918252565b369037565b90613a56613a3e83613a15565b92602080613a4c86936139f8565b9201910390613a2c565b565b90613a628261123a565b811015613a73576020809102010190565b61077e565b90613a82906103ef565b9052565b90613a8f6139f3565b50613aac613aa7613aa260048590613334565b61334a565b616ac7565b91613ab683613a31565b91613ac05f612cc2565b5b80613ad4613ace87610554565b91610554565b1015613b1b57613b1690613b11613aff613af8613af360048890613334565b61334a565b8390616b16565b613b0c8791849092613a58565b613a78565b612cde565b613ac1565b5092505090565b5f90565b90613b2f613b22565b50613b516001613b4b613b4460038690610fc8565b8490611012565b016110a3565b613b63613b5d5f611159565b91611159565b14918215613b71575b505090565b613b929250600191613b87613b8c926003610fc8565b611012565b016110a3565b613ba5613b9f6001611159565b91611159565b145f80613b6c565b613bd390613bb96139f3565b505f90613bcd613bc761132d565b92612cc2565b9061491b565b5090565b90613c0994939291613c04613bff613bf8613bf3846006613334565b61334a565b33906164e4565b61351b565b613c0b565b565b91613c1d9492939133919293946166b5565b565b90613c2c94939291613bd7565b565b90613c4e613c49613c5393613c41613b22565b506006613334565b61334a565b6164e4565b90565b5f90565b613c7c613c8292613c77600193613c6f613c56565b506003610fc8565b611012565b016110a3565b90565b613c8e90610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613cc5600d6020926109d5565b613cce81613c91565b0190565b613ce79060208101905f818303910152613cb8565b90565b15613cf157565b613cf96103a2565b62461bcd60e51b815280613d0f60048201613cd2565b0390fd5b67ffffffffffffffff8111613d2b5760208091020190565b6108c3565b90613d42613d3d83613d13565b6116bc565b918252565b369037565b90613d71613d5983613d30565b92602080613d678693613d13565b9201910390613d47565b565b90613d7d82610d97565b811015613d8e576020809102010190565b61077e565b90565b5190565b90613da482613d96565b811015613db5576020809102010190565b61077e565b90613dc490610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613df3613dec836107e4565b8094613dd0565b916001811690815f14613e4a5750600114613e0e575b505050565b613e1b919293945061079f565b915f925b818410613e3257505001905f8080613e09565b60018160209295939554848601520191019290613e1f565b92949550505060ff19168252151560200201905f8080613e09565b90613e6f91613dd9565b90565b90613e92613e8b92613e826103a2565b93848092613e65565b03836108d7565b565b613e9d90613e72565b90565b613eaa9051610f01565b90565b613eb79051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613eee60136020926109d5565b613ef781613eba565b0190565b613f13613f219260408301908382035f8501526109e9565b906020818303910152613ee1565b90565b92916020613f40613f489360408701908782035f8901526109e9565b940190610557565b565b905f9291805490613f64613f5d836107e4565b80946109d5565b916001811690815f14613fbb5750600114613f7f575b505050565b613f8c9192939450610817565b915f925b818410613fa357505001905f8080613f7a565b60018160209295939554848601520191019290613f90565b92949550505060ff19168252151560200201905f8080613f7a565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b61400a60176020926109d5565b61401381613fd6565b0190565b61402f61403d9260408301908382035f850152613f4a565b906020818303910152613ffd565b90565b929390936140683361406261405c61405730613c85565b6103ef565b916103ef565b14613cea565b61407c61407760088690610768565b612e93565b9461408682613d4c565b946140905f612cc2565b5b806140a461409e86610554565b91610554565b10156140f7576140f2906140ed6140c85f6140c08a8590613d73565b510151613d93565b6140da6140d482613668565b91613662565b206140e88a91849092613d9a565b613dba565b612cde565b614091565b50919490929561410681612e9f565b6141186141125f612cc2565b91610554565b1196614122613dc8565b90886145a2575b6141325f612cc2565b5b806141466141408b610554565b91610554565b10156144055760015f8b614239575b509088878961416b94614170575b505050612cde565b614133565b825f6141ae6141a66141b7946141a161419960206141926141bc9b8d90613d73565b5101613ead565b976009611d07565b611d1d565b928790613d73565b51015190611dae565b613018565b888789906141e660206141df5f6141d4878990613d73565b510151958790613d73565b5101613ead565b6142196142137f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b9361422e6142256103a2565b92839283613f24565b0390a3888789614163565b9a90959291996142485f612cc2565b5b8061426461425e6142598a612e9f565b610554565b91610554565b10156143ef5761427c6142778d87613d9a565b613ea0565b6142a061429a6142956142908a8690613d9a565b613ea0565b610f01565b91610f01565b146142b3576142ae90612cde565b614249565b8a919b929c508961416b9495988a926001908a6142dd60206142d6898b90613d73565b5101613ead565b6143056142ff6142fa60016142f3868890612ea3565b500161093e565b610554565b91610554565b1091888884156143a5575b5050505061433a575b614324905b156104c2565b614333575b9394505050614155565b505f614329565b905082825f61434a878990613d73565b5101519161439661438461437e7fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b9361438d6103a2565b91829182613efb565b0390a36143245f919050614319565b6143e59394506143d36143df936143cd60206143c66143da96600296613d73565b5101613ead565b96612ea3565b500161093e565b610554565b91610554565b118a5f8888614310565b5099909a878961416b9495986143248d9461431e565b5097505092935093506144175f612cc2565b935b8461443461442e61442986612e9f565b610554565b91610554565b101561459b5761445a614454600361444d868990612ea3565b5001610965565b156104c2565b6145905761447c6144775f614470868990612ea3565b5001613dcd565b613e94565b61448e61448882613668565b91613662565b20905f9661449b5f612cc2565b5b806144b76144b16144ac86613d96565b610554565b91610554565b101561457e576144d06144cb848390613d9a565b613ea0565b6144e26144dc86610f01565b91610f01565b146144f5576144f090612cde565b61449c565b5095909650614516915061450b60015b156104c2565b61451d575b5b612cde565b9394614419565b82855f61452b878590612ea3565b50019161457661456461455e7fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b9361456d6103a2565b91829182614017565b0390a3614510565b50959096614516925061450b90614505565b949361451690614511565b5050505050565b969390506145bc6145b7839794999693612e9f565b613d4c565b976145c65f612cc2565b5b806145e26145dc6145d78b612e9f565b610554565b91610554565b101561463c576146379061463261460d6146085f6146018d8690612ea3565b5001613dcd565b613e94565b61461f61461982613668565b91613662565b2061462d8d91849092613d9a565b613dba565b612cde565b6145c7565b509295919497909396614129565b614652616496565b61465a61465c565b565b61466d6146685f6125e9565b616bae565b565b61467761464a565b565b61468360a06116bc565b90565b5f90565b5f90565b5f90565b61469a614679565b90602080808080866146aa614686565b8152016146b5612750565b8152016146c0612754565b8152016146cb61468a565b8152016146d661468e565b81525050565b6146e4614692565b90565b906146f190610554565b9052565b906146ff906103b4565b9052565b9061470d906104af565b9052565b9061471b90611159565b9052565b9061479e6147956002614730614679565b9461474761473f5f830161093e565b5f88016146e7565b61475f61475660018301611049565b602088016146f5565b61477761476e60018301611076565b60408801614703565b61478f614786600183016110a3565b60608801614711565b016110c7565b60808401613dba565b565b6147a99061471f565b90565b6147d1916147c76147cc926147bf6146dc565b506003610fc8565b611012565b6147a0565b90565b5f90565b906147e29061074c565b5f5260205260405f2090565b906147f890611006565b5f5260205260405f2090565b6148299161481f614824926148176147d4565b50600c6147d8565b6147ee565b611049565b90565b614834616bc4565b61483c615e04565b61484e614848836103ef565b916103ef565b0361485e5761485c90616bae565b565b614879905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61489c6148976148a19261488f6127ae565b506004613334565b61334a565b616ac7565b90565b6148ae90516104af565b90565b6148c56148c06148ca926125ca565b610749565b6104af565b90565b6148d790516103b4565b90565b6148ee6148e96148f3926104af565b610749565b610554565b90565b61490561490b91939293610554565b92610554565b820180921161491657565b6128e4565b909291926149276139f3565b506149306127ae565b5061493a8261637e565b9361495761495261494d60058690613334565b61334a565b616ac7565b92614964602087016148a4565b6149766149705f6148b1565b916104af565b148015614a68575b8015614a4d575b614a33576149bf866149b96149b460206149ad6149a85f614a1c9b9c9d016148cd565b61357b565b93016148a4565b6148da565b906128f8565b91806149da6149d46149cf61132d565b610554565b91610554565b115f14614a2e57506149ea61132d565b5b6149f68482906148f6565b614a08614a0288610554565b91610554565b115f14614a1f5750845b9092909192616bfa565b91565b614a2990846148f6565b614a12565b6149eb565b5050509150614a49614a445f612cc2565b613a31565b9190565b5082614a61614a5b86610554565b91610554565b1015614985565b5083614a7c614a765f612cc2565b91610554565b1461497e565b614a9390614a8e616496565b614a95565b565b614aa090600a61269a565b565b614aab90614a82565b565b5f90565b614ab9614aad565b50614ac35f6125bd565b90565b5090565b9190811015614ada576020020190565b61077e565b35614ae9816103fb565b90565b5f80fd5b60e01b90565b5f910312614b0057565b6103ac565b916020614b26929493614b1f60408201965f830190610c21565b0190610cbc565b565b614b306103a2565b3d5f823e3d90fd5b90929192614b455f612cc2565b5b80614b63614b5d614b58858990614ac6565b610554565b91610554565b1015614c1257614b7230613c85565b9063ba1fb10384614b8d614b88868a8691614aca565b614adf565b93803b15614c0d57614bb25f8094614bbd614ba66103a2565b98899687958694614af0565b845260048401614b05565b03925af1918215614c0857614bd792614bdc575b50612cde565b614b46565b614bfb905f3d8111614c01575b614bf381836108d7565b810190614af6565b5f614bd1565b503d614be9565b614b28565b614aec565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614c4d60136020926109d5565b614c5681614c19565b0190565b614c6f9060208101905f818303910152614c40565b90565b15614c7957565b614c816103a2565b62461bcd60e51b815280614c9760048201614c5a565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614ccf60106020926109d5565b614cd881614c9b565b0190565b614cf19060208101905f818303910152614cc2565b90565b15614cfb57565b614d036103a2565b62461bcd60e51b815280614d1960048201614cdc565b0390fd5b90565b90614d3367ffffffffffffffff91612677565b9181191691161790565b90565b90614d55614d50614d5c9261074c565b614d3d565b8254614d20565b9055565b9190614d7a81614d7381614d7f956109d5565b809561171d565b6108b9565b0190565b9091614d9a9260208301925f818503910152614d60565b90565b614dc233614dbc614db6614db1600a6125bd565b6103ef565b916103ef565b14614c72565b614de8614de3614ddc614dd760058590613334565b61334a565b84906164e4565b614cf4565b614e14614e09614e04614dfd60038590610fc8565b8590611012565b614d1d565b600160039101613381565b614e32614e2b614e2660048490613334565b61334a565b8390616d16565b50614e5a614e3f42613597565b614e55614e4e600c85906147d8565b85906147ee565b614d40565b909192614e90614e8a7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614ea5614e9c6103a2565b92839283614d83565b0390a3565b614eb460806116bc565b90565b614ec2913691611728565b90565b52565b90614ed2906104c2565b9052565b5190565b90614ee4816109d1565b9067ffffffffffffffff8211614fa457614f0882614f0285546107e4565b85612ecf565b602090601f8311600114614f3c57918091614f2b935f92614f30575b5050612a07565b90555b565b90915001515f80614f24565b601f19831691614f4b85610817565b925f5b818110614f8c57509160029391856001969410614f72575b50505002019055614f2e565b614f82910151601f8416906129f2565b90555f8080614f66565b91936020600181928787015181550195019201614f4e565b6108c3565b90614fb391614eda565b565b614fbf90516104c2565b90565b9061501f6060600361502594614fe55f8201614fdf5f8801614ed6565b90614fa9565b614ffe60018201614ff860208801613ead565b90613018565b6150176002820161501160408801613ead565b90613018565b019201614fb5565b9061306a565b565b91906150385761503691614fc2565b565b612ba3565b908154916801000000000000000083101561506d578261506591600161506b95018155612ea3565b90615027565b565b6108c3565b61519095615179849661517061516861515461514f615182976150f56150d56150cf61518b9d8d9f9d6150ca336150c46150be6150b96150b460078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b6150ee6150e86150e3611921565b610554565b91610554565b1115612ddb565b6151128661510b6151058d610554565b91610554565b1015612e6a565b61514861512961512460088490610768565b610792565b61514261513c61513761156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b989996929496615162614eaa565b9a614eb7565b5f8a01614ec5565b602088016146e7565b604086016146e7565b60608401614ec8565b61503d565b565b6151c0906151bb6151b66151af6151aa846006613334565b61334a565b33906164e4565b61351b565b6152a1565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b6151f6601e6020926109d5565b6151ff816151c2565b0190565b6152189060208101905f8183039101526151e9565b90565b60401b90565b9061523568ff00000000000000009161521b565b9181191691161790565b61525361524e615258926104af565b610749565b6104af565b90565b90565b9061527361526e61527a9261523f565b61525b565b8254615221565b9055565b91602061529f92949361529860408201965f830190611171565b0190611171565b565b6152bf6152ba6152b360038490610fc8565b3390611012565b614d1d565b906152cc600183016110a3565b91826152e16152db6003611159565b91611159565b1461540557826152f96152f35f611159565b91611159565b1480156153ea575b6153e557615328906153166001808301613381565b60016153215f6148b1565b910161525e565b61534661533f61533a60048490613334565b61334a565b339061645c565b50803361537c6153767fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b916153856103a2565b8061538f8161044b565b0390a39033909160016153cb6153c57f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936153e06153d76103a2565b9283928361527e565b0390a3565b505050565b50826153ff6153f96001611159565b91611159565b14615301565b61540d6103a2565b62461bcd60e51b81528061542360048201615203565b0390fd5b61543090615192565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b615466600e6020926109d5565b61546f81615432565b0190565b6154889060208101905f818303910152615459565b90565b1561549257565b61549a6103a2565b62461bcd60e51b8152806154b060048201615473565b0390fd5b90565b6154cb6154c66154d0926154b4565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b61550760126020926109d5565b615510816154d3565b0190565b6155299060208101905f8183039101526154fa565b90565b1561553357565b61553b6103a2565b62461bcd60e51b81528061555160048201615514565b0390fd5b90565b61556c61556761557192615555565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b6155a860176020926109d5565b6155b181615574565b0190565b6155ca9060208101905f81830391015261559b565b90565b156155d457565b6155dc6103a2565b62461bcd60e51b8152806155f2600482016155b5565b0390fd5b61560060606116bc565b90565b9061561861561361561f9261305b565b613067565b8254613353565b9055565b9061566560405f61566b9461564582820161563f8488016148cd565b90614d40565b61565d828201615657602088016148a4565b9061525e565b019201614fb5565b90615603565b565b9061567791615623565b565b91602061569a92949361569360408201965f830190610c21565b0190611129565b565b336156cf6156c97f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b1480156157bb575b6156e09061548b565b6156fe826156f76156f1603c6154b7565b916103b4565b101561552c565b61571c8361571561570f6001615558565b916104af565b10156155cd565b615775826157648561575b61573d5f61573760028990612287565b016122b1565b916157526157496155f6565b955f87016146f5565b60208501614703565b60408301614ec8565b61577060028490612287565b61566d565b90916157a17fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b926157b66157ad6103a2565b92839283615679565b0390a2565b506156e0336157e56157df6157da6157d5600787906113c5565b6125bd565b6103ef565b916103ef565b1490506156d7565b634e487b7160e01b5f52601260045260245ffd5b61580d61581391610554565b91610554565b90811561581e570490565b6157ed565b61583761583261583c92610554565b610749565b6104af565b90565b61585361584e615858926125ca565b610749565b6103b4565b90565b61587961587461586d60038490610fc8565b8490611012565b614d1d565b906158838161637e565b61588f600184016110a3565b6158a261589c6003611159565b91611159565b14615ab6576158b25f840161093e565b6158c46158be5f612cc2565b91610554565b14615ab0576158fa6158e1426158db5f870161093e565b906135d6565b6158f46158ef5f85016148cd565b61357b565b90615801565b8061590e61590860ff6148da565b91610554565b115f14615aa2575060ff5b908161593861593261592d60018801611076565b6104af565b916104af565b11615945575b5050505050565b615952826001860161525e565b61596761595e5f61583f565b60018601614d40565b61598561597f61597a60208594016148a4565b6104af565b916104af565b101580615a7b575b615998575b8061593e565b6159b36159a7600185016110a3565b93600160029101613381565b6159d16159ca6159c560048590613334565b61334a565b8590616d16565b508190849091615a1f615a0d615a077f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615a166103a2565b91829182611627565b0390a39190916002615a5a615a547f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615a6f615a666103a2565b9283928361527e565b0390a35f808080615992565b50615a88600184016110a3565b615a9b615a956002611159565b91611159565b141561598d565b615aab90615823565b615919565b50505050565b50505050565b606090565b67ffffffffffffffff8111615ad95760208091020190565b6108c3565b90615af0615aeb83615ac1565b6116bc565b918252565b615aff60806116bc565b90565b90615b69615b606003615b13615af5565b94615b2a615b225f8301610900565b5f8801614ec5565b615b42615b396001830161093e565b602088016146e7565b615b5a615b516002830161093e565b604088016146e7565b01610965565b60608401614ec8565b565b615b7490615b02565b90565b90615b8182610792565b615b8a81615ade565b92615b986020850191610796565b5f915b838310615ba85750505050565b60046020600192615bb885615b6b565b815201920192019190615b9b565b615bcf90615b77565b90565b615be9615bee91615be1615abc565b506008610768565b615bc6565b90565b615c1f90615c1a615c15615c0e615c09846006613334565b61334a565b33906164e4565b61351b565b615c7a565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615c55601f6020926109d5565b615c5e81615c21565b0190565b615c779060208101905f818303910152615c48565b90565b615c98615c93615c8c60038490610fc8565b3390611012565b614d1d565b90615ca5600183016110a3565b9182615cba615cb46003611159565b91611159565b14615d4057615cce90600160049101613381565b615cec615ce5615ce060048490613334565b61334a565b3390616d16565b50903390916004615d26615d207f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615d3b615d326103a2565b9283928361527e565b0390a3565b615d486103a2565b62461bcd60e51b815280615d5e60048201615c62565b0390fd5b615d6b90615bf1565b565b909182615d7d81615d8493611d33565b809361171d565b0190565b615d999060209493615da093615d6d565b8092611d64565b0190565b9091615dbb90615db26103a2565b93849384615d88565b03902090565b9091615dcc92615da4565b90565b92615df4615dfc9392615def615e0196615de76127ae565b506009611d07565b611d1d565b919091615dc1565b61093e565b90565b615e0c614aad565b50615e1760016125bd565b90565b615e249051611159565b90565b90565b615e3e615e39615e4392615e27565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615ea060216040926109d5565b615ea981615e46565b0190565b615ec29060208101905f818303910152615e93565b90565b15615ecc57565b615ed46103a2565b62461bcd60e51b815280615eea60048201615ead565b0390fd5b90615f9f615f9a615fa49333615f1f615f19615f14615f0f600786906113c5565b6125bd565b6103ef565b916103ef565b14801561605d575b615f309061548b565b615f4e615f49615f4260038490610fc8565b8690611012565b6147a0565b615f5a60608201615e1a565b615f6d615f676003611159565b91611159565b03615fa7575b50615f92615f8b615f8660058490613334565b61334a565b8590616d16565b506004613334565b61334a565b616d16565b50565b61602390615ff7615fe7615fba8561637e565b615fe1615fdc6020615fd5615fd05f86016148cd565b61357b565b93016148a4565b6148da565b906128f8565b615ff1600a615e2a565b906128f8565b6160025f8301613ead565b61601461600e5f612cc2565b91610554565b119182616029575b5050615ec5565b5f615f73565b61605491925061604861604e916160425f429201613ead565b906135d6565b92610554565b91610554565b10155f8061601c565b50615f303361607b616075616070614ab1565b6103ef565b916103ef565b149050615f27565b906160ad6160b291616093613b22565b506160a86160a08561637e565b946003610fc8565b611012565b6147a0565b6160bd5f8201613ead565b6160cf6160c95f612cc2565b91610554565b1461610a576161006160fb5f6160f4616106946160ee83429201613ead565b906135d6565b94016148cd565b61357b565b91610554565b1090565b50505f90565b6161219061611c616496565b616123565b565b61612e81600161269a565b616136614ab1565b9061616a6161647f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b916161736103a2565b8061617d8161044b565b0390a3565b61618b90616110565b565b5f6161cc6161d2936161c4336161be6161b86161b36161ae60078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b01615603565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b616208600e6020926109d5565b616211816161d4565b0190565b61622a9060208101905f8183039101526161fb565b90565b1561623457565b61623c6103a2565b62461bcd60e51b81528061625260048201616215565b0390fd5b6162923361628c6162867f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b6162b86162b36162ac6162a760068590613334565b61334a565b8490616d16565b61622d565b6162d66162cf6162ca60048490613334565b61334a565b8390616d16565b509061630b6163057f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163146103a2565b8061631e8161044b565b0390a3565b906163706163675f616333612743565b9461634a616342838301611049565b8388016146f5565b616361616358838301611076565b60208801614703565b016122b1565b60408401614ec8565b565b61637b90616323565b90565b61639561639a9161638d61278e565b506002612287565b616372565b6163a55f82016148cd565b6163b76163b15f61583f565b916103b4565b146163fd575b6163c9602082016148a4565b6163db6163d55f6148b1565b916104af565b146163e4575b90565b6163f86163ef61160f565b60208301614703565b6163e1565b616410616408610c08565b5f83016146f5565b6163bd565b61641e90610fde565b90565b61643561643061643a926103e4565b610749565b610554565b90565b61645161644c61645692610554565b612677565b610f01565b90565b90565b9061648e61648861648361647e5f61649396616476613b22565b500194616415565b616421565b61643d565b91616459565b616df9565b90565b61649e614ab1565b6164b76164b16164ac616bc4565b6103ef565b916103ef565b036164be57565b6164e06164c9616bc4565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b9061651661651061650b6165065f61651b966164fe613b22565b500194616415565b616421565b61643d565b91616459565b616e5c565b90565b61653d916165349161652e614aad565b50616ebc565b90929192616f7c565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61657460136020926109d5565b61657d81616540565b0190565b6165969060208101905f818303910152616567565b90565b156165a057565b6165a86103a2565b62461bcd60e51b8152806165be60048201616581565b0390fd5b6165cb90610f01565b90565b6165d790610922565b90565b906165ef6165ea6165f6926165c2565b6165ce565b8254613002565b9055565b616603906103b4565b67ffffffffffffffff81146166185760010190565b6128e4565b90565b61663461662f6166399261661d565b610749565b6104af565b90565b91602061665d92949361665660408201965f830190611129565b0190610557565b565b61666890610fde565b90565b6166749061665f565b90565b61668090610ffa565b90565b6040906166ac6166b394969593966166a260608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b94929391936166d86166d36166cc60038990610fc8565b8790611012565b614d1d565b936166e28761637e565b9361670c6166f2600188016110a3565b6167056166ff6003611159565b91611159565b1415616599565b61672a61672361671e60058b90613334565b61334a565b889061645c565b506167ff604061673c600189016110a3565b96616749425f8b01613018565b616773616757858790613654565b61676961676382613668565b91613662565b2060028b016165da565b61678861677f5f6148b1565b60018b0161525e565b6167a660018a016167a061679b82611049565b6165fa565b90614d40565b6167ae613c56565b50856167c26167bc5f6148b1565b916104af565b145f14616a83576167d95f995b60018b9101613381565b876167ed6167e76002611159565b91611159565b1480616a67575b6169f9575b01614fb5565b806169d5575b6169bf575b505085918591924261684e6168486168427f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b9461686361685a6103a2565b9283928361663c565b0390a48061687961687384611159565b91611159565b03616969575b505061688b600b6125bd565b6168a561689f61689a5f6125e9565b6103ef565b916103ef565b036168af575b5050565b6168c96168c46168bf600b6125bd565b61666b565b616677565b9163d47853b69190926168db42613597565b92813b15616964575f6169019161690c82966168f56103a2565b98899788968795614af0565b855260048501616683565b03925af19081616938575b50155f1461693357600161692e575b5b5f806168ab565b616926565b616927565b616957905f3d811161695d575b61694f81836108d7565b810190614af6565b5f616917565b503d616945565b614aec565b838391926169a061699a7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936169b56169ac6103a2565b9283928361527e565b0390a35f8061687f565b6169ce91889188909192617439565b5f8061680a565b506169e1818390612d7e565b6169f36169ed5f612cc2565b91610554565b11616805565b616a16616a0f616a0a8d6004613334565b61334a565b8b9061645c565b508a8a616a4c616a467fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616a556103a2565b80616a5f8161044b565b0390a36167f9565b5088616a7c616a766002611159565b91611159565b14156167f4565b85616a97616a916064616620565b916104af565b105f14616aaa576167d96001995b6167cf565b6167d9600199616ac28d8d8b908b908a928c946170ed565b616aa5565b616ade5f616ae392616ad76127ae565b5001616459565b6175f7565b90565b616af2616af791610922565b61297e565b90565b616b0e616b09616b1392610554565b610749565b6103e4565b90565b616b41616b3c616b4b93616b375f616b4695616b30614aad565b5001616459565b617665565b616ae6565b616afa565b610ffa565b90565b91906008616b6e910291616b6860018060a01b0384612955565b92612955565b9181191691161790565b9190616b8e616b89616b9693611006565b612697565b908354616b4e565b9055565b616bac91616ba6614aad565b91616b78565b565b616bc290616bbd5f6001616b9a565b617686565b565b616bcc614aad565b503390565b616bda90610554565b5f198114616be85760010190565b6128e4565b616bf790516103ef565b90565b93919293616c066139f3565b50616c1a616c158584906135d6565b613a31565b92616c245f612cc2565b925b80616c39616c3388610554565b91610554565b1015616ca757616c5d616c56616c5160058690613334565b61334a565b8290616b16565b616c6984828a916176e5565b616c7d575b50616c7890612cde565b616c26565b616c789194616c9b616ca092616c968991849092613a58565b613a78565b616bd1565b9390616c6e565b509450509150616cb682613a31565b92616cc05f612cc2565b5b80616cd4616cce86610554565b91610554565b1015616d1057616d0b90616d06616cf4616cef868490613a58565b616bed565b616d018891849092613a58565b613a78565b612cde565b616cc1565b50915050565b90616d48616d42616d3d616d385f616d4d96616d30613b22565b500194616415565b616421565b61643d565b91616459565b617831565b90565b90565b5f5260205f2090565b5490565b616d6981616d5c565b821015616d8357616d7b600191616d53565b910201905f90565b61077e565b9190616d9e616d99616da6936165c2565b6165ce565b908354612959565b9055565b9081549168010000000000000000831015616dda5782616dd2916001616dd895018155616d60565b90616d88565b565b6108c3565b5490565b90616ded906165c2565b5f5260205260405f2090565b616e01613b22565b50616e16616e10828490616e5c565b156104c2565b5f14616e5657616e4c616e5192616e38616e315f8501616d50565b8290616daa565b6001616e455f8501616ddf565b9301616de3565b613018565b600190565b50505f90565b616e7a916001616e7592616e6e613b22565b5001616de3565b61093e565b616e8c616e865f612cc2565b91610554565b141590565b5f90565b5f90565b90565b616eb0616eab616eb592616e99565b610749565b610554565b90565b5f90565b919091616ec7614aad565b50616ed0616e91565b50616ed9616e95565b50616ee383613668565b616ef6616ef06041616e9c565b91610554565b145f14616f3d57616f369192616f0a616e95565b50616f13616e95565b50616f1c616eb8565b506020810151606060408301519201515f1a9091926179b0565b9192909190565b50616f475f6125e9565b90616f5b616f56600294613668565b61643d565b91929190565b60041115616f6b57565b611136565b90616f7a82616f61565b565b80616f8f616f895f616f70565b91616f70565b145f14616f9a575050565b80616fae616fa86001616f70565b91616f70565b145f14616fd1575f63f645eedf60e01b815280616fcd6004820161044b565b0390fd5b80616fe5616fdf6002616f70565b91616f70565b145f146170135761700f616ff883616ae6565b5f91829163fce698f760e01b835260048301610564565b0390fd5b6170266170206003616f70565b91616f70565b1461702e5750565b617049905f9182916335e2f38360e21b835260048301610f11565b0390fd5b61706161705c6170669261130e565b610749565b6104af565b90565b61707561707b916103b4565b916103b4565b90039067ffffffffffffffff821161708f57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b6170c8601b6020926109d5565b6170d181617094565b0190565b6170ea9060208101905f8183039101526170bb565b90565b93505092506171056170ff60c861704d565b916104af565b1015617110575b5050565b61711942613597565b61713761713261712b600c85906147d8565b85906147ee565b611049565b8061714a6171445f61583f565b916103b4565b149081156171d0575b5061715f575b5061710c565b61717e90617179617172600c85906147d8565b85906147ee565b614d40565b906171b26171ac7f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916171bb6103a2565b806171c5816170d5565b0390a35f8080617159565b6171db915082617069565b6171f46171ee6171e9610f7a565b6103b4565b916103b4565b10155f617153565b90565b61721361720e617218926171fc565b610749565b610554565b90565b9092919261723061722b826116fa565b6116bc565b9381855260208501908284011161724c5761724a926109de565b565b6116f6565b9080601f8301121561726f5781602061726c9351910161721b565b90565b6105af565b90505190617281826106f9565b565b9190916040818403126172d65761729a60406116bc565b925f8201519167ffffffffffffffff83116172d1576172be826172ca948301617251565b5f860152602001617274565b6020830152565b6116f2565b6116ee565b9291906172ef6172ea826116d1565b6116bc565b93818552602080860192028101918383116173465781905b838210617315575050505050565b815167ffffffffffffffff8111617341576020916173368784938701617283565b815201910190617307565b6105af565b6105b7565b9080601f8301121561736957816020617366935191016172db565b90565b6105af565b9060208282031261739e575f82015167ffffffffffffffff811161739957617396920161734b565b90565b6103b0565b6103ac565b60209181520190565b91906173c6816173bf816173cb956173a3565b809561171d565b6108b9565b0190565b90916173e69260208301925f8185039101526173ac565b90565b6173f36032611551565b90565b9493916060916174379461742261742f9361741860808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b91617445818590612d7e565b6174576174515f612cc2565b91610554565b146175f157617467818590612d7e565b61747b61747561c3506171ff565b91610554565b116175eb575f617489613978565b9461749330613c85565b6174b56331e3bd1b9492946174c06174a96103a2565b96879586948594614af0565b8452600484016173cf565b03915afa80915f926175c7575b50155f146175be575060016175b9575b6174e683610d97565b6174ff6174f96174f46173e9565b610554565b91610554565b115f146175ab5761750e6173e9565b5b61751830613c85565b906365a6936e93929490823b156175a6575f9461755386926175489461753c6103a2565b998a9889978896614af0565b8652600486016173f6565b03925af1908161757a575b50155f14617575576001617570575b5b565b61756d565b61756e565b617599905f3d811161759f575b61759181836108d7565b810190614af6565b5f61755e565b503d617587565b614aec565b6175b483610d97565b61750f565b505050565b909250916174dd565b6175e49192503d805f833e6175dc81836108d7565b81019061736e565b905f6174cd565b50505050565b50505050565b5f61760b916176046127ae565b5001616ddf565b90565b5f5260205f2090565b61762081616ddf565b82101561763a5761763260019161760e565b910201905f90565b61077e565b61764f9060086176549302610c78565b6110b0565b90565b90617662915461763f565b90565b617683915f61767d92617676616e95565b5001617617565b90617657565b90565b61768f5f6125bd565b617699825f61269a565b906176cd6176c77f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916176d66103a2565b806176e08161044b565b0390a3565b6176ed613b22565b5061771561770f61770861770360068590613334565b61334a565b84906164e4565b156104c2565b6177b7576177359161772b617730926003610fc8565b611012565b6147a0565b6177405f8201613ead565b61775261774c5f612cc2565b91610554565b148015617791575b61778b5761778061777a617786926177745f429201613ead565b906135d6565b92610554565b91610554565b101590565b50505f90565b5061779e60608201615e1a565b6177b16177ab6003611159565b91611159565b1461775a565b5050505f90565b6177d26177cd6177d792615555565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b617800916177fa616e95565b91616d88565b565b61780b81616d5c565b801561782c5760019003906178296178238383616d60565b906177ee565b55565b6177da565b617839613b22565b5061785061784b600183018490616de3565b61093e565b908161786461785e5f612cc2565b91610554565b14155f14617930576178e29260016178dd928461788b5f96617885856177be565b906135d6565b6178a8617899888501616ddf565b6178a2866177be565b906135d6565b816178bb6178b583610554565b91610554565b036178e7575b5050506178d76178d2868301616d50565b617802565b01616de3565b6129bf565b600190565b6179289261791a617906617900617923948c8901617617565b90617657565b9361791485918c8901617617565b90616d88565b91858501616de3565b613018565b5f80806178c1565b5050505f90565b90565b61794e61794961795392617937565b610749565b610554565b90565b61798b61799294617981606094989795617977608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179a86179a36179ad926125ca565b612677565b610f01565b90565b9392936179bb614aad565b506179c4616e91565b506179cd616e95565b506179d785616ae6565b617a09617a037f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a061793a565b91610554565b11617a965790617a2c602094955f94939293617a236103a2565b94859485617956565b838052039060015afa15617a9157617a445f51612677565b80617a5f617a59617a545f6125e9565b6103ef565b916103ef565b14617a75575f91617a6f5f617994565b91929190565b50617a7f5f6125e9565b600191617a8b5f617994565b91929190565b614b28565b505050617aa25f6125e9565b906003929192919056fea164736f6c634300081a000a + ///0x60806040526004361015610013575b612523565b61001d5f3561039c565b806305778550146103975780630758236f146103925780630c76697a1461038d578063191cbd1a146103885780631e8f5ee514610383578063208129561461037e57806322f1ec93146103795780632bf4d6a7146103745780632c9576881461036f5780632dae18851461036a5780632f4bd7b81461036557806331e3bd1b146103605780633644e5151461035b5780633ac3cbe6146103565780633e6e34a7146103515780633fd62c6d1461034c57806340235a9c1461034757806348f4da20146103425780635685cf681461033d57806356c4e17d1461033857806359dcea12146103335780635a936dc61461032e5780635cce98a6146103295780636076439c1461032457806360cf09911461031f57806361d6b86c1461031a57806362c7e8fc1461031557806365a6936e146103105780636bfe06a61461030b578063715018a61461030657806371e7388c146103015780637639d227146102fc57806379ba5097146102f75780637b9f64b2146102f257806381beac2e146102ed57806384ef7322146102e85780638da5cb5b146102e357806396686c1e146102de5780639cbdae22146102d9578063adff830c146102d4578063ae470a85146102cf578063b074e9dd146102ca578063b99f6759146102c5578063ba1fb103146102c0578063c1ef9ddf146102bb578063c5d960bb146102b6578063cfe34749146102b1578063d551162c146102ac578063da435a7c146102a7578063e30c3978146102a2578063e65cafcb1461029d578063ee1c039014610298578063f2fde38b14610293578063f9107f3b1461028e578063f9f16762146102895763ffcf08f00361000e576124ef565b6124ba565b612457565b6123f7565b6123c1565b61238d565b612358565b612320565b61224e565b612219565b6121d7565b6121a2565b612078565b612044565b611fd7565b611f9d565b611ed2565b611e0b565b611c82565b611bc8565b611b95565b611b5e565b611ac9565b611a96565b611a60565b611a2a565b61196e565b611939565b6118cb565b611686565b61163c565b6115ba565b611585565b611517565b611482565b611429565b6113f4565b61138f565b611345565b6112d9565b611205565b6111cb565b610f93565b610f26565b610ea7565b610d2c565b610cde565b610c43565b610b9d565b610a6a565b6106c6565b610674565b610640565b610579565b61051f565b610450565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff1690565b6103ca816103b4565b036103d157565b5f80fd5b905035906103e2826103c1565b565b60018060a01b031690565b6103f8906103e4565b90565b610404816103ef565b0361040b57565b5f80fd5b9050359061041c826103fb565b565b9190604083820312610446578061043a610443925f86016103d5565b9360200161040f565b90565b6103ac565b5f0190565b3461047f5761046961046336600461041e565b906126ba565b6104716103a2565b8061047b8161044b565b0390f35b6103a8565b9060208282031261049d5761049a915f016103d5565b90565b6103ac565b6104ab906103b4565b9052565b60ff1690565b6104be906104af565b9052565b151590565b6104d0906104c2565b9052565b90604080610508936104ec5f8201515f8601906104a2565b6104fe602082015160208601906104b5565b01519101906104c7565b565b919061051d905f606085019401906104d4565b565b3461054f5761054b61053a610535366004610484565b612799565b6105426103a2565b9182918261050a565b0390f35b6103a8565b90565b61056090610554565b9052565b9190610577905f60208501940190610557565b565b346105aa576105a661059561058f36600461041e565b906127b2565b61059d6103a2565b91829182610564565b0390f35b6103a8565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156105f55781359167ffffffffffffffff83116105f05760200192602083028401116105eb57565b6105b7565b6105b3565b6105af565b91909160408184031261063b57610613835f83016103d5565b92602082013567ffffffffffffffff81116106365761063292016105bb565b9091565b6103b0565b6103ac565b3461066f576106596106533660046105fa565b9161313b565b6106616103a2565b8061066b8161044b565b0390f35b6103a8565b346106a35761068d61068736600461041e565b9061342b565b6106956103a2565b8061069f8161044b565b0390f35b6103a8565b906020828203126106c1576106be915f0161040f565b90565b6103ac565b346106f4576106de6106d93660046106a8565b613560565b6106e66103a2565b806106f08161044b565b0390f35b6103a8565b61070281610554565b0361070957565b5f80fd5b9050359061071a826106f9565b565b91906040838203126107445780610738610741925f86016103d5565b9360200161070d565b90565b6103ac565b90565b61076061075b610765926103b4565b610749565b6103b4565b90565b906107729061074c565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b5f5260205f2090565b6107b181610792565b8210156107cb576107c3600491610796565b910201905f90565b61077e565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610804575b60208310146107ff57565b6107d0565b91607f16916107f4565b60209181520190565b5f5260205f2090565b905f929180549061083a610833836107e4565b809461080e565b916001811690815f146108915750600114610855575b505050565b6108629192939450610817565b915f925b81841061087957505001905f8080610850565b60018160209295939554848601520191019290610866565b92949550505060ff19168252151560200201905f8080610850565b906108b691610820565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906108e1906108b9565b810190811067ffffffffffffffff8211176108fb57604052565b6108c3565b90610920610919926109106103a2565b938480926108ac565b03836108d7565b565b5f1c90565b90565b61093661093b91610922565b610927565b90565b610948905461092a565b90565b60ff1690565b61095d61096291610922565b61094b565b90565b61096f9054610951565b90565b61097d906008610768565b9061098782610792565b8110156109cd57610997916107a8565b50906109a45f8301610900565b916109b16001820161093e565b916109ca60036109c36002850161093e565b9301610965565b90565b5f80fd5b5190565b60209181520190565b90825f9392825e0152565b610a08610a11602093610a16936109ff816109d1565b938480936109d5565b958691016109de565b6108b9565b0190565b610a23906104c2565b9052565b610a61610a6894610a57610a4c6060959998969960808601908682035f8801526109e9565b986020850190610557565b6040830190610557565b0190610a1a565b565b34610a9f57610a9b610a86610a8036600461071c565b90610972565b90610a929492946103a2565b94859485610a27565b0390f35b6103a8565b610aad816104af565b03610ab457565b5f80fd5b90503590610ac582610aa4565b565b909182601f83011215610b015781359167ffffffffffffffff8311610afc576020019260018302840111610af757565b6105b7565b6105b3565b6105af565b919060c083820312610b9857610b1e815f85016103d5565b92610b2c82602083016103d5565b92610b3a8360408401610ab8565b92606083013567ffffffffffffffff8111610b935781610b5b918501610ac7565b929093610b6b83608083016103d5565b9260a082013567ffffffffffffffff8111610b8e57610b8a9201610ac7565b9091565b6103b0565b6103b0565b6103ac565b34610bd557610bbf610bb0366004610b06565b96959095949194939293613a0f565b610bc76103a2565b80610bd18161044b565b0390f35b6103a8565b5f910312610be457565b6103ac565b90565b610c00610bfb610c0592610be9565b610749565b6103b4565b90565b610c1361012c610bec565b90565b610c1e610c08565b90565b610c2a906103b4565b9052565b9190610c41905f60208501940190610c21565b565b34610c7357610c53366004610bda565b610c6f610c5e610c16565b610c666103a2565b91829182610c2e565b0390f35b6103a8565b1c90565b60018060a01b031690565b610c97906008610c9c9302610c78565b610c7c565b90565b90610caa9154610c87565b90565b610cb9600b5f90610c9f565b90565b610cc5906103ef565b9052565b9190610cdc905f60208501940190610cbc565b565b34610d0e57610cee366004610bda565b610d0a610cf9610cad565b610d016103a2565b91829182610cc9565b0390f35b6103a8565b610d1e61012c610bec565b90565b610d29610d13565b90565b34610d5c57610d3c366004610bda565b610d58610d47610d21565b610d4f6103a2565b91829182610c2e565b0390f35b6103a8565b90602082820312610d92575f82013567ffffffffffffffff8111610d8d57610d899201610ac7565b9091565b6103b0565b6103ac565b5190565b60209181520190565b60200190565b610dc9610dd2602093610dd793610dc0816109d1565b9384809361080e565b958691016109de565b6108b9565b0190565b610de490610554565b9052565b90610e1290602080610e07604084015f8701518582035f870152610daa565b940151910190610ddb565b90565b90610e1f91610de8565b90565b60200190565b90610e3c610e3583610d97565b8092610d9b565b9081610e4d60208302840194610da4565b925f915b838310610e6057505050505090565b90919293946020610e82610e7c83856001950387528951610e15565b97610e22565b9301930191939290610e51565b610ea49160208201915f818403910152610e28565b90565b34610ed857610ed4610ec3610ebd366004610d61565b90613a5b565b610ecb6103a2565b91829182610e8f565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b90565b610f0d90610f01565b9052565b9190610f24905f60208501940190610f04565b565b34610f5657610f36366004610bda565b610f52610f41610edd565b610f496103a2565b91829182610f11565b0390f35b6103a8565b90565b610f72610f6d610f7792610f5b565b610749565b6103b4565b90565b610f85610e10610f5e565b90565b610f90610f7a565b90565b34610fc357610fa3366004610bda565b610fbf610fae610f88565b610fb66103a2565b91829182610c2e565b0390f35b6103a8565b90610fd29061074c565b5f5260205260405f2090565b610ff2610fed610ff7926103e4565b610749565b6103e4565b90565b61100390610fde565b90565b61100f90610ffa565b90565b9061101c90611006565b5f5260205260405f2090565b67ffffffffffffffff1690565b61104161104691610922565b611028565b90565b6110539054611035565b90565b60401c90565b60ff1690565b61106e61107391611056565b61105c565b90565b6110809054611062565b90565b60481c90565b60ff1690565b61109b6110a091611083565b611089565b90565b6110ad905461108f565b90565b90565b6110bf6110c491610922565b6110b0565b90565b6110d190546110b3565b90565b906110e36110e8926003610fc8565b611012565b6110f35f820161093e565b9161110060018301611049565b9161110d60018201611076565b91611126600261111f600185016110a3565b93016110c7565b90565b611132906104af565b9052565b634e487b7160e01b5f52602160045260245ffd5b6005111561115457565b611136565b906111638261114a565b565b61116e90611159565b90565b61117a90611165565b9052565b909594926111c9946111b86111c2926111ae6080966111a460a088019c5f890190610557565b6020870190610c21565b6040850190611129565b6060830190611171565b0190610f04565b565b34611200576111fc6111e76111e136600461041e565b906110d4565b916111f39593956103a2565b9586958661117e565b0390f35b6103a8565b346112355761123161122061121b366004610484565b613a75565b6112286103a2565b91829182610564565b0390f35b6103a8565b5190565b60209181520190565b60200190565b611256906103ef565b9052565b906112678160209361124d565b0190565b60200190565b9061128e6112886112818461123a565b809361123e565b92611247565b905f5b81811061129e5750505090565b9091926112b76112b1600192865161125a565b9461126b565b9101919091611291565b6112d69160208201915f818403910152611271565b90565b34611309576113056112f46112ef366004610484565b613b2f565b6112fc6103a2565b918291826112c1565b0390f35b6103a8565b90565b61132561132061132a9261130e565b610749565b610554565b90565b61133760c8611311565b90565b61134261132d565b90565b3461137557611355366004610bda565b61137161136061133a565b6113686103a2565b91829182610564565b0390f35b6103a8565b919061138d905f60208501940190610a1a565b565b346113c0576113bc6113ab6113a536600461041e565b90613bcf565b6113b36103a2565b9182918261137a565b0390f35b6103a8565b906113cf9061074c565b5f5260205260405f2090565b6113f1906113ec6007915f926113c5565b610c9f565b90565b346114245761142061140f61140a366004610484565b6113db565b6114176103a2565b91829182610cc9565b0390f35b6103a8565b346114595761145561144461143f366004610484565b613c56565b61144c6103a2565b918291826112c1565b0390f35b6103a8565b7f000000000000000000000000000000000000000000000000000000000000000090565b346114b257611492366004610bda565b6114ae61149d61145e565b6114a56103a2565b91829182610cc9565b0390f35b6103a8565b90608082820312611512576114ce815f84016103d5565b926114dc82602085016103d5565b926114ea8360408301610ab8565b92606082013567ffffffffffffffff811161150d576115099201610ac7565b9091565b6103b0565b6103ac565b346115495761153361152a3660046114b7565b93929092613cc8565b61153b6103a2565b806115458161044b565b0390f35b6103a8565b90565b61156561156061156a9261154e565b610749565b610554565b90565b6115776032611551565b90565b61158261156d565b90565b346115b557611595366004610bda565b6115b16115a061157a565b6115a86103a2565b91829182610564565b0390f35b6103a8565b346115eb576115e76115d66115d036600461041e565b90613cd7565b6115de6103a2565b9182918261137a565b0390f35b6103a8565b90565b61160761160261160c926115f0565b610749565b6104af565b90565b61161960036115f3565b90565b61162461160f565b90565b919061163a905f60208501940190611129565b565b3461166c5761164c366004610bda565b61166861165761161c565b61165f6103a2565b91829182611627565b0390f35b6103a8565b9190611684905f60208501940190611171565b565b346116b7576116b36116a261169c36600461041e565b90613d03565b6116aa6103a2565b91829182611671565b0390f35b6103a8565b906116cf6116c86103a2565b92836108d7565b565b67ffffffffffffffff81116116e95760208091020190565b6108c3565b5f80fd5b5f80fd5b5f80fd5b67ffffffffffffffff8111611718576117146020916108b9565b0190565b6108c3565b90825f939282370152565b9092919261173d611738826116fa565b6116bc565b93818552602085019082840111611759576117579261171d565b565b6116f6565b9080601f8301121561177c5781602061177993359101611728565b90565b6105af565b9190916040818403126117d45761179860406116bc565b925f8201359167ffffffffffffffff83116117cf576117bc826117c894830161175e565b5f86015260200161070d565b6020830152565b6116f2565b6116ee565b9291906117ed6117e8826116d1565b6116bc565b93818552602080860192028101918383116118445781905b838210611813575050505050565b813567ffffffffffffffff811161183f576020916118348784938701611781565b815201910190611805565b6105af565b6105b7565b9080601f8301121561186757816020611864933591016117d9565b90565b6105af565b6080818303126118c657611882825f83016103d5565b92611890836020840161040f565b9260408301359067ffffffffffffffff82116118c1576118b5816118be938601611849565b9360600161070d565b90565b6103b0565b6103ac565b346118fd576118e76118de36600461186c565b929190916140e9565b6118ef6103a2565b806118f98161044b565b0390f35b6103a8565b90565b61191961191461191e92611902565b610749565b610554565b90565b61192b6040611905565b90565b611936611921565b90565b3461196957611949366004610bda565b61196561195461192e565b61195c6103a2565b91829182610564565b0390f35b6103a8565b3461199c5761197e366004610bda565b611986614718565b61198e6103a2565b806119988161044b565b0390f35b6103a8565b6119aa90611165565b9052565b6119b790610f01565b9052565b90608080611a13936119d35f8201515f860190610ddb565b6119e5602082015160208601906104a2565b6119f7604082015160408601906104b5565b611a09606082015160608601906119a1565b01519101906119ae565b565b9190611a28905f60a085019401906119bb565b565b34611a5b57611a57611a46611a4036600461041e565b90614855565b611a4e6103a2565b91829182611a15565b0390f35b6103a8565b34611a9157611a8d611a7c611a7636600461041e565b906148ad565b611a846103a2565b91829182610c2e565b0390f35b6103a8565b34611ac457611aa6366004610bda565b611aae6148d5565b611ab66103a2565b80611ac08161044b565b0390f35b6103a8565b34611af957611af5611ae4611adf366004610484565b614926565b611aec6103a2565b91829182610564565b0390f35b6103a8565b9091606082840312611b3357611b30611b19845f85016103d5565b93611b27816020860161070d565b9360400161070d565b90565b6103ac565b92916020611b54611b5c9360408701908782035f890152611271565b940190610557565b565b34611b9057611b77611b71366004611afe565b916149c4565b90611b8c611b836103a2565b92839283611b38565b0390f35b6103a8565b34611bc357611bad611ba83660046106a8565b614b4b565b611bb56103a2565b80611bbf8161044b565b0390f35b6103a8565b34611bf857611bd8366004610bda565b611bf4611be3614b5a565b611beb6103a2565b91829182610cc9565b0390f35b6103a8565b909182601f83011215611c375781359167ffffffffffffffff8311611c32576020019260208302840111611c2d57565b6105b7565b6105b3565b6105af565b919091604081840312611c7d57611c55835f83016103d5565b92602082013567ffffffffffffffff8111611c7857611c749201611bfd565b9091565b6103b0565b6103ac565b34611cb157611c9b611c95366004611c3c565b91614be1565b611ca36103a2565b80611cad8161044b565b0390f35b6103a8565b91606083830312611d0257611ccd825f85016103d5565b92611cdb836020830161040f565b92604082013567ffffffffffffffff8111611cfd57611cfa920161175e565b90565b6103b0565b6103ac565b90611d119061074c565b5f5260205260405f2090565b90611d2790611006565b5f5260205260405f2090565b905090565b611d5d611d5492602092611d4b816109d1565b94858093611d33565b938491016109de565b0190565b90565b611d70611d7591610554565b611d61565b9052565b611d89611d909160209493611d38565b8092611d64565b0190565b611da8611d9f6103a2565b92839283611d79565b03902090565b611db791611d94565b90565b611dca906008611dcf9302610c78565b610927565b90565b90611ddd9154611dba565b90565b90611e0892611dfe611e0392611df96009955f96611d07565b611d1d565b611dae565b611dd2565b90565b34611e3c57611e38611e27611e21366004611cb6565b91611de0565b611e2f6103a2565b91829182610564565b0390f35b6103a8565b909182601f83011215611e7b5781359167ffffffffffffffff8311611e76576020019260018302840111611e7157565b6105b7565b6105b3565b6105af565b91606083830312611ecd57611e97825f85016103d5565b92611ea5836020830161040f565b92604082013567ffffffffffffffff8111611ec857611ec49201611e41565b9091565b6103b0565b6103ac565b34611f0457611eee611ee5366004611e80565b92919091614e46565b611ef66103a2565b80611f008161044b565b0390f35b6103a8565b611f12816104c2565b03611f1957565b5f80fd5b90503590611f2a82611f09565b565b91909160a081840312611f9857611f45835f83016103d5565b92602082013567ffffffffffffffff8111611f935781611f66918401611e41565b929093611f90611f79846040850161070d565b93611f87816060860161070d565b93608001611f1d565b90565b6103b0565b6103ac565b34611fd257611fbc611fb0366004611f2c565b9493909392919261511b565b611fc46103a2565b80611fce8161044b565b0390f35b6103a8565b3461200557611fef611fea366004610484565b6154d0565b611ff76103a2565b806120018161044b565b0390f35b6103a8565b909160608284031261203f5761203c612025845f85016103d5565b9361203381602086016103d5565b93604001610ab8565b90565b6103ac565b346120735761205d61205736600461200a565b91615745565b6120656103a2565b8061206f8161044b565b0390f35b6103a8565b346120a75761209161208b36600461041e565b90615904565b6120996103a2565b806120a38161044b565b0390f35b6103a8565b5190565b60209181520190565b60200190565b9061210d906060806120de608084015f8701518582035f870152610daa565b946120f160208201516020860190610ddb565b61210360408201516040860190610ddb565b01519101906104c7565b90565b9061211a916120bf565b90565b60200190565b90612137612130836120ac565b80926120b0565b9081612148602083028401946120b9565b925f915b83831061215b57505050505090565b9091929394602061217d61217783856001950387528951612110565b9761211d565b930193019193929061214c565b61219f9160208201915f818403910152612123565b90565b346121d2576121ce6121bd6121b8366004610484565b615c7b565b6121c56103a2565b9182918261218a565b0390f35b6103a8565b34612205576121ef6121ea366004610484565b615e0b565b6121f76103a2565b806122018161044b565b0390f35b6103a8565b612216600a5f90610c9f565b90565b3461224957612229366004610bda565b61224561223461220a565b61223c6103a2565b91829182610cc9565b0390f35b6103a8565b346122825761227e61226d612264366004611e80565b92919091615e78565b6122756103a2565b91829182610564565b0390f35b6103a8565b906122919061074c565b5f5260205260405f2090565b6122a96122ae91611083565b61094b565b90565b6122bb905461229d565b90565b6122c9906002612287565b6122d45f8201611049565b916122eb5f6122e4818501611076565b93016122b1565b90565b60409061231761231e949695939661230d60608401985f850190610c21565b6020830190611129565b0190610a1a565b565b346123535761234f61233b612336366004610484565b6122be565b6123469391936103a2565b938493846122ee565b0390f35b6103a8565b3461238857612368366004610bda565b612384612373615ead565b61237b6103a2565b91829182610cc9565b0390f35b6103a8565b346123bc576123a66123a036600461041e565b90615f97565b6123ae6103a2565b806123b88161044b565b0390f35b6103a8565b346123f2576123ee6123dd6123d736600461041e565b9061612c565b6123e56103a2565b9182918261137a565b0390f35b6103a8565b346124255761240f61240a3660046106a8565b61622b565b6124176103a2565b806124218161044b565b0390f35b6103a8565b9190604083820312612452578061244661244f925f86016103d5565b93602001611f1d565b90565b6103ac565b346124865761247061246a36600461242a565b90616236565b6124786103a2565b806124828161044b565b0390f35b6103a8565b7f32721f8dc67e953c540da90f663059c23fc47f70d11e317ed6d5a24c8b85637490565b6124b761248b565b90565b346124ea576124ca366004610bda565b6124e66124d56124af565b6124dd6103a2565b91829182610f11565b0390f35b6103a8565b3461251e5761250861250236600461041e565b906162ff565b6125106103a2565b8061251a8161044b565b0390f35b6103a8565b5f80fd5b5f7f4f6e6c792054616e676c6520636f726500000000000000000000000000000000910152565b61255b60106020926109d5565b61256481612527565b0190565b61257d9060208101905f81830391015261254e565b90565b1561258757565b61258f6103a2565b62461bcd60e51b8152806125a560048201612568565b0390fd5b6125b56125ba91610922565b610c7c565b90565b6125c790546125a9565b90565b90565b6125e16125dc6125e6926125ca565b610749565b6103e4565b90565b6125f2906125cd565b90565b5f7f416c726561647920726567697374657265640000000000000000000000000000910152565b61262960126020926109d5565b612632816125f5565b0190565b61264b9060208101905f81830391015261261c565b90565b1561265557565b61265d6103a2565b62461bcd60e51b81528061267360048201612636565b0390fd5b5f1b90565b9061268d60018060a01b0391612677565b9181191691161790565b90565b906126af6126aa6126b692611006565b612697565b825461267c565b9055565b61273c612741926126fd336126f76126f17f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61273461271461270f600786906113c5565b6125bd565b61272e6127286127235f6125e9565b6103ef565b916103ef565b1461264e565b9160076113c5565b61269a565b565b61274d60606116bc565b90565b5f90565b5f90565b5f90565b612764612743565b906020808084612772612750565b81520161277d612754565b815201612788612758565b81525050565b61279661275c565b90565b6127ab906127a561278e565b50616427565b90565b5f90565b6127d36127d9926127ce5f936127c66127ae565b506003610fc8565b611012565b0161093e565b90565b5f7f4e6f742073657276696365206f776e6572000000000000000000000000000000910152565b61281060116020926109d5565b612819816127dc565b0190565b6128329060208101905f818303910152612803565b90565b1561283c57565b6128446103a2565b62461bcd60e51b81528061285a6004820161281d565b0390fd5b5090565b5f7f546f6f206d616e7920646566696e6974696f6e73000000000000000000000000910152565b61289660146020926109d5565b61289f81612862565b0190565b6128b89060208101905f818303910152612889565b90565b156128c257565b6128ca6103a2565b62461bcd60e51b8152806128e0600482016128a3565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61290761290d91939293610554565b92610554565b91612919838202610554565b92818404149015171561292857565b6128e4565b6129389060046128f8565b90565b9061294e905f1990602003600802610c78565b8154169055565b1b90565b9190600861297491029161296e5f1984612955565b92612955565b9181191691161790565b61299261298d61299792610554565b610749565b610554565b90565b90565b91906129b36129ae6129bb9361297e565b61299a565b908354612959565b9055565b6129d1916129cb6127ae565b9161299d565b565b5b8181106129df575050565b806129ec5f6001936129bf565b016129d4565b90612a02905f1990600802610c78565b191690565b81612a11916129f2565b906002021790565b905f91612a30612a2882610817565b928354612a07565b905555565b601f602091010490565b919290602082105f14612a9857601f8411600114612a6857612a62929350612a07565b90555b5b565b5090612a8e612a93936001612a85612a7f85610817565b92612a35565b820191016129d3565b612a19565b612a65565b50612acf8293612aa9600194610817565b612ac8612ab585612a35565b820192601f861680612ada575b50612a35565b01906129d3565b600202179055612a66565b612ae69088860361293b565b5f612ac2565b929091680100000000000000008211612b4c576020115f14612b3d57602081105f14612b2157612b1b91612a07565b90555b5b565b60019160ff1916612b3184610817565b55600202019055612b1e565b60019150600202019055612b1f565b6108c3565b908154612b5d816107e4565b90818311612b86575b818310612b74575b50505050565b612b7d93612a3f565b5f808080612b6e565b612b9283838387612aec565b612b66565b5f612ba191612b51565b565b634e487b7160e01b5f525f60045260245ffd5b905f03612bc857612bc690612b97565b565b612ba3565b60035f91612bdd83808301612bb6565b612bea83600183016129bf565b612bf783600283016129bf565b0155565b905f03612c0d57612c0b90612bcd565b565b612ba3565b5b818110612c1e575050565b80612c2b5f600493612bfb565b01612c13565b9091828110612c40575b505050565b612c5e612c58612c52612c699561292d565b9261292d565b92610796565b918201910190612c12565b5f8080612c3b565b90680100000000000000008111612c9a5781612c8f612c9893610792565b90828155612c31565b565b6108c3565b5f612ca991612c71565b565b905f03612cbd57612cbb90612c9f565b565b612ba3565b612cd6612cd1612cdb926125ca565b610749565b610554565b90565b6001612cea9101610554565b90565b5f80fd5b5f80fd5b5f80fd5b903590600160800381360303821215612d10570190565b612ced565b90821015612d2f576020612d2c9202810190612cf9565b90565b61077e565b903590600160200381360303821215612d76570180359067ffffffffffffffff8211612d7157602001916001820236038313612d6c57565b612cf5565b612cf1565b612ced565b91565b5090565b5f7f4e616d6520746f6f206c6f6e6700000000000000000000000000000000000000910152565b612db6600d6020926109d5565b612dbf81612d82565b0190565b612dd89060208101905f818303910152612da9565b90565b15612de257565b612dea6103a2565b62461bcd60e51b815280612e0060048201612dc3565b0390fd5b35612e0e816106f9565b90565b5f7f496e76616c696420626f756e6473000000000000000000000000000000000000910152565b612e45600e6020926109d5565b612e4e81612e11565b0190565b612e679060208101905f818303910152612e38565b90565b15612e7157565b612e796103a2565b62461bcd60e51b815280612e8f60048201612e52565b0390fd5b90565b5f5260205f2090565b5490565b612eac81612e9f565b821015612ec657612ebe600491612e96565b910201905f90565b61077e565b5090565b9190601f8111612edf575b505050565b612eeb612f1093610817565b906020612ef784612a35565b83019310612f18575b612f0990612a35565b01906129d3565b5f8080612eda565b9150612f0981929050612f00565b91612f319082612ecb565b9067ffffffffffffffff8211612ff057612f5582612f4f85546107e4565b85612ecf565b5f90601f8311600114612f8857918091612f77935f92612f7c575b5050612a07565b90555b565b90915001355f80612f70565b601f19831691612f9785610817565b925f5b818110612fd857509160029391856001969410612fbe575b50505002019055612f7a565b612fce910135601f8416906129f2565b90555f8080612fb2565b91936020600181928787013581550195019201612f9a565b6108c3565b906130009291612f26565b565b9061300e5f1991612677565b9181191691161790565b9061302d6130286130349261297e565b61299a565b8254613002565b9055565b3561304281611f09565b90565b9061305160ff91612677565b9181191691161790565b613064906104c2565b90565b90565b9061307f61307a6130869261305b565b613067565b8254613045565b9055565b906130e8606060036130ee946130ae5f82016130a85f880188612d34565b91612ff5565b6130c7600182016130c160208801612e04565b90613018565b6130e0600282016130da60408801612e04565b90613018565b019201613038565b9061306a565b565b9190613101576130ff9161308a565b565b612ba3565b9081549168010000000000000000831015613136578261312e91600161313495018155612ea3565b906130f0565b565b6108c3565b9291909261316e3361316861316261315d613158600787906113c5565b6125bd565b6103ef565b916103ef565b14612835565b61319c61317c85849061285e565b61319561318f61318a61156d565b610554565b91610554565b11156128bb565b6131b15f6131ac60088490610768565b612cab565b6131ba5f612cc2565b5b806131d86131d26131cd88879061285e565b610554565b91610554565b10156132ab576132a69061322f61320f6132096132036131fa8a898791612d15565b5f810190612d34565b90612d7b565b90612d7e565b61322861322261321d611921565b610554565b91610554565b1115612ddb565b613278613249604061324389888691612d15565b01612e04565b61327161326b61326660206132608c8b8991612d15565b01612e04565b610554565b91610554565b1015612e6a565b6132a161328f61328a60088690610768565b612e93565b61329b88878591612d15565b90613106565b612cde565b6131bb565b5050509050565b5f7f5a65726f20616464726573730000000000000000000000000000000000000000910152565b6132e6600c6020926109d5565b6132ef816132b2565b0190565b6133089060208101905f8183039101526132d9565b90565b1561331257565b61331a6103a2565b62461bcd60e51b815280613330600482016132f3565b0390fd5b9061333e9061074c565b5f5260205260405f2090565b90565b61335690610f01565b90565b61336290610922565b90565b919061337b6133766133839361334d565b613359565b908354612959565b9055565b5f90565b61339d91613397613387565b91613365565b565b5f60026133be926133b2838083016129bf565b8260018201550161338b565b565b905f036133d2576133d09061339f565b565b612ba3565b60481b90565b906133f269ff000000000000000000916133d7565b9181191691161790565b61340590611159565b90565b90565b9061342061341b613427926133fc565b613408565b82546133dd565b9055565b6134673361346161345b7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61348c8261348561347f61347a5f6125e9565b6103ef565b916103ef565b141561330b565b6134b26134ad6134a66134a160068590613334565b61334a565b8490616505565b61264e565b6134d15f6134cc6134c560038590610fc8565b8590611012565b6133c0565b6134f4600260016134ee6134e760038690610fc8565b8690611012565b0161340b565b906135286135227f8e2d88795a3c66719a287658cbf68b3eb2b8e183cb18f46f4813913fc8aafc4b9361074c565b91611006565b916135316103a2565b8061353b8161044b565b0390a3565b6135519061354c61653f565b613553565b565b61355e90600b61269a565b565b61356990613540565b565b5f7f4e6f742072656769737465726564206f70657261746f72000000000000000000910152565b61359f60176020926109d5565b6135a88161356b565b0190565b6135c19060208101905f818303910152613592565b90565b156135cb57565b6135d36103a2565b62461bcd60e51b8152806135e9600482016135ac565b0390fd5b906136229796959493929161361d61361861361161360c846006613334565b61334a565b339061658d565b6135c4565b613863565b565b61363861363361363d926103b4565b610749565b610554565b90565b61365461364f61365992610554565b610749565b6103b4565b90565b91602061367d92949361367660408201965f830190610c21565b0190610c21565b565b61368e61369491939293610554565b92610554565b820391821161369f57565b6128e4565b67ffffffffffffffff81116136c2576136be6020916108b9565b0190565b6108c3565b909291926136dc6136d7826136a4565b6116bc565b938185526020850190828401116136f8576136f69261171d565b565b6116f6565b6137089136916136c7565b90565b60200190565b5190565b949290979695939160e08601985f870161372e91610f04565b6020860161373b91610cbc565b6040850161374891610c21565b6060840161375591610c21565b6080830161376291611129565b60a0820161376f91610f04565b60c00161377b91610c21565b565b5f61190160f01b910152565b61379560028092611d33565b61379e8161377d565b0190565b90565b6137b16137b691610f01565b6137a2565b9052565b60208093926137d56137ce6137dd94613789565b80926137a5565b0180926137a5565b0190565b5f7f496e76616c6964207369676e6174757265000000000000000000000000000000910152565b61381560116020926109d5565b61381e816137e1565b0190565b6138379060208101905f818303910152613808565b90565b1561384157565b6138496103a2565b62461bcd60e51b81528061385f60048201613822565b0390fd5b9192939497969095978061387f61387942610554565b91613624565b116139e7576138974261389183613624565b9061367f565b6138b06138aa6138a5610d13565b613624565b91610554565b116139bf576139bd97986139946139b2938561391e8a61390f8d61399a988d8d6138e66138db61248b565b9633999592936136fd565b6138f86138f282613711565b9161370b565b2092936139036103a2565b98899760208901613715565b602082018103825203826108d7565b61393061392a82613711565b9161370b565b2061397b7f000000000000000000000000000000000000000000000000000000000000000061396c6139606103a2565b938492602084016137ba565b602082018103825203826108d7565b61398d61398782613711565b9161370b565b20926136fd565b906165c7565b6139ac6139a6336103ef565b916103ef565b1461383a565b933391929394616746565b565b6139c842613640565b906139e35f9283926318355b7560e21b84526004840161365c565b0390fd5b6139f042613640565b90613a0b5f9283926357ea02e960e01b84526004840161365c565b0390fd5b90613a1f979695949392916135ed565b565b606090565b90602082820312613a56575f82013567ffffffffffffffff8111613a5157613a4e9201611849565b90565b6103b0565b6103ac565b90613a7291613a68613a21565b5090810190613a26565b90565b613a94613a8f613a9992613a876127ae565b506005613334565b61334a565b616b58565b90565b606090565b67ffffffffffffffff8111613ab95760208091020190565b6108c3565b90613ad0613acb83613aa1565b6116bc565b918252565b369037565b90613aff613ae783613abe565b92602080613af58693613aa1565b9201910390613ad5565b565b90613b0b8261123a565b811015613b1c576020809102010190565b61077e565b90613b2b906103ef565b9052565b90613b38613a9c565b50613b55613b50613b4b60048590613334565b61334a565b616b58565b91613b5f83613ada565b91613b695f612cc2565b5b80613b7d613b7787610554565b91610554565b1015613bc457613bbf90613bba613ba8613ba1613b9c60048890613334565b61334a565b8390616ba7565b613bb58791849092613b01565b613b21565b612cde565b613b6a565b5092505090565b5f90565b90613bd8613bcb565b50613bfa6001613bf4613bed60038690610fc8565b8490611012565b016110a3565b613c0c613c065f611159565b91611159565b14918215613c1a575b505090565b613c3b9250600191613c30613c35926003610fc8565b611012565b016110a3565b613c4e613c486001611159565b91611159565b145f80613c15565b613c7c90613c62613a9c565b505f90613c76613c7061132d565b92612cc2565b906149c4565b5090565b90613cb294939291613cad613ca8613ca1613c9c846006613334565b61334a565b339061658d565b6135c4565b613cb4565b565b91613cc6949293913391929394616746565b565b90613cd594939291613c80565b565b90613cf7613cf2613cfc93613cea613bcb565b506006613334565b61334a565b61658d565b90565b5f90565b613d25613d2b92613d20600193613d18613cff565b506003610fc8565b611012565b016110a3565b90565b613d3790610ffa565b90565b5f7f496e7465726e616c206f6e6c7900000000000000000000000000000000000000910152565b613d6e600d6020926109d5565b613d7781613d3a565b0190565b613d909060208101905f818303910152613d61565b90565b15613d9a57565b613da26103a2565b62461bcd60e51b815280613db860048201613d7b565b0390fd5b67ffffffffffffffff8111613dd45760208091020190565b6108c3565b90613deb613de683613dbc565b6116bc565b918252565b369037565b90613e1a613e0283613dd9565b92602080613e108693613dbc565b9201910390613df0565b565b90613e2682610d97565b811015613e37576020809102010190565b61077e565b90565b5190565b90613e4d82613e3f565b811015613e5e576020809102010190565b61077e565b90613e6d90610f01565b9052565b606090565b90565b60209181520190565b905f9291805490613e9c613e95836107e4565b8094613e79565b916001811690815f14613ef35750600114613eb7575b505050565b613ec4919293945061079f565b915f925b818410613edb57505001905f8080613eb2565b60018160209295939554848601520191019290613ec8565b92949550505060ff19168252151560200201905f8080613eb2565b90613f1891613e82565b90565b90613f3b613f3492613f2b6103a2565b93848092613f0e565b03836108d7565b565b613f4690613f1b565b90565b613f539051610f01565b90565b613f609051610554565b90565b5f7f56616c7565206f7574206f6620626f756e647300000000000000000000000000910152565b613f9760136020926109d5565b613fa081613f63565b0190565b613fbc613fca9260408301908382035f8501526109e9565b906020818303910152613f8a565b90565b92916020613fe9613ff19360408701908782035f8901526109e9565b940190610557565b565b905f929180549061400d614006836107e4565b80946109d5565b916001811690815f146140645750600114614028575b505050565b6140359192939450610817565b915f925b81841061404c57505001905f8080614023565b60018160209295939554848601520191019290614039565b92949550505060ff19168252151560200201905f8080614023565b5f7f5265717569726564206d6574726963206d697373696e67000000000000000000910152565b6140b360176020926109d5565b6140bc8161407f565b0190565b6140d86140e69260408301908382035f850152613ff3565b9060208183039101526140a6565b90565b929390936141113361410b61410561410030613d2e565b6103ef565b916103ef565b14613d93565b61412561412060088690610768565b612e93565b9461412f82613df5565b946141395f612cc2565b5b8061414d61414786610554565b91610554565b10156141a05761419b906141966141715f6141698a8590613e1c565b510151613e3c565b61418361417d82613711565b9161370b565b206141918a91849092613e43565b613e63565b612cde565b61413a565b5091949092956141af81612e9f565b6141c16141bb5f612cc2565b91610554565b11966141cb613e71565b908861464b575b6141db5f612cc2565b5b806141ef6141e98b610554565b91610554565b10156144ae5760015f8b6142e2575b509088878961421494614219575b505050612cde565b6141dc565b825f61425761424f6142609461424a614242602061423b6142659b8d90613e1c565b5101613f56565b976009611d07565b611d1d565b928790613e1c565b51015190611dae565b613018565b8887899061428f60206142885f61427d878990613e1c565b510151958790613e1c565b5101613f56565b6142c26142bc7f23ed02bd3605bdea6a8afa76c46f00d274860ba6cea980f2585b696df9e182bd9361074c565b93611006565b936142d76142ce6103a2565b92839283613fcd565b0390a388878961420c565b9a90959291996142f15f612cc2565b5b8061430d6143076143028a612e9f565b610554565b91610554565b1015614498576143256143208d87613e43565b613f49565b61434961434361433e6143398a8690613e43565b613f49565b610f01565b91610f01565b1461435c5761435790612cde565b6142f2565b8a919b929c50896142149495988a926001908a614386602061437f898b90613e1c565b5101613f56565b6143ae6143a86143a3600161439c868890612ea3565b500161093e565b610554565b91610554565b10918888841561444e575b505050506143e3575b6143cd905b156104c2565b6143dc575b93945050506141fe565b505f6143d2565b905082825f6143f3878990613e1c565b5101519161443f61442d6144277fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936144366103a2565b91829182613fa4565b0390a36143cd5f9190506143c2565b61448e93945061447c61448893614476602061446f61448396600296613e1c565b5101613f56565b96612ea3565b500161093e565b610554565b91610554565b118a5f88886143b9565b5099909a87896142149495986143cd8d946143c7565b5097505092935093506144c05f612cc2565b935b846144dd6144d76144d286612e9f565b610554565b91610554565b1015614644576145036144fd60036144f6868990612ea3565b5001610965565b156104c2565b614639576145256145205f614519868990612ea3565b5001613e76565b613f3d565b61453761453182613711565b9161370b565b20905f966145445f612cc2565b5b8061456061455a61455586613e3f565b610554565b91610554565b101561462757614579614574848390613e43565b613f49565b61458b61458586610f01565b91610f01565b1461459e5761459990612cde565b614545565b50959096506145bf91506145b460015b156104c2565b6145c6575b5b612cde565b93946144c2565b82855f6145d4878590612ea3565b50019161461f61460d6146077fe08f42896ce3aec2ff7da95a00372f33cf677e75ad602590832a8dffcdad63159361074c565b93611006565b936146166103a2565b918291826140c0565b0390a36145b9565b509590966145bf92506145b4906145ae565b94936145bf906145ba565b5050505050565b96939050614665614660839794999693612e9f565b613df5565b9761466f5f612cc2565b5b8061468b6146856146808b612e9f565b610554565b91610554565b10156146e5576146e0906146db6146b66146b15f6146aa8d8690612ea3565b5001613e76565b613f3d565b6146c86146c282613711565b9161370b565b206146d68d91849092613e43565b613e63565b612cde565b614670565b5092959194979093966141d2565b6146fb61653f565b614703614705565b565b6147166147115f6125e9565b616c3f565b565b6147206146f3565b565b61472c60a06116bc565b90565b5f90565b5f90565b5f90565b614743614722565b906020808080808661475361472f565b81520161475e612750565b815201614769612754565b815201614774614733565b81520161477f614737565b81525050565b61478d61473b565b90565b9061479a90610554565b9052565b906147a8906103b4565b9052565b906147b6906104af565b9052565b906147c490611159565b9052565b9061484761483e60026147d9614722565b946147f06147e85f830161093e565b5f8801614790565b6148086147ff60018301611049565b6020880161479e565b61482061481760018301611076565b604088016147ac565b61483861482f600183016110a3565b606088016147ba565b016110c7565b60808401613e63565b565b614852906147c8565b90565b61487a9161487061487592614868614785565b506003610fc8565b611012565b614849565b90565b5f90565b9061488b9061074c565b5f5260205260405f2090565b906148a190611006565b5f5260205260405f2090565b6148d2916148c86148cd926148c061487d565b50600c614881565b614897565b611049565b90565b6148dd616c55565b6148e5615ead565b6148f76148f1836103ef565b916103ef565b036149075761490590616c3f565b565b614922905f91829163118cdaa760e01b835260048301610cc9565b0390fd5b61494561494061494a926149386127ae565b506004613334565b61334a565b616b58565b90565b61495790516104af565b90565b61496e614969614973926125ca565b610749565b6104af565b90565b61498090516103b4565b90565b61499761499261499c926104af565b610749565b610554565b90565b6149ae6149b491939293610554565b92610554565b82018092116149bf57565b6128e4565b909291926149d0613a9c565b506149d96127ae565b506149e382616427565b93614a006149fb6149f660058690613334565b61334a565b616b58565b92614a0d6020870161494d565b614a1f614a195f61495a565b916104af565b148015614b11575b8015614af6575b614adc57614a6886614a62614a5d6020614a56614a515f614ac59b9c9d01614976565b613624565b930161494d565b614983565b906128f8565b9180614a83614a7d614a7861132d565b610554565b91610554565b115f14614ad75750614a9361132d565b5b614a9f84829061499f565b614ab1614aab88610554565b91610554565b115f14614ac85750845b9092909192616c8b565b91565b614ad2908461499f565b614abb565b614a94565b5050509150614af2614aed5f612cc2565b613ada565b9190565b5082614b0a614b0486610554565b91610554565b1015614a2e565b5083614b25614b1f5f612cc2565b91610554565b14614a27565b614b3c90614b3761653f565b614b3e565b565b614b4990600a61269a565b565b614b5490614b2b565b565b5f90565b614b62614b56565b50614b6c5f6125bd565b90565b5090565b9190811015614b83576020020190565b61077e565b35614b92816103fb565b90565b5f80fd5b60e01b90565b5f910312614ba957565b6103ac565b916020614bcf929493614bc860408201965f830190610c21565b0190610cbc565b565b614bd96103a2565b3d5f823e3d90fd5b90929192614bee5f612cc2565b5b80614c0c614c06614c01858990614b6f565b610554565b91610554565b1015614cbb57614c1b30613d2e565b9063ba1fb10384614c36614c31868a8691614b73565b614b88565b93803b15614cb657614c5b5f8094614c66614c4f6103a2565b98899687958694614b99565b845260048401614bae565b03925af1918215614cb157614c8092614c85575b50612cde565b614bef565b614ca4905f3d8111614caa575b614c9c81836108d7565b810190614b9f565b5f614c7a565b503d614c92565b614bd1565b614b95565b5050509050565b5f7f4e6f7420736c617368696e67206f7261636c6500000000000000000000000000910152565b614cf660136020926109d5565b614cff81614cc2565b0190565b614d189060208101905f818303910152614ce9565b90565b15614d2257565b614d2a6103a2565b62461bcd60e51b815280614d4060048201614d03565b0390fd5b5f7f4f70657261746f7220756e6b6e6f776e00000000000000000000000000000000910152565b614d7860106020926109d5565b614d8181614d44565b0190565b614d9a9060208101905f818303910152614d6b565b90565b15614da457565b614dac6103a2565b62461bcd60e51b815280614dc260048201614d85565b0390fd5b90565b90614ddc67ffffffffffffffff91612677565b9181191691161790565b90565b90614dfe614df9614e059261074c565b614de6565b8254614dc9565b9055565b9190614e2381614e1c81614e28956109d5565b809561171d565b6108b9565b0190565b9091614e439260208301925f818503910152614e09565b90565b614e6b33614e65614e5f614e5a600a6125bd565b6103ef565b916103ef565b14614d1b565b614e91614e8c614e85614e8060058590613334565b61334a565b849061658d565b614d9d565b614ebd614eb2614ead614ea660038590610fc8565b8590611012565b614dc6565b60016003910161340b565b614edb614ed4614ecf60048490613334565b61334a565b8390616da7565b50614f03614ee842613640565b614efe614ef7600c8590614881565b8590614897565b614de9565b909192614f39614f337f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b93611006565b93614f4e614f456103a2565b92839283614e2c565b0390a3565b614f5d60806116bc565b90565b614f6b913691611728565b90565b52565b90614f7b906104c2565b9052565b5190565b90614f8d816109d1565b9067ffffffffffffffff821161504d57614fb182614fab85546107e4565b85612ecf565b602090601f8311600114614fe557918091614fd4935f92614fd9575b5050612a07565b90555b565b90915001515f80614fcd565b601f19831691614ff485610817565b925f5b8181106150355750916002939185600196941061501b575b50505002019055614fd7565b61502b910151601f8416906129f2565b90555f808061500f565b91936020600181928787015181550195019201614ff7565b6108c3565b9061505c91614f83565b565b61506890516104c2565b90565b906150c8606060036150ce9461508e5f82016150885f8801614f7f565b90615052565b6150a7600182016150a160208801613f56565b90613018565b6150c0600282016150ba60408801613f56565b90613018565b01920161505e565b9061306a565b565b91906150e1576150df9161506b565b565b612ba3565b9081549168010000000000000000831015615116578261510e91600161511495018155612ea3565b906150d0565b565b6108c3565b6152399561522284966152196152116151fd6151f861522b9761519e61517e6151786152349d8d9f9d6151733361516d61516761516261515d60078c906113c5565b6125bd565b6103ef565b916103ef565b14612835565b612d7b565b90612d7e565b61519761519161518c611921565b610554565b91610554565b1115612ddb565b6151bb866151b46151ae8d610554565b91610554565b1015612e6a565b6151f16151d26151cd60088490610768565b610792565b6151eb6151e56151e061156d565b610554565b91610554565b106128bb565b6008610768565b612e93565b98999692949661520b614f53565b9a614f60565b5f8a01614f6e565b60208801614790565b60408601614790565b60608401614f71565b6150e6565b565b6152699061526461525f615258615253846006613334565b61334a565b339061658d565b6135c4565b61534a565b565b5f7f43616e6e6f7420676f206f6e6c696e65207768696c6520736c61736865640000910152565b61529f601e6020926109d5565b6152a88161526b565b0190565b6152c19060208101905f818303910152615292565b90565b60401b90565b906152de68ff0000000000000000916152c4565b9181191691161790565b6152fc6152f7615301926104af565b610749565b6104af565b90565b90565b9061531c615317615323926152e8565b615304565b82546152ca565b9055565b91602061534892949361534160408201965f830190611171565b0190611171565b565b61536861536361535c60038490610fc8565b3390611012565b614dc6565b90615375600183016110a3565b918261538a6153846003611159565b91611159565b146154ae57826153a261539c5f611159565b91611159565b148015615493575b61548e576153d1906153bf600180830161340b565b60016153ca5f61495a565b9101615307565b6153ef6153e86153e360048490613334565b61334a565b3390616505565b50803361542561541f7fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b9161542e6103a2565b806154388161044b565b0390a390339091600161547461546e7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b936154896154806103a2565b92839283615327565b0390a3565b505050565b50826154a86154a26001611159565b91611159565b146153aa565b6154b66103a2565b62461bcd60e51b8152806154cc600482016152ac565b0390fd5b6154d99061523b565b565b5f7f4e6f7420617574686f72697a6564000000000000000000000000000000000000910152565b61550f600e6020926109d5565b615518816154db565b0190565b6155319060208101905f818303910152615502565b90565b1561553b57565b6155436103a2565b62461bcd60e51b8152806155596004820161551c565b0390fd5b90565b61557461556f6155799261555d565b610749565b6103b4565b90565b5f7f496e74657276616c20746f6f2073686f72740000000000000000000000000000910152565b6155b060126020926109d5565b6155b98161557c565b0190565b6155d29060208101905f8183039101526155a3565b90565b156155dc57565b6155e46103a2565b62461bcd60e51b8152806155fa600482016155bd565b0390fd5b90565b61561561561061561a926155fe565b610749565b6104af565b90565b5f7f4d6178206d6973736564206d757374206265203e3d2031000000000000000000910152565b61565160176020926109d5565b61565a8161561d565b0190565b6156739060208101905f818303910152615644565b90565b1561567d57565b6156856103a2565b62461bcd60e51b81528061569b6004820161565e565b0390fd5b6156a960606116bc565b90565b906156c16156bc6156c89261305b565b613067565b82546133dd565b9055565b9061570e60405f615714946156ee8282016156e8848801614976565b90614de9565b6157068282016157006020880161494d565b90615307565b01920161505e565b906156ac565b565b90615720916156cc565b565b91602061574392949361573c60408201965f830190610c21565b0190611129565b565b336157786157727f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b148015615864575b61578990615534565b6157a7826157a061579a603c615560565b916103b4565b10156155d5565b6157c5836157be6157b86001615601565b916104af565b1015615676565b61581e8261580d856158046157e65f6157e060028990612287565b016122b1565b916157fb6157f261569f565b955f870161479e565b602085016147ac565b60408301614f71565b61581960028490612287565b615716565b909161584a7fc9599ed962624a858ec59bae0ed86c75f4db65fe04570021277edbedd04ea5649261074c565b9261585f6158566103a2565b92839283615722565b0390a2565b506157893361588e61588861588361587e600787906113c5565b6125bd565b6103ef565b916103ef565b149050615780565b634e487b7160e01b5f52601260045260245ffd5b6158b66158bc91610554565b91610554565b9081156158c7570490565b615896565b6158e06158db6158e592610554565b610749565b6104af565b90565b6158fc6158f7615901926125ca565b610749565b6103b4565b90565b61592261591d61591660038490610fc8565b8490611012565b614dc6565b9061592c81616427565b615938600184016110a3565b61594b6159456003611159565b91611159565b14615b5f5761595b5f840161093e565b61596d6159675f612cc2565b91610554565b14615b59576159a361598a426159845f870161093e565b9061367f565b61599d6159985f8501614976565b613624565b906158aa565b806159b76159b160ff614983565b91610554565b115f14615b4b575060ff5b90816159e16159db6159d660018801611076565b6104af565b916104af565b116159ee575b5050505050565b6159fb8260018601615307565b615a10615a075f6158e8565b60018601614de9565b615a2e615a28615a23602085940161494d565b6104af565b916104af565b101580615b24575b615a41575b806159e7565b615a5c615a50600185016110a3565b9360016002910161340b565b615a7a615a73615a6e60048590613334565b61334a565b8590616da7565b508190849091615ac8615ab6615ab07f44fd32b677704ce68e7763897c49733b8f5289018ac60a5c926802d63759db4d9361074c565b93611006565b93615abf6103a2565b91829182611627565b0390a39190916002615b03615afd7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615b18615b0f6103a2565b92839283615327565b0390a35f808080615a3b565b50615b31600184016110a3565b615b44615b3e6002611159565b91611159565b1415615a36565b615b54906158cc565b6159c2565b50505050565b50505050565b606090565b67ffffffffffffffff8111615b825760208091020190565b6108c3565b90615b99615b9483615b6a565b6116bc565b918252565b615ba860806116bc565b90565b90615c12615c096003615bbc615b9e565b94615bd3615bcb5f8301610900565b5f8801614f6e565b615beb615be26001830161093e565b60208801614790565b615c03615bfa6002830161093e565b60408801614790565b01610965565b60608401614f71565b565b615c1d90615bab565b90565b90615c2a82610792565b615c3381615b87565b92615c416020850191610796565b5f915b838310615c515750505050565b60046020600192615c6185615c14565b815201920192019190615c44565b615c7890615c20565b90565b615c92615c9791615c8a615b65565b506008610768565b615c6f565b90565b615cc890615cc3615cbe615cb7615cb2846006613334565b61334a565b339061658d565b6135c4565b615d23565b565b5f7f43616e6e6f7420676f206f66666c696e65207768696c6520736c617368656400910152565b615cfe601f6020926109d5565b615d0781615cca565b0190565b615d209060208101905f818303910152615cf1565b90565b615d41615d3c615d3560038490610fc8565b3390611012565b614dc6565b90615d4e600183016110a3565b9182615d63615d5d6003611159565b91611159565b14615de957615d779060016004910161340b565b615d95615d8e615d8960048490613334565b61334a565b3390616da7565b50903390916004615dcf615dc97f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93615de4615ddb6103a2565b92839283615327565b0390a3565b615df16103a2565b62461bcd60e51b815280615e0760048201615d0b565b0390fd5b615e1490615c9a565b565b909182615e2681615e2d93611d33565b809361171d565b0190565b615e429060209493615e4993615e16565b8092611d64565b0190565b9091615e6490615e5b6103a2565b93849384615e31565b03902090565b9091615e7592615e4d565b90565b92615e9d615ea59392615e98615eaa96615e906127ae565b506009611d07565b611d1d565b919091615e6a565b61093e565b90565b615eb5614b56565b50615ec060016125bd565b90565b615ecd9051611159565b90565b90565b615ee7615ee2615eec92615ed0565b610749565b610554565b90565b60207f6c00000000000000000000000000000000000000000000000000000000000000917f4f70657261746f72206e6f7420656c696769626c6520666f722072656d6f76615f8201520152565b615f4960216040926109d5565b615f5281615eef565b0190565b615f6b9060208101905f818303910152615f3c565b90565b15615f7557565b615f7d6103a2565b62461bcd60e51b815280615f9360048201615f56565b0390fd5b9061604861604361604d9333615fc8615fc2615fbd615fb8600786906113c5565b6125bd565b6103ef565b916103ef565b148015616106575b615fd990615534565b615ff7615ff2615feb60038490610fc8565b8690611012565b614849565b61600360608201615ec3565b6160166160106003611159565b91611159565b03616050575b5061603b61603461602f60058490613334565b61334a565b8590616da7565b506004613334565b61334a565b616da7565b50565b6160cc906160a061609061606385616427565b61608a616085602061607e6160795f8601614976565b613624565b930161494d565b614983565b906128f8565b61609a600a615ed3565b906128f8565b6160ab5f8301613f56565b6160bd6160b75f612cc2565b91610554565b1191826160d2575b5050615f6e565b5f61601c565b6160fd9192506160f16160f7916160eb5f429201613f56565b9061367f565b92610554565b91610554565b10155f806160c5565b50615fd93361612461611e616119614b5a565b6103ef565b916103ef565b149050615fd0565b9061615661615b9161613c613bcb565b5061615161614985616427565b946003610fc8565b611012565b614849565b6161665f8201613f56565b6161786161725f612cc2565b91610554565b146161b3576161a96161a45f61619d6161af9461619783429201613f56565b9061367f565b9401614976565b613624565b91610554565b1090565b50505f90565b6161ca906161c561653f565b6161cc565b565b6161d781600161269a565b6161df614b5a565b9061621361620d7f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270093611006565b91611006565b9161621c6103a2565b806162268161044b565b0390a3565b616234906161b9565b565b5f61627561627b9361626d3361626761626161625c61625760078a906113c5565b6125bd565b6103ef565b916103ef565b14612835565b926002612287565b016156ac565b565b5f7f4e6f742072656769737465726564000000000000000000000000000000000000910152565b6162b1600e6020926109d5565b6162ba8161627d565b0190565b6162d39060208101905f8183039101526162a4565b90565b156162dd57565b6162e56103a2565b62461bcd60e51b8152806162fb600482016162be565b0390fd5b61633b3361633561632f7f00000000000000000000000000000000000000000000000000000000000000006103ef565b916103ef565b14612580565b61636161635c61635561635060068590613334565b61334a565b8490616da7565b6162d6565b61637f61637861637360048490613334565b61334a565b8390616da7565b50906163b46163ae7f08bb93e5444209b15155078a13f6e341299d748d0c299f722c9cbc0723f0fe9e9361074c565b91611006565b916163bd6103a2565b806163c78161044b565b0390a3565b906164196164105f6163dc612743565b946163f36163eb838301611049565b83880161479e565b61640a616401838301611076565b602088016147ac565b016122b1565b60408401614f71565b565b616424906163cc565b90565b61643e6164439161643661278e565b506002612287565b61641b565b61644e5f8201614976565b61646061645a5f6158e8565b916103b4565b146164a6575b6164726020820161494d565b61648461647e5f61495a565b916104af565b1461648d575b90565b6164a161649861160f565b602083016147ac565b61648a565b6164b96164b1610c08565b5f830161479e565b616466565b6164c790610fde565b90565b6164de6164d96164e3926103e4565b610749565b610554565b90565b6164fa6164f56164ff92610554565b612677565b610f01565b90565b90565b9061653761653161652c6165275f61653c9661651f613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616e68565b90565b616547614b5a565b61656061655a616555616c55565b6103ef565b916103ef565b0361656757565b616589616572616c55565b5f91829163118cdaa760e01b835260048301610cc9565b0390fd5b906165bf6165b96165b46165af5f6165c4966165a7613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b616ecb565b90565b6165e6916165dd916165d7614b56565b50616f27565b90929192616fe7565b90565b5f7f4f70657261746f7220697320736c617368656400000000000000000000000000910152565b61661d60136020926109d5565b616626816165e9565b0190565b61663f9060208101905f818303910152616610565b90565b1561664957565b6166516103a2565b62461bcd60e51b8152806166676004820161662a565b0390fd5b9061668061667b6166879261334d565b613359565b8254613002565b9055565b616694906103b4565b67ffffffffffffffff81146166a95760010190565b6128e4565b90565b6166c56166c06166ca926166ae565b610749565b6104af565b90565b9160206166ee9294936166e760408201965f830190611129565b0190610557565b565b6166f990610fde565b90565b616705906166f0565b90565b61671190610ffa565b90565b60409061673d616744949695939661673360608401985f850190610cbc565b6020830190610c21565b0190610c21565b565b949293919361676961676461675d60038990610fc8565b8790611012565b614dc6565b9361677387616427565b9361679d616783600188016110a3565b6167966167906003611159565b91611159565b1415616642565b6167bb6167b46167af60058b90613334565b61334a565b8890616505565b5061689060406167cd600189016110a3565b966167da425f8b01613018565b6168046167e88587906136fd565b6167fa6167f482613711565b9161370b565b2060028b0161666b565b6168196168105f61495a565b60018b01615307565b61683760018a0161683161682c82611049565b61668b565b90614de9565b61683f613cff565b508561685361684d5f61495a565b916104af565b145f14616b145761686a5f995b60018b910161340b565b8761687e6168786002611159565b91611159565b1480616af8575b616a8a575b0161505e565b80616a66575b616a50575b50508591859192426168df6168d96168d37f658918e3147f13dd068ec21437b4c25c21682a8dc2129348671ead000db3e7b99461074c565b9461074c565b94611006565b946168f46168eb6103a2565b928392836166cd565b0390a48061690a61690484611159565b91611159565b036169fa575b505061691c600b6125bd565b61693661693061692b5f6125e9565b6103ef565b916103ef565b03616940575b5050565b61695a616955616950600b6125bd565b6166fc565b616708565b9163d47853b691909261696c42613640565b92813b156169f5575f6169929161699d82966169866103a2565b98899788968795614b99565b855260048501616714565b03925af190816169c9575b50155f146169c45760016169bf575b5b5f8061693c565b6169b7565b6169b8565b6169e8905f3d81116169ee575b6169e081836108d7565b810190614b9f565b5f6169a8565b503d6169d6565b614b95565b83839192616a31616a2b7f228824b86c256469125f525ce18c6c2d0a9e133d13b8ec7a2c96a193b0c28a099361074c565b93611006565b93616a46616a3d6103a2565b92839283615327565b0390a35f80616910565b616a5f918891889091926174a4565b5f8061689b565b50616a72818390612d7e565b616a84616a7e5f612cc2565b91610554565b11616896565b616aa7616aa0616a9b8d6004613334565b61334a565b8b90616505565b508a8a616add616ad77fc9862c5f02eefbdcea01c207ae538e1d304dc93026870f48951e48a0f4c8470c9361074c565b91611006565b91616ae66103a2565b80616af08161044b565b0390a361688a565b5088616b0d616b076002611159565b91611159565b1415616885565b85616b28616b2260646166b1565b916104af565b105f14616b3b5761686a6001995b616860565b61686a600199616b538d8d8b908b908a928c94617158565b616b36565b616b6f5f616b7492616b686127ae565b5001616502565b617662565b90565b616b83616b8891610922565b61297e565b90565b616b9f616b9a616ba492610554565b610749565b6103e4565b90565b616bd2616bcd616bdc93616bc85f616bd795616bc1614b56565b5001616502565b6176d0565b616b77565b616b8b565b610ffa565b90565b91906008616bff910291616bf960018060a01b0384612955565b92612955565b9181191691161790565b9190616c1f616c1a616c2793611006565b612697565b908354616bdf565b9055565b616c3d91616c37614b56565b91616c09565b565b616c5390616c4e5f6001616c2b565b6176f1565b565b616c5d614b56565b503390565b616c6b90610554565b5f198114616c795760010190565b6128e4565b616c8890516103ef565b90565b93919293616c97613a9c565b50616cab616ca685849061367f565b613ada565b92616cb55f612cc2565b925b80616cca616cc488610554565b91610554565b1015616d3857616cee616ce7616ce260058690613334565b61334a565b8290616ba7565b616cfa84828a91617750565b616d0e575b50616d0990612cde565b616cb7565b616d099194616d2c616d3192616d278991849092613b01565b613b21565b616c62565b9390616cff565b509450509150616d4782613ada565b92616d515f612cc2565b5b80616d65616d5f86610554565b91610554565b1015616da157616d9c90616d97616d85616d80868490613b01565b616c7e565b616d928891849092613b01565b613b21565b612cde565b616d52565b50915050565b90616dd9616dd3616dce616dc95f616dde96616dc1613bcb565b5001946164be565b6164ca565b6164e6565b91616502565b617888565b90565b90565b5f5260205f2090565b5490565b616dfa81616ded565b821015616e1457616e0c600191616de4565b910201905f90565b61077e565b9081549168010000000000000000831015616e495782616e41916001616e4795018155616df1565b90613365565b565b6108c3565b5490565b90616e5c9061334d565b5f5260205260405f2090565b616e70613bcb565b50616e85616e7f828490616ecb565b156104c2565b5f14616ec557616ebb616ec092616ea7616ea05f8501616de1565b8290616e19565b6001616eb45f8501616e4e565b9301616e52565b613018565b600190565b50505f90565b616ee9916001616ee492616edd613bcb565b5001616e52565b61093e565b616efb616ef55f612cc2565b91610554565b141590565b5f90565b90565b616f1b616f16616f2092616f04565b610749565b610554565b90565b5f90565b919091616f32614b56565b50616f3b616f00565b50616f44613387565b50616f4e83613711565b616f61616f5b6041616f07565b91610554565b145f14616fa857616fa19192616f75613387565b50616f7e613387565b50616f87616f23565b506020810151606060408301519201515f1a909192617a07565b9192909190565b50616fb25f6125e9565b90616fc6616fc1600294613711565b6164e6565b91929190565b60041115616fd657565b611136565b90616fe582616fcc565b565b80616ffa616ff45f616fdb565b91616fdb565b145f14617005575050565b806170196170136001616fdb565b91616fdb565b145f1461703c575f63f645eedf60e01b8152806170386004820161044b565b0390fd5b8061705061704a6002616fdb565b91616fdb565b145f1461707e5761707a61706383616b77565b5f91829163fce698f760e01b835260048301610564565b0390fd5b61709161708b6003616fdb565b91616fdb565b146170995750565b6170b4905f9182916335e2f38360e21b835260048301610f11565b0390fd5b6170cc6170c76170d19261130e565b610749565b6104af565b90565b6170e06170e6916103b4565b916103b4565b90039067ffffffffffffffff82116170fa57565b6128e4565b5f7f50726f746f636f6c2076696f6c6174696f6e207265706f727465640000000000910152565b617133601b6020926109d5565b61713c816170ff565b0190565b6171559060208101905f818303910152617126565b90565b935050925061717061716a60c86170b8565b916104af565b101561717b575b5050565b61718442613640565b6171a261719d617196600c8590614881565b8590614897565b611049565b806171b56171af5f6158e8565b916103b4565b1490811561723b575b506171ca575b50617177565b6171e9906171e46171dd600c8590614881565b8590614897565b614de9565b9061721d6172177f1e2909cf45d70cf003f334b73c93330ce7e572782dfc82fab79deb8855a7c7919361074c565b91611006565b916172266103a2565b8061723081617140565b0390a35f80806171c4565b6172469150826170d4565b61725f617259617254610f7a565b6103b4565b916103b4565b10155f6171be565b90565b61727e61727961728392617267565b610749565b610554565b90565b9092919261729b617296826116fa565b6116bc565b938185526020850190828401116172b7576172b5926109de565b565b6116f6565b9080601f830112156172da578160206172d793519101617286565b90565b6105af565b905051906172ec826106f9565b565b9190916040818403126173415761730560406116bc565b925f8201519167ffffffffffffffff831161733c57617329826173359483016172bc565b5f8601526020016172df565b6020830152565b6116f2565b6116ee565b92919061735a617355826116d1565b6116bc565b93818552602080860192028101918383116173b15781905b838210617380575050505050565b815167ffffffffffffffff81116173ac576020916173a187849387016172ee565b815201910190617372565b6105af565b6105b7565b9080601f830112156173d4578160206173d193519101617346565b90565b6105af565b90602082820312617409575f82015167ffffffffffffffff81116174045761740192016173b6565b90565b6103b0565b6103ac565b60209181520190565b91906174318161742a816174369561740e565b809561171d565b6108b9565b0190565b90916174519260208301925f818503910152617417565b90565b61745e6032611551565b90565b9493916060916174a29461748d61749a9361748360808b01945f8c0190610c21565b60208a0190610cbc565b8782036040890152610e28565b940190610557565b565b916174b0818590612d7e565b6174c26174bc5f612cc2565b91610554565b1461765c576174d2818590612d7e565b6174e66174e061c35061726a565b91610554565b11617656575f6174f4613a21565b946174fe30613d2e565b6175206331e3bd1b94929461752b6175146103a2565b96879586948594614b99565b84526004840161743a565b03915afa80915f92617632575b50155f1461762957506001617624575b61755183610d97565b61756a61756461755f617454565b610554565b91610554565b115f1461761657617579617454565b5b61758330613d2e565b906365a6936e93929490823b15617611575f946175be86926175b3946175a76103a2565b998a9889978896614b99565b865260048601617461565b03925af190816175e5575b50155f146175e05760016175db575b5b565b6175d8565b6175d9565b617604905f3d811161760a575b6175fc81836108d7565b810190614b9f565b5f6175c9565b503d6175f2565b614b95565b61761f83610d97565b61757a565b505050565b90925091617548565b61764f9192503d805f833e61764781836108d7565b8101906173d9565b905f617538565b50505050565b50505050565b5f6176769161766f6127ae565b5001616e4e565b90565b5f5260205f2090565b61768b81616e4e565b8210156176a55761769d600191617679565b910201905f90565b61077e565b6176ba9060086176bf9302610c78565b6110b0565b90565b906176cd91546176aa565b90565b6176ee915f6176e8926176e1613387565b5001617682565b906176c2565b90565b6176fa5f6125bd565b617704825f61269a565b906177386177327f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093611006565b91611006565b916177416103a2565b8061774b8161044b565b0390a3565b617758613bcb565b5061778061777a61777361776e60068590613334565b61334a565b849061658d565b156104c2565b617822576177a09161779661779b926003610fc8565b611012565b614849565b6177ab5f8201613f56565b6177bd6177b75f612cc2565b91610554565b1480156177fc575b6177f6576177eb6177e56177f1926177df5f429201613f56565b9061367f565b92610554565b91610554565b101590565b50505f90565b5061780960608201615ec3565b61781c6178166003611159565b91611159565b146177c5565b5050505f90565b61783d617838617842926155fe565b610749565b610554565b90565b634e487b7160e01b5f52603160045260245ffd5b61786281616ded565b801561788357600190039061788061787a8383616df1565b9061338b565b55565b617845565b617890613bcb565b506178a76178a2600183018490616e52565b61093e565b90816178bb6178b55f612cc2565b91610554565b14155f146179875761793992600161793492846178e25f966178dc85617829565b9061367f565b6178ff6178f0888501616e4e565b6178f986617829565b9061367f565b8161791261790c83610554565b91610554565b0361793e575b50505061792e617929868301616de1565b617859565b01616e52565b6129bf565b600190565b61797f9261797161795d61795761797a948c8901617682565b906176c2565b9361796b85918c8901617682565b90613365565b91858501616e52565b613018565b5f8080617918565b5050505f90565b90565b6179a56179a06179aa9261798e565b610749565b610554565b90565b6179e26179e9946179d86060949897956179ce608086019a5f870190610f04565b6020850190611129565b6040830190610f04565b0190610f04565b565b6179ff6179fa617a04926125ca565b612677565b610f01565b90565b939293617a12614b56565b50617a1b616f00565b50617a24613387565b50617a2e85616b77565b617a60617a5a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0617991565b91610554565b11617aed5790617a83602094955f94939293617a7a6103a2565b948594856179ad565b838052039060015afa15617ae857617a9b5f51612677565b80617ab6617ab0617aab5f6125e9565b6103ef565b916103ef565b14617acc575f91617ac65f6179eb565b91929190565b50617ad65f6125e9565b600191617ae25f6179eb565b91929190565b614bd1565b505050617af95f6125e9565b906003929192919056fea164736f6c634300081a000a /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10\x15a\0\x13W[a%#V[a\0\x1D_5a\x03\x9CV[\x80c\x05w\x85P\x14a\x03\x97W\x80c\x07X#o\x14a\x03\x92W\x80c\x0Cviz\x14a\x03\x8DW\x80c\x19\x1C\xBD\x1A\x14a\x03\x88W\x80c\x1E\x8F^\xE5\x14a\x03\x83W\x80c \x81)V\x14a\x03~W\x80c\"\xF1\xEC\x93\x14a\x03yW\x80c+\xF4\xD6\xA7\x14a\x03tW\x80c,\x95v\x88\x14a\x03oW\x80c-\xAE\x18\x85\x14a\x03jW\x80c/K\xD7\xB8\x14a\x03eW\x80c1\xE3\xBD\x1B\x14a\x03`W\x80c6D\xE5\x15\x14a\x03[W\x80c:\xC3\xCB\xE6\x14a\x03VW\x80c>n4\xA7\x14a\x03QW\x80c?\xD6,m\x14a\x03LW\x80c@#Z\x9C\x14a\x03GW\x80cH\xF4\xDA \x14a\x03BW\x80cV\x85\xCFh\x14a\x03=W\x80cV\xC4\xE1}\x14a\x038W\x80cY\xDC\xEA\x12\x14a\x033W\x80cZ\x93m\xC6\x14a\x03.W\x80c\\\xCE\x98\xA6\x14a\x03)W\x80c`vC\x9C\x14a\x03$W\x80c`\xCF\t\x91\x14a\x03\x1FW\x80ca\xD6\xB8l\x14a\x03\x1AW\x80cb\xC7\xE8\xFC\x14a\x03\x15W\x80ce\xA6\x93n\x14a\x03\x10W\x80ck\xFE\x06\xA6\x14a\x03\x0BW\x80cqP\x18\xA6\x14a\x03\x06W\x80cq\xE78\x8C\x14a\x03\x01W\x80cv9\xD2'\x14a\x02\xFCW\x80cy\xBAP\x97\x14a\x02\xF7W\x80c{\x9Fd\xB2\x14a\x02\xF2W\x80c\x81\xBE\xAC.\x14a\x02\xEDW\x80c\x84\xEFs\"\x14a\x02\xE8W\x80c\x8D\xA5\xCB[\x14a\x02\xE3W\x80c\x96hl\x1E\x14a\x02\xDEW\x80c\x9C\xBD\xAE\"\x14a\x02\xD9W\x80c\xAD\xFF\x83\x0C\x14a\x02\xD4W\x80c\xAEG\n\x85\x14a\x02\xCFW\x80c\xB0t\xE9\xDD\x14a\x02\xCAW\x80c\xB9\x9FgY\x14a\x02\xC5W\x80c\xBA\x1F\xB1\x03\x14a\x02\xC0W\x80c\xC1\xEF\x9D\xDF\x14a\x02\xBBW\x80c\xC5\xD9`\xBB\x14a\x02\xB6W\x80c\xCF\xE3GI\x14a\x02\xB1W\x80c\xD5Q\x16,\x14a\x02\xACW\x80c\xDACZ|\x14a\x02\xA7W\x80c\xE3\x0C9x\x14a\x02\xA2W\x80c\xE6\\\xAF\xCB\x14a\x02\x9DW\x80c\xEE\x1C\x03\x90\x14a\x02\x98W\x80c\xF2\xFD\xE3\x8B\x14a\x02\x93W\x80c\xF9\x10\x7F;\x14a\x02\x8EW\x80c\xF9\xF1gb\x14a\x02\x89Wc\xFF\xCF\x08\xF0\x03a\0\x0EWa$\xEFV[a$\xBAV[a$WV[a#\xF7V[a#\xC1V[a#\x8DV[a#XV[a# V[a\"NV[a\"\x19V[a!\xD7V[a!\xA2V[a xV[a DV[a\x1F\xD7V[a\x1F\x9DV[a\x1E\xD2V[a\x1E\x0BV[a\x1C\x82V[a\x1B\xC8V[a\x1B\x95V[a\x1B^V[a\x1A\xC9V[a\x1A\x96V[a\x1A`V[a\x1A*V[a\x19nV[a\x199V[a\x18\xCBV[a\x16\x86V[a\x16V[\x91a\t\xCA`\x03a\t\xC3`\x02\x85\x01a\t>V[\x93\x01a\teV[\x90V[_\x80\xFD[Q\x90V[` \x91\x81R\x01\x90V[\x90\x82_\x93\x92\x82^\x01RV[a\n\x08a\n\x11` \x93a\n\x16\x93a\t\xFF\x81a\t\xD1V[\x93\x84\x80\x93a\t\xD5V[\x95\x86\x91\x01a\t\xDEV[a\x08\xB9V[\x01\x90V[a\n#\x90a\x04\xC2V[\x90RV[a\naa\nh\x94a\nWa\nL``\x95\x99\x98\x96\x99`\x80\x86\x01\x90\x86\x82\x03_\x88\x01Ra\t\xE9V[\x98` \x85\x01\x90a\x05WV[`@\x83\x01\x90a\x05WV[\x01\x90a\n\x1AV[V[4a\n\x9FWa\n\x9Ba\n\x86a\n\x806`\x04a\x07\x1CV[\x90a\trV[\x90a\n\x92\x94\x92\x94a\x03\xA2V[\x94\x85\x94\x85a\n'V[\x03\x90\xF3[a\x03\xA8V[a\n\xAD\x81a\x04\xAFV[\x03a\n\xB4WV[_\x80\xFD[\x90P5\x90a\n\xC5\x82a\n\xA4V[V[\x90\x91\x82`\x1F\x83\x01\x12\x15a\x0B\x01W\x815\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\n\xFCW` \x01\x92`\x01\x83\x02\x84\x01\x11a\n\xF7WV[a\x05\xB7V[a\x05\xB3V[a\x05\xAFV[\x91\x90`\xC0\x83\x82\x03\x12a\x0B\x98Wa\x0B\x1E\x81_\x85\x01a\x03\xD5V[\x92a\x0B,\x82` \x83\x01a\x03\xD5V[\x92a\x0B:\x83`@\x84\x01a\n\xB8V[\x92``\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\x93W\x81a\x0B[\x91\x85\x01a\n\xC7V[\x92\x90\x93a\x0Bk\x83`\x80\x83\x01a\x03\xD5V[\x92`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\x8EWa\x0B\x8A\x92\x01a\n\xC7V[\x90\x91V[a\x03\xB0V[a\x03\xB0V[a\x03\xACV[4a\x0B\xD5Wa\x0B\xBFa\x0B\xB06`\x04a\x0B\x06V[\x96\x95\x90\x95\x94\x91\x94\x93\x92\x93a9fV[a\x0B\xC7a\x03\xA2V[\x80a\x0B\xD1\x81a\x04KV[\x03\x90\xF3[a\x03\xA8V[_\x91\x03\x12a\x0B\xE4WV[a\x03\xACV[\x90V[a\x0C\0a\x0B\xFBa\x0C\x05\x92a\x0B\xE9V[a\x07IV[a\x03\xB4V[\x90V[a\x0C\x13a\x01,a\x0B\xECV[\x90V[a\x0C\x1Ea\x0C\x08V[\x90V[a\x0C*\x90a\x03\xB4V[\x90RV[\x91\x90a\x0CA\x90_` \x85\x01\x94\x01\x90a\x0C!V[V[4a\x0CsWa\x0CS6`\x04a\x0B\xDAV[a\x0Coa\x0C^a\x0C\x16V[a\x0Cfa\x03\xA2V[\x91\x82\x91\x82a\x0C.V[\x03\x90\xF3[a\x03\xA8V[\x1C\x90V[`\x01\x80`\xA0\x1B\x03\x16\x90V[a\x0C\x97\x90`\x08a\x0C\x9C\x93\x02a\x0CxV[a\x0C|V[\x90V[\x90a\x0C\xAA\x91Ta\x0C\x87V[\x90V[a\x0C\xB9`\x0B_\x90a\x0C\x9FV[\x90V[a\x0C\xC5\x90a\x03\xEFV[\x90RV[\x91\x90a\x0C\xDC\x90_` \x85\x01\x94\x01\x90a\x0C\xBCV[V[4a\r\x0EWa\x0C\xEE6`\x04a\x0B\xDAV[a\r\na\x0C\xF9a\x0C\xADV[a\r\x01a\x03\xA2V[\x91\x82\x91\x82a\x0C\xC9V[\x03\x90\xF3[a\x03\xA8V[a\r\x1Ea\x01,a\x0B\xECV[\x90V[a\r)a\r\x13V[\x90V[4a\r\\Wa\r<6`\x04a\x0B\xDAV[a\rXa\rGa\r!V[a\rOa\x03\xA2V[\x91\x82\x91\x82a\x0C.V[\x03\x90\xF3[a\x03\xA8V[\x90` \x82\x82\x03\x12a\r\x92W_\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\r\x8DWa\r\x89\x92\x01a\n\xC7V[\x90\x91V[a\x03\xB0V[a\x03\xACV[Q\x90V[` \x91\x81R\x01\x90V[` \x01\x90V[a\r\xC9a\r\xD2` \x93a\r\xD7\x93a\r\xC0\x81a\t\xD1V[\x93\x84\x80\x93a\x08\x0EV[\x95\x86\x91\x01a\t\xDEV[a\x08\xB9V[\x01\x90V[a\r\xE4\x90a\x05TV[\x90RV[\x90a\x0E\x12\x90` \x80a\x0E\x07`@\x84\x01_\x87\x01Q\x85\x82\x03_\x87\x01Ra\r\xAAV[\x94\x01Q\x91\x01\x90a\r\xDBV[\x90V[\x90a\x0E\x1F\x91a\r\xE8V[\x90V[` \x01\x90V[\x90a\x0EV[\x91a\x11\0`\x01\x83\x01a\x10IV[\x91a\x11\r`\x01\x82\x01a\x10vV[\x91a\x11&`\x02a\x11\x1F`\x01\x85\x01a\x10\xA3V[\x93\x01a\x10\xC7V[\x90V[a\x112\x90a\x04\xAFV[\x90RV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x05\x11\x15a\x11TWV[a\x116V[\x90a\x11c\x82a\x11JV[V[a\x11n\x90a\x11YV[\x90V[a\x11z\x90a\x11eV[\x90RV[\x90\x95\x94\x92a\x11\xC9\x94a\x11\xB8a\x11\xC2\x92a\x11\xAE`\x80\x96a\x11\xA4`\xA0\x88\x01\x9C_\x89\x01\x90a\x05WV[` \x87\x01\x90a\x0C!V[`@\x85\x01\x90a\x11)V[``\x83\x01\x90a\x11qV[\x01\x90a\x0F\x04V[V[4a\x12\0Wa\x11\xFCa\x11\xE7a\x11\xE16`\x04a\x04\x1EV[\x90a\x10\xD4V[\x91a\x11\xF3\x95\x93\x95a\x03\xA2V[\x95\x86\x95\x86a\x11~V[\x03\x90\xF3[a\x03\xA8V[4a\x125Wa\x121a\x12 a\x12\x1B6`\x04a\x04\x84V[a9\xCCV[a\x12(a\x03\xA2V[\x91\x82\x91\x82a\x05dV[\x03\x90\xF3[a\x03\xA8V[Q\x90V[` \x91\x81R\x01\x90V[` \x01\x90V[a\x12V\x90a\x03\xEFV[\x90RV[\x90a\x12g\x81` \x93a\x12MV[\x01\x90V[` \x01\x90V[\x90a\x12\x8Ea\x12\x88a\x12\x81\x84a\x12:V[\x80\x93a\x12>V[\x92a\x12GV[\x90_[\x81\x81\x10a\x12\x9EWPPP\x90V[\x90\x91\x92a\x12\xB7a\x12\xB1`\x01\x92\x86Qa\x12ZV[\x94a\x12kV[\x91\x01\x91\x90\x91a\x12\x91V[a\x12\xD6\x91` \x82\x01\x91_\x81\x84\x03\x91\x01Ra\x12qV[\x90V[4a\x13\tWa\x13\x05a\x12\xF4a\x12\xEF6`\x04a\x04\x84V[a:\x86V[a\x12\xFCa\x03\xA2V[\x91\x82\x91\x82a\x12\xC1V[\x03\x90\xF3[a\x03\xA8V[\x90V[a\x13%a\x13 a\x13*\x92a\x13\x0EV[a\x07IV[a\x05TV[\x90V[a\x137`\xC8a\x13\x11V[\x90V[a\x13Ba\x13-V[\x90V[4a\x13uWa\x13U6`\x04a\x0B\xDAV[a\x13qa\x13`a\x13:V[a\x13ha\x03\xA2V[\x91\x82\x91\x82a\x05dV[\x03\x90\xF3[a\x03\xA8V[\x91\x90a\x13\x8D\x90_` \x85\x01\x94\x01\x90a\n\x1AV[V[4a\x13\xC0Wa\x13\xBCa\x13\xABa\x13\xA56`\x04a\x04\x1EV[\x90a;&V[a\x13\xB3a\x03\xA2V[\x91\x82\x91\x82a\x13zV[\x03\x90\xF3[a\x03\xA8V[\x90a\x13\xCF\x90a\x07LV[_R` R`@_ \x90V[a\x13\xF1\x90a\x13\xEC`\x07\x91_\x92a\x13\xC5V[a\x0C\x9FV[\x90V[4a\x14$Wa\x14 a\x14\x0Fa\x14\n6`\x04a\x04\x84V[a\x13\xDBV[a\x14\x17a\x03\xA2V[\x91\x82\x91\x82a\x0C\xC9V[\x03\x90\xF3[a\x03\xA8V[4a\x14YWa\x14Ua\x14Da\x14?6`\x04a\x04\x84V[a;\xADV[a\x14La\x03\xA2V[\x91\x82\x91\x82a\x12\xC1V[\x03\x90\xF3[a\x03\xA8V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[4a\x14\xB2Wa\x14\x926`\x04a\x0B\xDAV[a\x14\xAEa\x14\x9Da\x14^V[a\x14\xA5a\x03\xA2V[\x91\x82\x91\x82a\x0C\xC9V[\x03\x90\xF3[a\x03\xA8V[\x90`\x80\x82\x82\x03\x12a\x15\x12Wa\x14\xCE\x81_\x84\x01a\x03\xD5V[\x92a\x14\xDC\x82` \x85\x01a\x03\xD5V[\x92a\x14\xEA\x83`@\x83\x01a\n\xB8V[\x92``\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x15\rWa\x15\t\x92\x01a\n\xC7V[\x90\x91V[a\x03\xB0V[a\x03\xACV[4a\x15IWa\x153a\x15*6`\x04a\x14\xB7V[\x93\x92\x90\x92a<\x1FV[a\x15;a\x03\xA2V[\x80a\x15E\x81a\x04KV[\x03\x90\xF3[a\x03\xA8V[\x90V[a\x15ea\x15`a\x15j\x92a\x15NV[a\x07IV[a\x05TV[\x90V[a\x15w`2a\x15QV[\x90V[a\x15\x82a\x15mV[\x90V[4a\x15\xB5Wa\x15\x956`\x04a\x0B\xDAV[a\x15\xB1a\x15\xA0a\x15zV[a\x15\xA8a\x03\xA2V[\x91\x82\x91\x82a\x05dV[\x03\x90\xF3[a\x03\xA8V[4a\x15\xEBWa\x15\xE7a\x15\xD6a\x15\xD06`\x04a\x04\x1EV[\x90a<.V[a\x15\xDEa\x03\xA2V[\x91\x82\x91\x82a\x13zV[\x03\x90\xF3[a\x03\xA8V[\x90V[a\x16\x07a\x16\x02a\x16\x0C\x92a\x15\xF0V[a\x07IV[a\x04\xAFV[\x90V[a\x16\x19`\x03a\x15\xF3V[\x90V[a\x16$a\x16\x0FV[\x90V[\x91\x90a\x16:\x90_` \x85\x01\x94\x01\x90a\x11)V[V[4a\x16lWa\x16L6`\x04a\x0B\xDAV[a\x16ha\x16Wa\x16\x1CV[a\x16_a\x03\xA2V[\x91\x82\x91\x82a\x16'V[\x03\x90\xF3[a\x03\xA8V[\x91\x90a\x16\x84\x90_` \x85\x01\x94\x01\x90a\x11qV[V[4a\x16\xB7Wa\x16\xB3a\x16\xA2a\x16\x9C6`\x04a\x04\x1EV[\x90aV[\x90V[_\x7FNot service owner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a(\x10`\x11` \x92a\t\xD5V[a(\x19\x81a'\xDCV[\x01\x90V[a(2\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra(\x03V[\x90V[\x15a(\x90a\x07LV[_R` R`@_ \x90V[\x90V[`H\x1B\x90V[\x90a3hi\xFF\0\0\0\0\0\0\0\0\0\x91a3MV[\x91\x81\x19\x16\x91\x16\x17\x90V[a3{\x90a\x11YV[\x90V[\x90V[\x90a3\x96a3\x91a3\x9D\x92a3rV[a3~V[\x82Ta3SV[\x90UV[a3\xDD3a3\xD7a3\xD1\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x03\xEFV[\x91a\x03\xEFV[\x14a%\x80V[a4\x02\x82a3\xFBa3\xF5a3\xF0_a%\xE9V[a\x03\xEFV[\x91a\x03\xEFV[\x14\x15a3\x0BV[a4(a4#a4\x1Ca4\x17`\x06\x85\x90a34V[a3JV[\x84\x90ad\\V[a&NV[a4K`\x02`\x01a4Ea4>`\x03\x86\x90a\x0F\xC8V[\x86\x90a\x10\x12V[\x01a3\x81V[\x90a4\x7Fa4y\x7F\x8E-\x88yZ\xB2\xB8\xE1\x83\xCB\x18\xF4oH\x13\x91?\xC8\xAA\xFCK\x93a\x07LV[\x91a\x10\x06V[\x91a4\x88a\x03\xA2V[\x80a4\x92\x81a\x04KV[\x03\x90\xA3V[a4\xA8\x90a4\xA3ad\x96V[a4\xAAV[V[a4\xB5\x90`\x0Ba&\x9AV[V[a4\xC0\x90a4\x97V[V[_\x7FNot registered operator\0\0\0\0\0\0\0\0\0\x91\x01RV[a4\xF6`\x17` \x92a\t\xD5V[a4\xFF\x81a4\xC2V[\x01\x90V[a5\x18\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra4\xE9V[\x90V[\x15a5\"WV[a5*a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a5@`\x04\x82\x01a5\x03V[\x03\x90\xFD[\x90a5y\x97\x96\x95\x94\x93\x92\x91a5ta5oa5ha5c\x84`\x06a34V[a3JV[3\x90ad\xE4V[a5\x1BV[a7\xBAV[V[a5\x8Fa5\x8Aa5\x94\x92a\x03\xB4V[a\x07IV[a\x05TV[\x90V[a5\xABa5\xA6a5\xB0\x92a\x05TV[a\x07IV[a\x03\xB4V[\x90V[\x91` a5\xD4\x92\x94\x93a5\xCD`@\x82\x01\x96_\x83\x01\x90a\x0C!V[\x01\x90a\x0C!V[V[a5\xE5a5\xEB\x91\x93\x92\x93a\x05TV[\x92a\x05TV[\x82\x03\x91\x82\x11a5\xF6WV[a(\xE4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a6\x19Wa6\x15` \x91a\x08\xB9V[\x01\x90V[a\x08\xC3V[\x90\x92\x91\x92a63a6.\x82a5\xFBV[a\x16\xBCV[\x93\x81\x85R` \x85\x01\x90\x82\x84\x01\x11a6OWa6M\x92a\x17\x1DV[V[a\x16\xF6V[a6_\x916\x91a6\x1EV[\x90V[` \x01\x90V[Q\x90V[\x94\x92\x90\x97\x96\x95\x93\x91`\xE0\x86\x01\x98_\x87\x01a6\x85\x91a\x0F\x04V[` \x86\x01a6\x92\x91a\x0C\xBCV[`@\x85\x01a6\x9F\x91a\x0C!V[``\x84\x01a6\xAC\x91a\x0C!V[`\x80\x83\x01a6\xB9\x91a\x11)V[`\xA0\x82\x01a6\xC6\x91a\x0F\x04V[`\xC0\x01a6\xD2\x91a\x0C!V[V[_a\x19\x01`\xF0\x1B\x91\x01RV[a6\xEC`\x02\x80\x92a\x1D3V[a6\xF5\x81a6\xD4V[\x01\x90V[\x90V[a7\x08a7\r\x91a\x0F\x01V[a6\xF9V[\x90RV[` \x80\x93\x92a7,a7%a74\x94a6\xE0V[\x80\x92a6\xFCV[\x01\x80\x92a6\xFCV[\x01\x90V[_\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a7l`\x11` \x92a\t\xD5V[a7u\x81a78V[\x01\x90V[a7\x8E\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra7_V[\x90V[\x15a7\x98WV[a7\xA0a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a7\xB6`\x04\x82\x01a7yV[\x03\x90\xFD[\x91\x92\x93\x94\x97\x96\x90\x95\x97\x80a7\xD6a7\xD0Ba\x05TV[\x91a5{V[\x11a9>Wa7\xEEBa7\xE8\x83a5{V[\x90a5\xD6V[a8\x07a8\x01a7\xFCa\r\x13V[a5{V[\x91a\x05TV[\x11a9\x16Wa9\x14\x97\x98a8\xEBa9\t\x93\x85a8u\x8Aa8f\x8Da8\xF1\x98\x8D\x8Da8=a82a$\x8BV[\x963\x99\x95\x92\x93a6TV[a8Oa8I\x82a6hV[\x91a6bV[ \x92\x93a8Za\x03\xA2V[\x98\x89\x97` \x89\x01a6lV[` \x82\x01\x81\x03\x82R\x03\x82a\x08\xD7V[a8\x87a8\x81\x82a6hV[\x91a6bV[ a8\xD2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a8\xC3a8\xB7a\x03\xA2V[\x93\x84\x92` \x84\x01a7\x11V[` \x82\x01\x81\x03\x82R\x03\x82a\x08\xD7V[a8\xE4a8\xDE\x82a6hV[\x91a6bV[ \x92a6TV[\x90ae\x1EV[a9\x03a8\xFD3a\x03\xEFV[\x91a\x03\xEFV[\x14a7\x91V[\x933\x91\x92\x93\x94af\xB5V[V[a9\x1FBa5\x97V[\x90a9:_\x92\x83\x92c\x185[u`\xE2\x1B\x84R`\x04\x84\x01a5\xB3V[\x03\x90\xFD[a9GBa5\x97V[\x90a9b_\x92\x83\x92cW\xEA\x02\xE9`\xE0\x1B\x84R`\x04\x84\x01a5\xB3V[\x03\x90\xFD[\x90a9v\x97\x96\x95\x94\x93\x92\x91a5DV[V[``\x90V[\x90` \x82\x82\x03\x12a9\xADW_\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a9\xA8Wa9\xA5\x92\x01a\x18IV[\x90V[a\x03\xB0V[a\x03\xACV[\x90a9\xC9\x91a9\xBFa9xV[P\x90\x81\x01\x90a9}V[\x90V[a9\xEBa9\xE6a9\xF0\x92a9\xDEa'\xAEV[P`\x05a34V[a3JV[aj\xC7V[\x90V[``\x90V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a:\x10W` \x80\x91\x02\x01\x90V[a\x08\xC3V[\x90a:'a:\"\x83a9\xF8V[a\x16\xBCV[\x91\x82RV[6\x907V[\x90a:Va:>\x83a:\x15V[\x92` \x80a:L\x86\x93a9\xF8V[\x92\x01\x91\x03\x90a:,V[V[\x90a:b\x82a\x12:V[\x81\x10\x15a:sW` \x80\x91\x02\x01\x01\x90V[a\x07~V[\x90a:\x82\x90a\x03\xEFV[\x90RV[\x90a:\x8Fa9\xF3V[Pa:\xACa:\xA7a:\xA2`\x04\x85\x90a34V[a3JV[aj\xC7V[\x91a:\xB6\x83a:1V[\x91a:\xC0_a,\xC2V[[\x80a:\xD4a:\xCE\x87a\x05TV[\x91a\x05TV[\x10\x15a;\x1BWa;\x16\x90a;\x11a:\xFFa:\xF8a:\xF3`\x04\x88\x90a34V[a3JV[\x83\x90ak\x16V[a;\x0C\x87\x91\x84\x90\x92a:XV[a:xV[a,\xDEV[a:\xC1V[P\x92PP\x90V[_\x90V[\x90a;/a;\"V[Pa;Q`\x01a;Ka;D`\x03\x86\x90a\x0F\xC8V[\x84\x90a\x10\x12V[\x01a\x10\xA3V[a;ca;]_a\x11YV[\x91a\x11YV[\x14\x91\x82\x15a;qW[PP\x90V[a;\x92\x92P`\x01\x91a;\x87a;\x8C\x92`\x03a\x0F\xC8V[a\x10\x12V[\x01a\x10\xA3V[a;\xA5a;\x9F`\x01a\x11YV[\x91a\x11YV[\x14_\x80a;lV[a;\xD3\x90a;\xB9a9\xF3V[P_\x90a;\xCDa;\xC7a\x13-V[\x92a,\xC2V[\x90aI\x1BV[P\x90V[\x90a<\t\x94\x93\x92\x91a<\x04a;\xFFa;\xF8a;\xF3\x84`\x06a34V[a3JV[3\x90ad\xE4V[a5\x1BV[a<\x0BV[V[\x91a<\x1D\x94\x92\x93\x913\x91\x92\x93\x94af\xB5V[V[\x90a<,\x94\x93\x92\x91a;\xD7V[V[\x90aJWP`\x01\x14a>\x0EW[PPPV[a>\x1B\x91\x92\x93\x94Pa\x07\x9FV[\x91_\x92[\x81\x84\x10a>2WPP\x01\x90_\x80\x80a>\tV[`\x01\x81` \x92\x95\x93\x95T\x84\x86\x01R\x01\x91\x01\x92\x90a>\x1FV[\x92\x94\x95PPP`\xFF\x19\x16\x82R\x15\x15` \x02\x01\x90_\x80\x80a>\tV[\x90a>o\x91a=\xD9V[\x90V[\x90a>\x92a>\x8B\x92a>\x82a\x03\xA2V[\x93\x84\x80\x92a>eV[\x03\x83a\x08\xD7V[V[a>\x9D\x90a>rV[\x90V[a>\xAA\x90Qa\x0F\x01V[\x90V[a>\xB7\x90Qa\x05TV[\x90V[_\x7FValue out of bounds\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a>\xEE`\x13` \x92a\t\xD5V[a>\xF7\x81a>\xBAV[\x01\x90V[a?\x13a?!\x92`@\x83\x01\x90\x83\x82\x03_\x85\x01Ra\t\xE9V[\x90` \x81\x83\x03\x91\x01Ra>\xE1V[\x90V[\x92\x91` a?@a?H\x93`@\x87\x01\x90\x87\x82\x03_\x89\x01Ra\t\xE9V[\x94\x01\x90a\x05WV[V[\x90_\x92\x91\x80T\x90a?da?]\x83a\x07\xE4V[\x80\x94a\t\xD5V[\x91`\x01\x81\x16\x90\x81_\x14a?\xBBWP`\x01\x14a?\x7FW[PPPV[a?\x8C\x91\x92\x93\x94Pa\x08\x17V[\x91_\x92[\x81\x84\x10a?\xA3WPP\x01\x90_\x80\x80a?zV[`\x01\x81` \x92\x95\x93\x95T\x84\x86\x01R\x01\x91\x01\x92\x90a?\x90V[\x92\x94\x95PPP`\xFF\x19\x16\x82R\x15\x15` \x02\x01\x90_\x80\x80a?zV[_\x7FRequired metric missing\0\0\0\0\0\0\0\0\0\x91\x01RV[a@\n`\x17` \x92a\t\xD5V[a@\x13\x81a?\xD6V[\x01\x90V[a@/a@=\x92`@\x83\x01\x90\x83\x82\x03_\x85\x01Ra?JV[\x90` \x81\x83\x03\x91\x01Ra?\xFDV[\x90V[\x92\x93\x90\x93a@h3a@ba@\\a@W0a<\x85V[a\x03\xEFV[\x91a\x03\xEFV[\x14a<\xEAV[a@|a@w`\x08\x86\x90a\x07hV[a.\x93V[\x94a@\x86\x82a=LV[\x94a@\x90_a,\xC2V[[\x80a@\xA4a@\x9E\x86a\x05TV[\x91a\x05TV[\x10\x15a@\xF7Wa@\xF2\x90a@\xEDa@\xC8_a@\xC0\x8A\x85\x90a=sV[Q\x01Qa=\x93V[a@\xDAa@\xD4\x82a6hV[\x91a6bV[ a@\xE8\x8A\x91\x84\x90\x92a=\x9AV[a=\xBAV[a,\xDEV[a@\x91V[P\x91\x94\x90\x92\x95aA\x06\x81a.\x9FV[aA\x18aA\x12_a,\xC2V[\x91a\x05TV[\x11\x96aA\"a=\xC8V[\x90\x88aE\xA2W[aA2_a,\xC2V[[\x80aAFaA@\x8Ba\x05TV[\x91a\x05TV[\x10\x15aD\x05W`\x01_\x8BaB9W[P\x90\x88\x87\x89aAk\x94aApW[PPPa,\xDEV[aA3V[\x82_aA\xAEaA\xA6aA\xB7\x94aA\xA1aA\x99` aA\x92aA\xBC\x9B\x8D\x90a=sV[Q\x01a>\xADV[\x97`\ta\x1D\x07V[a\x1D\x1DV[\x92\x87\x90a=sV[Q\x01Q\x90a\x1D\xAEV[a0\x18V[\x88\x87\x89\x90aA\xE6` aA\xDF_aA\xD4\x87\x89\x90a=sV[Q\x01Q\x95\x87\x90a=sV[Q\x01a>\xADV[aB\x19aB\x13\x7F#\xED\x02\xBD6\x05\xBD\xEAj\x8A\xFAv\xC4o\0\xD2t\x86\x0B\xA6\xCE\xA9\x80\xF2X[im\xF9\xE1\x82\xBD\x93a\x07LV[\x93a\x10\x06V[\x93aB.aB%a\x03\xA2V[\x92\x83\x92\x83a?$V[\x03\x90\xA3\x88\x87\x89aAcV[\x9A\x90\x95\x92\x91\x99aBH_a,\xC2V[[\x80aBdaB^aBY\x8Aa.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aC\xEFWaB|aBw\x8D\x87a=\x9AV[a>\xA0V[aB\xA0aB\x9AaB\x95aB\x90\x8A\x86\x90a=\x9AV[a>\xA0V[a\x0F\x01V[\x91a\x0F\x01V[\x14aB\xB3WaB\xAE\x90a,\xDEV[aBIV[\x8A\x91\x9B\x92\x9CP\x89aAk\x94\x95\x98\x8A\x92`\x01\x90\x8AaB\xDD` aB\xD6\x89\x8B\x90a=sV[Q\x01a>\xADV[aC\x05aB\xFFaB\xFA`\x01aB\xF3\x86\x88\x90a.\xA3V[P\x01a\t>V[a\x05TV[\x91a\x05TV[\x10\x91\x88\x88\x84\x15aC\xA5W[PPPPaC:W[aC$\x90[\x15a\x04\xC2V[aC3W[\x93\x94PPPaAUV[P_aC)V[\x90P\x82\x82_aCJ\x87\x89\x90a=sV[Q\x01Q\x91aC\x96aC\x84aC~\x7F\xE0\x8FB\x89l\xE3\xAE\xC2\xFF}\xA9Z\x007/3\xCFg~u\xAD`%\x90\x83*\x8D\xFF\xCD\xADc\x15\x93a\x07LV[\x93a\x10\x06V[\x93aC\x8Da\x03\xA2V[\x91\x82\x91\x82a>\xFBV[\x03\x90\xA3aC$_\x91\x90PaC\x19V[aC\xE5\x93\x94PaC\xD3aC\xDF\x93aC\xCD` aC\xC6aC\xDA\x96`\x02\x96a=sV[Q\x01a>\xADV[\x96a.\xA3V[P\x01a\t>V[a\x05TV[\x91a\x05TV[\x11\x8A_\x88\x88aC\x10V[P\x99\x90\x9A\x87\x89aAk\x94\x95\x98aC$\x8D\x94aC\x1EV[P\x97PP\x92\x93P\x93PaD\x17_a,\xC2V[\x93[\x84aD4aD.aD)\x86a.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aE\x9BWaDZaDT`\x03aDM\x86\x89\x90a.\xA3V[P\x01a\teV[\x15a\x04\xC2V[aE\x90WaD|aDw_aDp\x86\x89\x90a.\xA3V[P\x01a=\xCDV[a>\x94V[aD\x8EaD\x88\x82a6hV[\x91a6bV[ \x90_\x96aD\x9B_a,\xC2V[[\x80aD\xB7aD\xB1aD\xAC\x86a=\x96V[a\x05TV[\x91a\x05TV[\x10\x15aE~WaD\xD0aD\xCB\x84\x83\x90a=\x9AV[a>\xA0V[aD\xE2aD\xDC\x86a\x0F\x01V[\x91a\x0F\x01V[\x14aD\xF5WaD\xF0\x90a,\xDEV[aD\x9CV[P\x95\x90\x96PaE\x16\x91PaE\x0B`\x01[\x15a\x04\xC2V[aE\x1DW[[a,\xDEV[\x93\x94aD\x19V[\x82\x85_aE+\x87\x85\x90a.\xA3V[P\x01\x91aEvaEdaE^\x7F\xE0\x8FB\x89l\xE3\xAE\xC2\xFF}\xA9Z\x007/3\xCFg~u\xAD`%\x90\x83*\x8D\xFF\xCD\xADc\x15\x93a\x07LV[\x93a\x10\x06V[\x93aEma\x03\xA2V[\x91\x82\x91\x82a@\x17V[\x03\x90\xA3aE\x10V[P\x95\x90\x96aE\x16\x92PaE\x0B\x90aE\x05V[\x94\x93aE\x16\x90aE\x11V[PPPPPV[\x96\x93\x90PaE\xBCaE\xB7\x83\x97\x94\x99\x96\x93a.\x9FV[a=LV[\x97aE\xC6_a,\xC2V[[\x80aE\xE2aE\xDCaE\xD7\x8Ba.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aF\x94V[aF\x1FaF\x19\x82a6hV[\x91a6bV[ aF-\x8D\x91\x84\x90\x92a=\x9AV[a=\xBAV[a,\xDEV[aE\xC7V[P\x92\x95\x91\x94\x97\x90\x93\x96aA)V[aFRad\x96V[aFZaF\\V[V[aFmaFh_a%\xE9V[ak\xAEV[V[aFwaFJV[V[aF\x83`\xA0a\x16\xBCV[\x90V[_\x90V[_\x90V[_\x90V[aF\x9AaFyV[\x90` \x80\x80\x80\x80\x86aF\xAAaF\x86V[\x81R\x01aF\xB5a'PV[\x81R\x01aF\xC0a'TV[\x81R\x01aF\xCBaF\x8AV[\x81R\x01aF\xD6aF\x8EV[\x81RPPV[aF\xE4aF\x92V[\x90V[\x90aF\xF1\x90a\x05TV[\x90RV[\x90aF\xFF\x90a\x03\xB4V[\x90RV[\x90aG\r\x90a\x04\xAFV[\x90RV[\x90aG\x1B\x90a\x11YV[\x90RV[\x90aG\x9EaG\x95`\x02aG0aFyV[\x94aGGaG?_\x83\x01a\t>V[_\x88\x01aF\xE7V[aG_aGV`\x01\x83\x01a\x10IV[` \x88\x01aF\xF5V[aGwaGn`\x01\x83\x01a\x10vV[`@\x88\x01aG\x03V[aG\x8FaG\x86`\x01\x83\x01a\x10\xA3V[``\x88\x01aG\x11V[\x01a\x10\xC7V[`\x80\x84\x01a=\xBAV[V[aG\xA9\x90aG\x1FV[\x90V[aG\xD1\x91aG\xC7aG\xCC\x92aG\xBFaF\xDCV[P`\x03a\x0F\xC8V[a\x10\x12V[aG\xA0V[\x90V[_\x90V[\x90aG\xE2\x90a\x07LV[_R` R`@_ \x90V[\x90aG\xF8\x90a\x10\x06V[_R` R`@_ \x90V[aH)\x91aH\x1FaH$\x92aH\x17aG\xD4V[P`\x0CaG\xD8V[aG\xEEV[a\x10IV[\x90V[aH4ak\xC4V[aH=\x90\xFD[\x90\x92\x91\x92aKE_a,\xC2V[[\x80aKcaK]aKX\x85\x89\x90aJ\xC6V[a\x05TV[\x91a\x05TV[\x10\x15aL\x12WaKr0a<\x85V[\x90c\xBA\x1F\xB1\x03\x84aK\x8DaK\x88\x86\x8A\x86\x91aJ\xCAV[aJ\xDFV[\x93\x80;\x15aL\rWaK\xB2_\x80\x94aK\xBDaK\xA6a\x03\xA2V[\x98\x89\x96\x87\x95\x86\x94aJ\xF0V[\x84R`\x04\x84\x01aK\x05V[\x03\x92Z\xF1\x91\x82\x15aL\x08WaK\xD7\x92aK\xDCW[Pa,\xDEV[aKFV[aK\xFB\x90_=\x81\x11aL\x01W[aK\xF3\x81\x83a\x08\xD7V[\x81\x01\x90aJ\xF6V[_aK\xD1V[P=aK\xE9V[aK(V[aJ\xECV[PPP\x90PV[_\x7FNot slashing oracle\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aLM`\x13` \x92a\t\xD5V[aLV\x81aL\x19V[\x01\x90V[aLo\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaL@V[\x90V[\x15aLyWV[aL\x81a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aL\x97`\x04\x82\x01aLZV[\x03\x90\xFD[_\x7FOperator unknown\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aL\xCF`\x10` \x92a\t\xD5V[aL\xD8\x81aL\x9BV[\x01\x90V[aL\xF1\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaL\xC2V[\x90V[\x15aL\xFBWV[aM\x03a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aM\x19`\x04\x82\x01aL\xDCV[\x03\x90\xFD[\x90V[\x90aM3g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91a&wV[\x91\x81\x19\x16\x91\x16\x17\x90V[\x90V[\x90aMUaMPaM\\\x92a\x07LV[aM=V[\x82TaM V[\x90UV[\x91\x90aMz\x81aMs\x81aM\x7F\x95a\t\xD5V[\x80\x95a\x17\x1DV[a\x08\xB9V[\x01\x90V[\x90\x91aM\x9A\x92` \x83\x01\x92_\x81\x85\x03\x91\x01RaM`V[\x90V[aM\xC23aM\xBCaM\xB6aM\xB1`\na%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14aLrV[aM\xE8aM\xE3aM\xDCaM\xD7`\x05\x85\x90a34V[a3JV[\x84\x90ad\xE4V[aL\xF4V[aN\x14aN\taN\x04aM\xFD`\x03\x85\x90a\x0F\xC8V[\x85\x90a\x10\x12V[aM\x1DV[`\x01`\x03\x91\x01a3\x81V[aN2aN+aN&`\x04\x84\x90a34V[a3JV[\x83\x90am\x16V[PaNZaN?Ba5\x97V[aNUaNN`\x0C\x85\x90aG\xD8V[\x85\x90aG\xEEV[aM@V[\x90\x91\x92aN\x90aN\x8A\x7F\x1E)\t\xCFE\xD7\x0C\xF0\x03\xF34\xB7<\x933\x0C\xE7\xE5rx-\xFC\x82\xFA\xB7\x9D\xEB\x88U\xA7\xC7\x91\x93a\x07LV[\x93a\x10\x06V[\x93aN\xA5aN\x9Ca\x03\xA2V[\x92\x83\x92\x83aM\x83V[\x03\x90\xA3V[aN\xB4`\x80a\x16\xBCV[\x90V[aN\xC2\x916\x91a\x17(V[\x90V[RV[\x90aN\xD2\x90a\x04\xC2V[\x90RV[Q\x90V[\x90aN\xE4\x81a\t\xD1V[\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11aO\xA4WaO\x08\x82aO\x02\x85Ta\x07\xE4V[\x85a.\xCFV[` \x90`\x1F\x83\x11`\x01\x14aO\xADV[\x90a0\x18V[aP\x17`\x02\x82\x01aP\x11`@\x88\x01a>\xADV[\x90a0\x18V[\x01\x92\x01aO\xB5V[\x90a0jV[V[\x91\x90aP8WaP6\x91aO\xC2V[V[a+\xA3V[\x90\x81T\x91h\x01\0\0\0\0\0\0\0\0\x83\x10\x15aPmW\x82aPe\x91`\x01aPk\x95\x01\x81Ua.\xA3V[\x90aP'V[V[a\x08\xC3V[aQ\x90\x95aQy\x84\x96aQpaQhaQTaQOaQ\x82\x97aP\xF5aP\xD5aP\xCFaQ\x8B\x9D\x8D\x9F\x9DaP\xCA3aP\xC4aP\xBEaP\xB9aP\xB4`\x07\x8C\x90a\x13\xC5V[a%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14a(5V[a-{V[\x90a-~V[aP\xEEaP\xE8aP\xE3a\x19!V[a\x05TV[\x91a\x05TV[\x11\x15a-\xDBV[aQ\x12\x86aQ\x0BaQ\x05\x8Da\x05TV[\x91a\x05TV[\x10\x15a.jV[aQHaQ)aQ$`\x08\x84\x90a\x07hV[a\x07\x92V[aQBaQ= 1\0\0\0\0\0\0\0\0\0\x91\x01RV[aU\xA8`\x17` \x92a\t\xD5V[aU\xB1\x81aUtV[\x01\x90V[aU\xCA\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaU\x9BV[\x90V[\x15aU\xD4WV[aU\xDCa\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aU\xF2`\x04\x82\x01aU\xB5V[\x03\x90\xFD[aV\0``a\x16\xBCV[\x90V[\x90aV\x18aV\x13aV\x1F\x92a0[V[a0gV[\x82Ta3SV[\x90UV[\x90aVe`@_aVk\x94aVE\x82\x82\x01aV?\x84\x88\x01aH\xCDV[\x90aM@V[aV]\x82\x82\x01aVW` \x88\x01aH\xA4V[\x90aR^V[\x01\x92\x01aO\xB5V[\x90aV\x03V[V[\x90aVw\x91aV#V[V[\x91` aV\x9A\x92\x94\x93aV\x93`@\x82\x01\x96_\x83\x01\x90a\x0C!V[\x01\x90a\x11)V[V[3aV\xCFaV\xC9\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x03\xEFV[\x91a\x03\xEFV[\x14\x80\x15aW\xBBW[aV\xE0\x90aT\x8BV[aV\xFE\x82aV\xF7aV\xF1`V[aX\xC4aX\xBE_a,\xC2V[\x91a\x05TV[\x14aZ\xB0WaX\xFAaX\xE1BaX\xDB_\x87\x01a\t>V[\x90a5\xD6V[aX\xF4aX\xEF_\x85\x01aH\xCDV[a5{V[\x90aX\x01V[\x80aY\x0EaY\x08`\xFFaH\xDAV[\x91a\x05TV[\x11_\x14aZ\xA2WP`\xFF[\x90\x81aY8aY2aY-`\x01\x88\x01a\x10vV[a\x04\xAFV[\x91a\x04\xAFV[\x11aYEW[PPPPPV[aYR\x82`\x01\x86\x01aR^V[aYgaY^_aX?V[`\x01\x86\x01aM@V[aY\x85aY\x7FaYz` \x85\x94\x01aH\xA4V[a\x04\xAFV[\x91a\x04\xAFV[\x10\x15\x80aZ{W[aY\x98W[\x80aY>V[aY\xB3aY\xA7`\x01\x85\x01a\x10\xA3V[\x93`\x01`\x02\x91\x01a3\x81V[aY\xD1aY\xCAaY\xC5`\x04\x85\x90a34V[a3JV[\x85\x90am\x16V[P\x81\x90\x84\x90\x91aZ\x1FaZ\raZ\x07\x7FD\xFD2\xB6wpL\xE6\x8Ewc\x89|Is;\x8FR\x89\x01\x8A\xC6\n\\\x92h\x02\xD67Y\xDBM\x93a\x07LV[\x93a\x10\x06V[\x93aZ\x16a\x03\xA2V[\x91\x82\x91\x82a\x16'V[\x03\x90\xA3\x91\x90\x91`\x02aZZaZT\x7F\"\x88$\xB8l%di\x12_R\\\xE1\x8Cl-\n\x9E\x13=\x13\xB8\xECz,\x96\xA1\x93\xB0\xC2\x8A\t\x93a\x07LV[\x93a\x10\x06V[\x93aZoaZfa\x03\xA2V[\x92\x83\x92\x83aR~V[\x03\x90\xA3_\x80\x80\x80aY\x92V[PaZ\x88`\x01\x84\x01a\x10\xA3V[aZ\x9BaZ\x95`\x02a\x11YV[\x91a\x11YV[\x14\x15aY\x8DV[aZ\xAB\x90aX#V[aY\x19V[PPPPV[PPPPV[``\x90V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11aZ\xD9W` \x80\x91\x02\x01\x90V[a\x08\xC3V[\x90aZ\xF0aZ\xEB\x83aZ\xC1V[a\x16\xBCV[\x91\x82RV[aZ\xFF`\x80a\x16\xBCV[\x90V[\x90a[ia[``\x03a[\x13aZ\xF5V[\x94a[*a[\"_\x83\x01a\t\0V[_\x88\x01aN\xC5V[a[Ba[9`\x01\x83\x01a\t>V[` \x88\x01aF\xE7V[a[Za[Q`\x02\x83\x01a\t>V[`@\x88\x01aF\xE7V[\x01a\teV[``\x84\x01aN\xC8V[V[a[t\x90a[\x02V[\x90V[\x90a[\x81\x82a\x07\x92V[a[\x8A\x81aZ\xDEV[\x92a[\x98` \x85\x01\x91a\x07\x96V[_\x91[\x83\x83\x10a[\xA8WPPPPV[`\x04` `\x01\x92a[\xB8\x85a[kV[\x81R\x01\x92\x01\x92\x01\x91\x90a[\x9BV[a[\xCF\x90a[wV[\x90V[a[\xE9a[\xEE\x91a[\xE1aZ\xBCV[P`\x08a\x07hV[a[\xC6V[\x90V[a\\\x1F\x90a\\\x1Aa\\\x15a\\\x0Ea\\\t\x84`\x06a34V[a3JV[3\x90ad\xE4V[a5\x1BV[a\\zV[V[_\x7FCannot go offline while slashed\0\x91\x01RV[a\\U`\x1F` \x92a\t\xD5V[a\\^\x81a\\!V[\x01\x90V[a\\w\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra\\HV[\x90V[a\\\x98a\\\x93a\\\x8C`\x03\x84\x90a\x0F\xC8V[3\x90a\x10\x12V[aM\x1DV[\x90a\\\xA5`\x01\x83\x01a\x10\xA3V[\x91\x82a\\\xBAa\\\xB4`\x03a\x11YV[\x91a\x11YV[\x14a]@Wa\\\xCE\x90`\x01`\x04\x91\x01a3\x81V[a\\\xECa\\\xE5a\\\xE0`\x04\x84\x90a34V[a3JV[3\x90am\x16V[P\x903\x90\x91`\x04a]&a] \x7F\"\x88$\xB8l%di\x12_R\\\xE1\x8Cl-\n\x9E\x13=\x13\xB8\xECz,\x96\xA1\x93\xB0\xC2\x8A\t\x93a\x07LV[\x93a\x10\x06V[\x93a];a]2a\x03\xA2V[\x92\x83\x92\x83aR~V[\x03\x90\xA3V[a]Ha\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a]^`\x04\x82\x01a\\bV[\x03\x90\xFD[a]k\x90a[\xF1V[V[\x90\x91\x82a]}\x81a]\x84\x93a\x1D3V[\x80\x93a\x17\x1DV[\x01\x90V[a]\x99\x90` \x94\x93a]\xA0\x93a]mV[\x80\x92a\x1DdV[\x01\x90V[\x90\x91a]\xBB\x90a]\xB2a\x03\xA2V[\x93\x84\x93\x84a]\x88V[\x03\x90 \x90V[\x90\x91a]\xCC\x92a]\xA4V[\x90V[\x92a]\xF4a]\xFC\x93\x92a]\xEFa^\x01\x96a]\xE7a'\xAEV[P`\ta\x1D\x07V[a\x1D\x1DV[\x91\x90\x91a]\xC1V[a\t>V[\x90V[a^\x0CaJ\xADV[Pa^\x17`\x01a%\xBDV[\x90V[a^$\x90Qa\x11YV[\x90V[\x90V[a^>a^9a^C\x92a^'V[a\x07IV[a\x05TV[\x90V[` \x7Fl\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x7FOperator not eligible for remova_\x82\x01R\x01RV[a^\xA0`!`@\x92a\t\xD5V[a^\xA9\x81a^FV[\x01\x90V[a^\xC2\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra^\x93V[\x90V[\x15a^\xCCWV[a^\xD4a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a^\xEA`\x04\x82\x01a^\xADV[\x03\x90\xFD[\x90a_\x9Fa_\x9Aa_\xA4\x933a_\x1Fa_\x19a_\x14a_\x0F`\x07\x86\x90a\x13\xC5V[a%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14\x80\x15a`]W[a_0\x90aT\x8BV[a_Na_Ia_B`\x03\x84\x90a\x0F\xC8V[\x86\x90a\x10\x12V[aG\xA0V[a_Z``\x82\x01a^\x1AV[a_ma_g`\x03a\x11YV[\x91a\x11YV[\x03a_\xA7W[Pa_\x92a_\x8Ba_\x86`\x05\x84\x90a34V[a3JV[\x85\x90am\x16V[P`\x04a34V[a3JV[am\x16V[PV[a`#\x90a_\xF7a_\xE7a_\xBA\x85ac~V[a_\xE1a_\xDC` a_\xD5a_\xD0_\x86\x01aH\xCDV[a5{V[\x93\x01aH\xA4V[aH\xDAV[\x90a(\xF8V[a_\xF1`\na^*V[\x90a(\xF8V[a`\x02_\x83\x01a>\xADV[a`\x14a`\x0E_a,\xC2V[\x91a\x05TV[\x11\x91\x82a`)W[PPa^\xC5V[_a_sV[a`T\x91\x92Pa`Ha`N\x91a`B_B\x92\x01a>\xADV[\x90a5\xD6V[\x92a\x05TV[\x91a\x05TV[\x10\x15_\x80a`\x1CV[Pa_03a`{a`ua`paJ\xB1V[a\x03\xEFV[\x91a\x03\xEFV[\x14\x90Pa_'V[\x90a`\xADa`\xB2\x91a`\x93a;\"V[Pa`\xA8a`\xA0\x85ac~V[\x94`\x03a\x0F\xC8V[a\x10\x12V[aG\xA0V[a`\xBD_\x82\x01a>\xADV[a`\xCFa`\xC9_a,\xC2V[\x91a\x05TV[\x14aa\nWaa\0a`\xFB_a`\xF4aa\x06\x94a`\xEE\x83B\x92\x01a>\xADV[\x90a5\xD6V[\x94\x01aH\xCDV[a5{V[\x91a\x05TV[\x10\x90V[PP_\x90V[aa!\x90aa\x1Cad\x96V[aa#V[V[aa.\x81`\x01a&\x9AV[aa6aJ\xB1V[\x90aajaad\x7F8\xD1k\x8C\xAC\"\xD9\x9F\xC7\xC1$\xB9\xCD\r\xE2\xD3\xFA\x1F\xAE\xF4 \xBF\xE7\x91\xD8\xC3b\xD7e\xE2'\0\x93a\x10\x06V[\x91a\x10\x06V[\x91aasa\x03\xA2V[\x80aa}\x81a\x04KV[\x03\x90\xA3V[aa\x8B\x90aa\x10V[V[_aa\xCCaa\xD2\x93aa\xC43aa\xBEaa\xB8aa\xB3aa\xAE`\x07\x8A\x90a\x13\xC5V[a%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14a(5V[\x92`\x02a\"\x87V[\x01aV\x03V[V[_\x7FNot registered\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[ab\x08`\x0E` \x92a\t\xD5V[ab\x11\x81aa\xD4V[\x01\x90V[ab*\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Raa\xFBV[\x90V[\x15ab4WV[abV[an\x8Can\x86_a,\xC2V[\x91a\x05TV[\x14\x15\x90V[_\x90V[_\x90V[\x90V[an\xB0an\xABan\xB5\x92an\x99V[a\x07IV[a\x05TV[\x90V[_\x90V[\x91\x90\x91an\xC7aJ\xADV[Pan\xD0an\x91V[Pan\xD9an\x95V[Pan\xE3\x83a6hV[an\xF6an\xF0`Aan\x9CV[\x91a\x05TV[\x14_\x14ao=Wao6\x91\x92ao\nan\x95V[Pao\x13an\x95V[Pao\x1Can\xB8V[P` \x81\x01Q```@\x83\x01Q\x92\x01Q_\x1A\x90\x91\x92ay\xB0V[\x91\x92\x90\x91\x90V[PaoG_a%\xE9V[\x90ao[aoV`\x02\x94a6hV[ad=V[\x91\x92\x91\x90V[`\x04\x11\x15aokWV[a\x116V[\x90aoz\x82aoaV[V[\x80ao\x8Fao\x89_aopV[\x91aopV[\x14_\x14ao\x9AWPPV[\x80ao\xAEao\xA8`\x01aopV[\x91aopV[\x14_\x14ao\xD1W_c\xF6E\xEE\xDF`\xE0\x1B\x81R\x80ao\xCD`\x04\x82\x01a\x04KV[\x03\x90\xFD[\x80ao\xE5ao\xDF`\x02aopV[\x91aopV[\x14_\x14ap\x13Wap\x0Fao\xF8\x83aj\xE6V[_\x91\x82\x91c\xFC\xE6\x98\xF7`\xE0\x1B\x83R`\x04\x83\x01a\x05dV[\x03\x90\xFD[ap&ap `\x03aopV[\x91aopV[\x14ap.WPV[apI\x90_\x91\x82\x91c5\xE2\xF3\x83`\xE2\x1B\x83R`\x04\x83\x01a\x0F\x11V[\x03\x90\xFD[apaap\\apf\x92a\x13\x0EV[a\x07IV[a\x04\xAFV[\x90V[apuap{\x91a\x03\xB4V[\x91a\x03\xB4V[\x90\x03\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11ap\x8FWV[a(\xE4V[_\x7FProtocol violation reported\0\0\0\0\0\x91\x01RV[ap\xC8`\x1B` \x92a\t\xD5V[ap\xD1\x81ap\x94V[\x01\x90V[ap\xEA\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Rap\xBBV[\x90V[\x93PP\x92Paq\x05ap\xFF`\xC8apMV[\x91a\x04\xAFV[\x10\x15aq\x10W[PPV[aq\x19Ba5\x97V[aq7aq2aq+`\x0C\x85\x90aG\xD8V[\x85\x90aG\xEEV[a\x10IV[\x80aqJaqD_aX?V[\x91a\x03\xB4V[\x14\x90\x81\x15aq\xD0W[Paq_W[Paq\x0CV[aq~\x90aqyaqr`\x0C\x85\x90aG\xD8V[\x85\x90aG\xEEV[aM@V[\x90aq\xB2aq\xAC\x7F\x1E)\t\xCFE\xD7\x0C\xF0\x03\xF34\xB7<\x933\x0C\xE7\xE5rx-\xFC\x82\xFA\xB7\x9D\xEB\x88U\xA7\xC7\x91\x93a\x07LV[\x91a\x10\x06V[\x91aq\xBBa\x03\xA2V[\x80aq\xC5\x81ap\xD5V[\x03\x90\xA3_\x80\x80aqYV[aq\xDB\x91P\x82apiV[aq\xF4aq\xEEaq\xE9a\x0FzV[a\x03\xB4V[\x91a\x03\xB4V[\x10\x15_aqSV[\x90V[ar\x13ar\x0Ear\x18\x92aq\xFCV[a\x07IV[a\x05TV[\x90V[\x90\x92\x91\x92ar0ar+\x82a\x16\xFAV[a\x16\xBCV[\x93\x81\x85R` \x85\x01\x90\x82\x84\x01\x11arLWarJ\x92a\t\xDEV[V[a\x16\xF6V[\x90\x80`\x1F\x83\x01\x12\x15aroW\x81` arl\x93Q\x91\x01ar\x1BV[\x90V[a\x05\xAFV[\x90PQ\x90ar\x81\x82a\x06\xF9V[V[\x91\x90\x91`@\x81\x84\x03\x12ar\xD6War\x9A`@a\x16\xBCV[\x92_\x82\x01Q\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11ar\xD1War\xBE\x82ar\xCA\x94\x83\x01arQV[_\x86\x01R` \x01artV[` \x83\x01RV[a\x16\xF2V[a\x16\xEEV[\x92\x91\x90ar\xEFar\xEA\x82a\x16\xD1V[a\x16\xBCV[\x93\x81\x85R` \x80\x86\x01\x92\x02\x81\x01\x91\x83\x83\x11asFW\x81\x90[\x83\x82\x10as\x15WPPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11asAW` \x91as6\x87\x84\x93\x87\x01ar\x83V[\x81R\x01\x91\x01\x90as\x07V[a\x05\xAFV[a\x05\xB7V[\x90\x80`\x1F\x83\x01\x12\x15asiW\x81` asf\x93Q\x91\x01ar\xDBV[\x90V[a\x05\xAFV[\x90` \x82\x82\x03\x12as\x9EW_\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11as\x99Was\x96\x92\x01asKV[\x90V[a\x03\xB0V[a\x03\xACV[` \x91\x81R\x01\x90V[\x91\x90as\xC6\x81as\xBF\x81as\xCB\x95as\xA3V[\x80\x95a\x17\x1DV[a\x08\xB9V[\x01\x90V[\x90\x91as\xE6\x92` \x83\x01\x92_\x81\x85\x03\x91\x01Ras\xACV[\x90V[as\xF3`2a\x15QV[\x90V[\x94\x93\x91``\x91at7\x94at\"at/\x93at\x18`\x80\x8B\x01\x94_\x8C\x01\x90a\x0C!V[` \x8A\x01\x90a\x0C\xBCV[\x87\x82\x03`@\x89\x01Ra\x0E(V[\x94\x01\x90a\x05WV[V[\x91atE\x81\x85\x90a-~V[atWatQ_a,\xC2V[\x91a\x05TV[\x14au\xF1Watg\x81\x85\x90a-~V[at{atua\xC3Paq\xFFV[\x91a\x05TV[\x11au\xEBW_at\x89a9xV[\x94at\x930a<\x85V[at\xB5c1\xE3\xBD\x1B\x94\x92\x94at\xC0at\xA9a\x03\xA2V[\x96\x87\x95\x86\x94\x85\x94aJ\xF0V[\x84R`\x04\x84\x01as\xCFV[\x03\x91Z\xFA\x80\x91_\x92au\xC7W[P\x15_\x14au\xBEWP`\x01au\xB9W[at\xE6\x83a\r\x97V[at\xFFat\xF9at\xF4as\xE9V[a\x05TV[\x91a\x05TV[\x11_\x14au\xABWau\x0Eas\xE9V[[au\x180a<\x85V[\x90ce\xA6\x93n\x93\x92\x94\x90\x82;\x15au\xA6W_\x94auS\x86\x92auH\x94auau\xDC\x81\x83a\x08\xD7V[\x81\x01\x90asnV[\x90_at\xCDV[PPPPV[PPPPV[_av\x0B\x91av\x04a'\xAEV[P\x01am\xDFV[\x90V[_R` _ \x90V[av \x81am\xDFV[\x82\x10\x15av:Wav2`\x01\x91av\x0EV[\x91\x02\x01\x90_\x90V[a\x07~V[avO\x90`\x08avT\x93\x02a\x0CxV[a\x10\xB0V[\x90V[\x90avb\x91Tav?V[\x90V[av\x83\x91_av}\x92avvan\x95V[P\x01av\x17V[\x90avWV[\x90V[av\x8F_a%\xBDV[av\x99\x82_a&\x9AV[\x90av\xCDav\xC7\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x93a\x10\x06V[\x91a\x10\x06V[\x91av\xD6a\x03\xA2V[\x80av\xE0\x81a\x04KV[\x03\x90\xA3V[av\xEDa;\"V[Paw\x15aw\x0Faw\x08aw\x03`\x06\x85\x90a34V[a3JV[\x84\x90ad\xE4V[\x15a\x04\xC2V[aw\xB7Waw5\x91aw+aw0\x92`\x03a\x0F\xC8V[a\x10\x12V[aG\xA0V[aw@_\x82\x01a>\xADV[awRawL_a,\xC2V[\x91a\x05TV[\x14\x80\x15aw\x91W[aw\x8BWaw\x80awzaw\x86\x92awt_B\x92\x01a>\xADV[\x90a5\xD6V[\x92a\x05TV[\x91a\x05TV[\x10\x15\x90V[PP_\x90V[Paw\x9E``\x82\x01a^\x1AV[aw\xB1aw\xAB`\x03a\x11YV[\x91a\x11YV[\x14awZV[PPP_\x90V[aw\xD2aw\xCDaw\xD7\x92aUUV[a\x07IV[a\x05TV[\x90V[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[ax\0\x91aw\xFAan\x95V[\x91am\x88V[V[ax\x0B\x81am\\V[\x80\x15ax,W`\x01\x90\x03\x90ax)ax#\x83\x83am`V[\x90aw\xEEV[UV[aw\xDAV[ax9a;\"V[PaxPaxK`\x01\x83\x01\x84\x90am\xE3V[a\t>V[\x90\x81axdax^_a,\xC2V[\x91a\x05TV[\x14\x15_\x14ay0Wax\xE2\x92`\x01ax\xDD\x92\x84ax\x8B_\x96ax\x85\x85aw\xBEV[\x90a5\xD6V[ax\xA8ax\x99\x88\x85\x01am\xDFV[ax\xA2\x86aw\xBEV[\x90a5\xD6V[\x81ax\xBBax\xB5\x83a\x05TV[\x91a\x05TV[\x03ax\xE7W[PPPax\xD7ax\xD2\x86\x83\x01amPV[ax\x02V[\x01am\xE3V[a)\xBFV[`\x01\x90V[ay(\x92ay\x1Aay\x06ay\0ay#\x94\x8C\x89\x01av\x17V[\x90avWV[\x93ay\x14\x85\x91\x8C\x89\x01av\x17V[\x90am\x88V[\x91\x85\x85\x01am\xE3V[a0\x18V[_\x80\x80ax\xC1V[PPP_\x90V[\x90V[ayNayIayS\x92ay7V[a\x07IV[a\x05TV[\x90V[ay\x8Bay\x92\x94ay\x81``\x94\x98\x97\x95ayw`\x80\x86\x01\x9A_\x87\x01\x90a\x0F\x04V[` \x85\x01\x90a\x11)V[`@\x83\x01\x90a\x0F\x04V[\x01\x90a\x0F\x04V[V[ay\xA8ay\xA3ay\xAD\x92a%\xCAV[a&wV[a\x0F\x01V[\x90V[\x93\x92\x93ay\xBBaJ\xADV[Pay\xC4an\x91V[Pay\xCDan\x95V[Pay\xD7\x85aj\xE6V[az\taz\x03\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0ay:V[\x91a\x05TV[\x11az\x96W\x90az,` \x94\x95_\x94\x93\x92\x93az#a\x03\xA2V[\x94\x85\x94\x85ayVV[\x83\x80R\x03\x90`\x01Z\xFA\x15az\x91WazD_Qa&wV[\x80az_azYazT_a%\xE9V[a\x03\xEFV[\x91a\x03\xEFV[\x14azuW_\x91azo_ay\x94V[\x91\x92\x91\x90V[Paz\x7F_a%\xE9V[`\x01\x91az\x8B_ay\x94V[\x91\x92\x91\x90V[aK(V[PPPaz\xA2_a%\xE9V[\x90`\x03\x92\x91\x92\x91\x90V\xFE\xA1dsolcC\0\x08\x1A\0\n", + b"`\x80`@R`\x046\x10\x15a\0\x13W[a%#V[a\0\x1D_5a\x03\x9CV[\x80c\x05w\x85P\x14a\x03\x97W\x80c\x07X#o\x14a\x03\x92W\x80c\x0Cviz\x14a\x03\x8DW\x80c\x19\x1C\xBD\x1A\x14a\x03\x88W\x80c\x1E\x8F^\xE5\x14a\x03\x83W\x80c \x81)V\x14a\x03~W\x80c\"\xF1\xEC\x93\x14a\x03yW\x80c+\xF4\xD6\xA7\x14a\x03tW\x80c,\x95v\x88\x14a\x03oW\x80c-\xAE\x18\x85\x14a\x03jW\x80c/K\xD7\xB8\x14a\x03eW\x80c1\xE3\xBD\x1B\x14a\x03`W\x80c6D\xE5\x15\x14a\x03[W\x80c:\xC3\xCB\xE6\x14a\x03VW\x80c>n4\xA7\x14a\x03QW\x80c?\xD6,m\x14a\x03LW\x80c@#Z\x9C\x14a\x03GW\x80cH\xF4\xDA \x14a\x03BW\x80cV\x85\xCFh\x14a\x03=W\x80cV\xC4\xE1}\x14a\x038W\x80cY\xDC\xEA\x12\x14a\x033W\x80cZ\x93m\xC6\x14a\x03.W\x80c\\\xCE\x98\xA6\x14a\x03)W\x80c`vC\x9C\x14a\x03$W\x80c`\xCF\t\x91\x14a\x03\x1FW\x80ca\xD6\xB8l\x14a\x03\x1AW\x80cb\xC7\xE8\xFC\x14a\x03\x15W\x80ce\xA6\x93n\x14a\x03\x10W\x80ck\xFE\x06\xA6\x14a\x03\x0BW\x80cqP\x18\xA6\x14a\x03\x06W\x80cq\xE78\x8C\x14a\x03\x01W\x80cv9\xD2'\x14a\x02\xFCW\x80cy\xBAP\x97\x14a\x02\xF7W\x80c{\x9Fd\xB2\x14a\x02\xF2W\x80c\x81\xBE\xAC.\x14a\x02\xEDW\x80c\x84\xEFs\"\x14a\x02\xE8W\x80c\x8D\xA5\xCB[\x14a\x02\xE3W\x80c\x96hl\x1E\x14a\x02\xDEW\x80c\x9C\xBD\xAE\"\x14a\x02\xD9W\x80c\xAD\xFF\x83\x0C\x14a\x02\xD4W\x80c\xAEG\n\x85\x14a\x02\xCFW\x80c\xB0t\xE9\xDD\x14a\x02\xCAW\x80c\xB9\x9FgY\x14a\x02\xC5W\x80c\xBA\x1F\xB1\x03\x14a\x02\xC0W\x80c\xC1\xEF\x9D\xDF\x14a\x02\xBBW\x80c\xC5\xD9`\xBB\x14a\x02\xB6W\x80c\xCF\xE3GI\x14a\x02\xB1W\x80c\xD5Q\x16,\x14a\x02\xACW\x80c\xDACZ|\x14a\x02\xA7W\x80c\xE3\x0C9x\x14a\x02\xA2W\x80c\xE6\\\xAF\xCB\x14a\x02\x9DW\x80c\xEE\x1C\x03\x90\x14a\x02\x98W\x80c\xF2\xFD\xE3\x8B\x14a\x02\x93W\x80c\xF9\x10\x7F;\x14a\x02\x8EW\x80c\xF9\xF1gb\x14a\x02\x89Wc\xFF\xCF\x08\xF0\x03a\0\x0EWa$\xEFV[a$\xBAV[a$WV[a#\xF7V[a#\xC1V[a#\x8DV[a#XV[a# V[a\"NV[a\"\x19V[a!\xD7V[a!\xA2V[a xV[a DV[a\x1F\xD7V[a\x1F\x9DV[a\x1E\xD2V[a\x1E\x0BV[a\x1C\x82V[a\x1B\xC8V[a\x1B\x95V[a\x1B^V[a\x1A\xC9V[a\x1A\x96V[a\x1A`V[a\x1A*V[a\x19nV[a\x199V[a\x18\xCBV[a\x16\x86V[a\x16V[\x91a\t\xCA`\x03a\t\xC3`\x02\x85\x01a\t>V[\x93\x01a\teV[\x90V[_\x80\xFD[Q\x90V[` \x91\x81R\x01\x90V[\x90\x82_\x93\x92\x82^\x01RV[a\n\x08a\n\x11` \x93a\n\x16\x93a\t\xFF\x81a\t\xD1V[\x93\x84\x80\x93a\t\xD5V[\x95\x86\x91\x01a\t\xDEV[a\x08\xB9V[\x01\x90V[a\n#\x90a\x04\xC2V[\x90RV[a\naa\nh\x94a\nWa\nL``\x95\x99\x98\x96\x99`\x80\x86\x01\x90\x86\x82\x03_\x88\x01Ra\t\xE9V[\x98` \x85\x01\x90a\x05WV[`@\x83\x01\x90a\x05WV[\x01\x90a\n\x1AV[V[4a\n\x9FWa\n\x9Ba\n\x86a\n\x806`\x04a\x07\x1CV[\x90a\trV[\x90a\n\x92\x94\x92\x94a\x03\xA2V[\x94\x85\x94\x85a\n'V[\x03\x90\xF3[a\x03\xA8V[a\n\xAD\x81a\x04\xAFV[\x03a\n\xB4WV[_\x80\xFD[\x90P5\x90a\n\xC5\x82a\n\xA4V[V[\x90\x91\x82`\x1F\x83\x01\x12\x15a\x0B\x01W\x815\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\n\xFCW` \x01\x92`\x01\x83\x02\x84\x01\x11a\n\xF7WV[a\x05\xB7V[a\x05\xB3V[a\x05\xAFV[\x91\x90`\xC0\x83\x82\x03\x12a\x0B\x98Wa\x0B\x1E\x81_\x85\x01a\x03\xD5V[\x92a\x0B,\x82` \x83\x01a\x03\xD5V[\x92a\x0B:\x83`@\x84\x01a\n\xB8V[\x92``\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\x93W\x81a\x0B[\x91\x85\x01a\n\xC7V[\x92\x90\x93a\x0Bk\x83`\x80\x83\x01a\x03\xD5V[\x92`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\x8EWa\x0B\x8A\x92\x01a\n\xC7V[\x90\x91V[a\x03\xB0V[a\x03\xB0V[a\x03\xACV[4a\x0B\xD5Wa\x0B\xBFa\x0B\xB06`\x04a\x0B\x06V[\x96\x95\x90\x95\x94\x91\x94\x93\x92\x93a:\x0FV[a\x0B\xC7a\x03\xA2V[\x80a\x0B\xD1\x81a\x04KV[\x03\x90\xF3[a\x03\xA8V[_\x91\x03\x12a\x0B\xE4WV[a\x03\xACV[\x90V[a\x0C\0a\x0B\xFBa\x0C\x05\x92a\x0B\xE9V[a\x07IV[a\x03\xB4V[\x90V[a\x0C\x13a\x01,a\x0B\xECV[\x90V[a\x0C\x1Ea\x0C\x08V[\x90V[a\x0C*\x90a\x03\xB4V[\x90RV[\x91\x90a\x0CA\x90_` \x85\x01\x94\x01\x90a\x0C!V[V[4a\x0CsWa\x0CS6`\x04a\x0B\xDAV[a\x0Coa\x0C^a\x0C\x16V[a\x0Cfa\x03\xA2V[\x91\x82\x91\x82a\x0C.V[\x03\x90\xF3[a\x03\xA8V[\x1C\x90V[`\x01\x80`\xA0\x1B\x03\x16\x90V[a\x0C\x97\x90`\x08a\x0C\x9C\x93\x02a\x0CxV[a\x0C|V[\x90V[\x90a\x0C\xAA\x91Ta\x0C\x87V[\x90V[a\x0C\xB9`\x0B_\x90a\x0C\x9FV[\x90V[a\x0C\xC5\x90a\x03\xEFV[\x90RV[\x91\x90a\x0C\xDC\x90_` \x85\x01\x94\x01\x90a\x0C\xBCV[V[4a\r\x0EWa\x0C\xEE6`\x04a\x0B\xDAV[a\r\na\x0C\xF9a\x0C\xADV[a\r\x01a\x03\xA2V[\x91\x82\x91\x82a\x0C\xC9V[\x03\x90\xF3[a\x03\xA8V[a\r\x1Ea\x01,a\x0B\xECV[\x90V[a\r)a\r\x13V[\x90V[4a\r\\Wa\r<6`\x04a\x0B\xDAV[a\rXa\rGa\r!V[a\rOa\x03\xA2V[\x91\x82\x91\x82a\x0C.V[\x03\x90\xF3[a\x03\xA8V[\x90` \x82\x82\x03\x12a\r\x92W_\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\r\x8DWa\r\x89\x92\x01a\n\xC7V[\x90\x91V[a\x03\xB0V[a\x03\xACV[Q\x90V[` \x91\x81R\x01\x90V[` \x01\x90V[a\r\xC9a\r\xD2` \x93a\r\xD7\x93a\r\xC0\x81a\t\xD1V[\x93\x84\x80\x93a\x08\x0EV[\x95\x86\x91\x01a\t\xDEV[a\x08\xB9V[\x01\x90V[a\r\xE4\x90a\x05TV[\x90RV[\x90a\x0E\x12\x90` \x80a\x0E\x07`@\x84\x01_\x87\x01Q\x85\x82\x03_\x87\x01Ra\r\xAAV[\x94\x01Q\x91\x01\x90a\r\xDBV[\x90V[\x90a\x0E\x1F\x91a\r\xE8V[\x90V[` \x01\x90V[\x90a\x0EV[\x91a\x11\0`\x01\x83\x01a\x10IV[\x91a\x11\r`\x01\x82\x01a\x10vV[\x91a\x11&`\x02a\x11\x1F`\x01\x85\x01a\x10\xA3V[\x93\x01a\x10\xC7V[\x90V[a\x112\x90a\x04\xAFV[\x90RV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[`\x05\x11\x15a\x11TWV[a\x116V[\x90a\x11c\x82a\x11JV[V[a\x11n\x90a\x11YV[\x90V[a\x11z\x90a\x11eV[\x90RV[\x90\x95\x94\x92a\x11\xC9\x94a\x11\xB8a\x11\xC2\x92a\x11\xAE`\x80\x96a\x11\xA4`\xA0\x88\x01\x9C_\x89\x01\x90a\x05WV[` \x87\x01\x90a\x0C!V[`@\x85\x01\x90a\x11)V[``\x83\x01\x90a\x11qV[\x01\x90a\x0F\x04V[V[4a\x12\0Wa\x11\xFCa\x11\xE7a\x11\xE16`\x04a\x04\x1EV[\x90a\x10\xD4V[\x91a\x11\xF3\x95\x93\x95a\x03\xA2V[\x95\x86\x95\x86a\x11~V[\x03\x90\xF3[a\x03\xA8V[4a\x125Wa\x121a\x12 a\x12\x1B6`\x04a\x04\x84V[a:uV[a\x12(a\x03\xA2V[\x91\x82\x91\x82a\x05dV[\x03\x90\xF3[a\x03\xA8V[Q\x90V[` \x91\x81R\x01\x90V[` \x01\x90V[a\x12V\x90a\x03\xEFV[\x90RV[\x90a\x12g\x81` \x93a\x12MV[\x01\x90V[` \x01\x90V[\x90a\x12\x8Ea\x12\x88a\x12\x81\x84a\x12:V[\x80\x93a\x12>V[\x92a\x12GV[\x90_[\x81\x81\x10a\x12\x9EWPPP\x90V[\x90\x91\x92a\x12\xB7a\x12\xB1`\x01\x92\x86Qa\x12ZV[\x94a\x12kV[\x91\x01\x91\x90\x91a\x12\x91V[a\x12\xD6\x91` \x82\x01\x91_\x81\x84\x03\x91\x01Ra\x12qV[\x90V[4a\x13\tWa\x13\x05a\x12\xF4a\x12\xEF6`\x04a\x04\x84V[a;/V[a\x12\xFCa\x03\xA2V[\x91\x82\x91\x82a\x12\xC1V[\x03\x90\xF3[a\x03\xA8V[\x90V[a\x13%a\x13 a\x13*\x92a\x13\x0EV[a\x07IV[a\x05TV[\x90V[a\x137`\xC8a\x13\x11V[\x90V[a\x13Ba\x13-V[\x90V[4a\x13uWa\x13U6`\x04a\x0B\xDAV[a\x13qa\x13`a\x13:V[a\x13ha\x03\xA2V[\x91\x82\x91\x82a\x05dV[\x03\x90\xF3[a\x03\xA8V[\x91\x90a\x13\x8D\x90_` \x85\x01\x94\x01\x90a\n\x1AV[V[4a\x13\xC0Wa\x13\xBCa\x13\xABa\x13\xA56`\x04a\x04\x1EV[\x90a;\xCFV[a\x13\xB3a\x03\xA2V[\x91\x82\x91\x82a\x13zV[\x03\x90\xF3[a\x03\xA8V[\x90a\x13\xCF\x90a\x07LV[_R` R`@_ \x90V[a\x13\xF1\x90a\x13\xEC`\x07\x91_\x92a\x13\xC5V[a\x0C\x9FV[\x90V[4a\x14$Wa\x14 a\x14\x0Fa\x14\n6`\x04a\x04\x84V[a\x13\xDBV[a\x14\x17a\x03\xA2V[\x91\x82\x91\x82a\x0C\xC9V[\x03\x90\xF3[a\x03\xA8V[4a\x14YWa\x14Ua\x14Da\x14?6`\x04a\x04\x84V[aV[\x90V[_\x7FNot service owner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a(\x10`\x11` \x92a\t\xD5V[a(\x19\x81a'\xDCV[\x01\x90V[a(2\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra(\x03V[\x90V[\x15a(\x90a\x07LV[_R` R`@_ \x90V[\x90V[a3V\x90a\x0F\x01V[\x90V[a3b\x90a\t\"V[\x90V[\x91\x90a3{a3va3\x83\x93a3MV[a3YV[\x90\x83Ta)YV[\x90UV[_\x90V[a3\x9D\x91a3\x97a3\x87V[\x91a3eV[V[_`\x02a3\xBE\x92a3\xB2\x83\x80\x83\x01a)\xBFV[\x82`\x01\x82\x01U\x01a3\x8BV[V[\x90_\x03a3\xD2Wa3\xD0\x90a3\x9FV[V[a+\xA3V[`H\x1B\x90V[\x90a3\xF2i\xFF\0\0\0\0\0\0\0\0\0\x91a3\xD7V[\x91\x81\x19\x16\x91\x16\x17\x90V[a4\x05\x90a\x11YV[\x90V[\x90V[\x90a4 a4\x1Ba4'\x92a3\xFCV[a4\x08V[\x82Ta3\xDDV[\x90UV[a4g3a4aa4[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x03\xEFV[\x91a\x03\xEFV[\x14a%\x80V[a4\x8C\x82a4\x85a4\x7Fa4z_a%\xE9V[a\x03\xEFV[\x91a\x03\xEFV[\x14\x15a3\x0BV[a4\xB2a4\xADa4\xA6a4\xA1`\x06\x85\x90a34V[a3JV[\x84\x90ae\x05V[a&NV[a4\xD1_a4\xCCa4\xC5`\x03\x85\x90a\x0F\xC8V[\x85\x90a\x10\x12V[a3\xC0V[a4\xF4`\x02`\x01a4\xEEa4\xE7`\x03\x86\x90a\x0F\xC8V[\x86\x90a\x10\x12V[\x01a4\x0BV[\x90a5(a5\"\x7F\x8E-\x88yZ\xB2\xB8\xE1\x83\xCB\x18\xF4oH\x13\x91?\xC8\xAA\xFCK\x93a\x07LV[\x91a\x10\x06V[\x91a51a\x03\xA2V[\x80a5;\x81a\x04KV[\x03\x90\xA3V[a5Q\x90a5Lae?V[a5SV[V[a5^\x90`\x0Ba&\x9AV[V[a5i\x90a5@V[V[_\x7FNot registered operator\0\0\0\0\0\0\0\0\0\x91\x01RV[a5\x9F`\x17` \x92a\t\xD5V[a5\xA8\x81a5kV[\x01\x90V[a5\xC1\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra5\x92V[\x90V[\x15a5\xCBWV[a5\xD3a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a5\xE9`\x04\x82\x01a5\xACV[\x03\x90\xFD[\x90a6\"\x97\x96\x95\x94\x93\x92\x91a6\x1Da6\x18a6\x11a6\x0C\x84`\x06a34V[a3JV[3\x90ae\x8DV[a5\xC4V[a8cV[V[a68a63a6=\x92a\x03\xB4V[a\x07IV[a\x05TV[\x90V[a6Ta6Oa6Y\x92a\x05TV[a\x07IV[a\x03\xB4V[\x90V[\x91` a6}\x92\x94\x93a6v`@\x82\x01\x96_\x83\x01\x90a\x0C!V[\x01\x90a\x0C!V[V[a6\x8Ea6\x94\x91\x93\x92\x93a\x05TV[\x92a\x05TV[\x82\x03\x91\x82\x11a6\x9FWV[a(\xE4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a6\xC2Wa6\xBE` \x91a\x08\xB9V[\x01\x90V[a\x08\xC3V[\x90\x92\x91\x92a6\xDCa6\xD7\x82a6\xA4V[a\x16\xBCV[\x93\x81\x85R` \x85\x01\x90\x82\x84\x01\x11a6\xF8Wa6\xF6\x92a\x17\x1DV[V[a\x16\xF6V[a7\x08\x916\x91a6\xC7V[\x90V[` \x01\x90V[Q\x90V[\x94\x92\x90\x97\x96\x95\x93\x91`\xE0\x86\x01\x98_\x87\x01a7.\x91a\x0F\x04V[` \x86\x01a7;\x91a\x0C\xBCV[`@\x85\x01a7H\x91a\x0C!V[``\x84\x01a7U\x91a\x0C!V[`\x80\x83\x01a7b\x91a\x11)V[`\xA0\x82\x01a7o\x91a\x0F\x04V[`\xC0\x01a7{\x91a\x0C!V[V[_a\x19\x01`\xF0\x1B\x91\x01RV[a7\x95`\x02\x80\x92a\x1D3V[a7\x9E\x81a7}V[\x01\x90V[\x90V[a7\xB1a7\xB6\x91a\x0F\x01V[a7\xA2V[\x90RV[` \x80\x93\x92a7\xD5a7\xCEa7\xDD\x94a7\x89V[\x80\x92a7\xA5V[\x01\x80\x92a7\xA5V[\x01\x90V[_\x7FInvalid signature\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a8\x15`\x11` \x92a\t\xD5V[a8\x1E\x81a7\xE1V[\x01\x90V[a87\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra8\x08V[\x90V[\x15a8AWV[a8Ia\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80a8_`\x04\x82\x01a8\"V[\x03\x90\xFD[\x91\x92\x93\x94\x97\x96\x90\x95\x97\x80a8\x7Fa8yBa\x05TV[\x91a6$V[\x11a9\xE7Wa8\x97Ba8\x91\x83a6$V[\x90a6\x7FV[a8\xB0a8\xAAa8\xA5a\r\x13V[a6$V[\x91a\x05TV[\x11a9\xBFWa9\xBD\x97\x98a9\x94a9\xB2\x93\x85a9\x1E\x8Aa9\x0F\x8Da9\x9A\x98\x8D\x8Da8\xE6a8\xDBa$\x8BV[\x963\x99\x95\x92\x93a6\xFDV[a8\xF8a8\xF2\x82a7\x11V[\x91a7\x0BV[ \x92\x93a9\x03a\x03\xA2V[\x98\x89\x97` \x89\x01a7\x15V[` \x82\x01\x81\x03\x82R\x03\x82a\x08\xD7V[a90a9*\x82a7\x11V[\x91a7\x0BV[ a9{\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a9la9`a\x03\xA2V[\x93\x84\x92` \x84\x01a7\xBAV[` \x82\x01\x81\x03\x82R\x03\x82a\x08\xD7V[a9\x8Da9\x87\x82a7\x11V[\x91a7\x0BV[ \x92a6\xFDV[\x90ae\xC7V[a9\xACa9\xA63a\x03\xEFV[\x91a\x03\xEFV[\x14a8:V[\x933\x91\x92\x93\x94agFV[V[a9\xC8Ba6@V[\x90a9\xE3_\x92\x83\x92c\x185[u`\xE2\x1B\x84R`\x04\x84\x01a6\\V[\x03\x90\xFD[a9\xF0Ba6@V[\x90a:\x0B_\x92\x83\x92cW\xEA\x02\xE9`\xE0\x1B\x84R`\x04\x84\x01a6\\V[\x03\x90\xFD[\x90a:\x1F\x97\x96\x95\x94\x93\x92\x91a5\xEDV[V[``\x90V[\x90` \x82\x82\x03\x12a:VW_\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a:QWa:N\x92\x01a\x18IV[\x90V[a\x03\xB0V[a\x03\xACV[\x90a:r\x91a:ha:!V[P\x90\x81\x01\x90a:&V[\x90V[a:\x94a:\x8Fa:\x99\x92a:\x87a'\xAEV[P`\x05a34V[a3JV[akXV[\x90V[``\x90V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a:\xB9W` \x80\x91\x02\x01\x90V[a\x08\xC3V[\x90a:\xD0a:\xCB\x83a:\xA1V[a\x16\xBCV[\x91\x82RV[6\x907V[\x90a:\xFFa:\xE7\x83a:\xBEV[\x92` \x80a:\xF5\x86\x93a:\xA1V[\x92\x01\x91\x03\x90a:\xD5V[V[\x90a;\x0B\x82a\x12:V[\x81\x10\x15a;\x1CW` \x80\x91\x02\x01\x01\x90V[a\x07~V[\x90a;+\x90a\x03\xEFV[\x90RV[\x90a;8a:\x9CV[Pa;Ua;Pa;K`\x04\x85\x90a34V[a3JV[akXV[\x91a;_\x83a:\xDAV[\x91a;i_a,\xC2V[[\x80a;}a;w\x87a\x05TV[\x91a\x05TV[\x10\x15a;\xC4Wa;\xBF\x90a;\xBAa;\xA8a;\xA1a;\x9C`\x04\x88\x90a34V[a3JV[\x83\x90ak\xA7V[a;\xB5\x87\x91\x84\x90\x92a;\x01V[a;!V[a,\xDEV[a;jV[P\x92PP\x90V[_\x90V[\x90a;\xD8a;\xCBV[Pa;\xFA`\x01a;\xF4a;\xED`\x03\x86\x90a\x0F\xC8V[\x84\x90a\x10\x12V[\x01a\x10\xA3V[a<\x0Ca<\x06_a\x11YV[\x91a\x11YV[\x14\x91\x82\x15a<\x1AW[PP\x90V[a<;\x92P`\x01\x91a<0a<5\x92`\x03a\x0F\xC8V[a\x10\x12V[\x01a\x10\xA3V[a\x1Aa>\x02\x83a=\xD9V[\x92` \x80a>\x10\x86\x93a=\xBCV[\x92\x01\x91\x03\x90a=\xF0V[V[\x90a>&\x82a\r\x97V[\x81\x10\x15a>7W` \x80\x91\x02\x01\x01\x90V[a\x07~V[\x90V[Q\x90V[\x90a>M\x82a>?V[\x81\x10\x15a>^W` \x80\x91\x02\x01\x01\x90V[a\x07~V[\x90a>m\x90a\x0F\x01V[\x90RV[``\x90V[\x90V[` \x91\x81R\x01\x90V[\x90_\x92\x91\x80T\x90a>\x9Ca>\x95\x83a\x07\xE4V[\x80\x94a>yV[\x91`\x01\x81\x16\x90\x81_\x14a>\xF3WP`\x01\x14a>\xB7W[PPPV[a>\xC4\x91\x92\x93\x94Pa\x07\x9FV[\x91_\x92[\x81\x84\x10a>\xDBWPP\x01\x90_\x80\x80a>\xB2V[`\x01\x81` \x92\x95\x93\x95T\x84\x86\x01R\x01\x91\x01\x92\x90a>\xC8V[\x92\x94\x95PPP`\xFF\x19\x16\x82R\x15\x15` \x02\x01\x90_\x80\x80a>\xB2V[\x90a?\x18\x91a>\x82V[\x90V[\x90a?;a?4\x92a?+a\x03\xA2V[\x93\x84\x80\x92a?\x0EV[\x03\x83a\x08\xD7V[V[a?F\x90a?\x1BV[\x90V[a?S\x90Qa\x0F\x01V[\x90V[a?`\x90Qa\x05TV[\x90V[_\x7FValue out of bounds\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[a?\x97`\x13` \x92a\t\xD5V[a?\xA0\x81a?cV[\x01\x90V[a?\xBCa?\xCA\x92`@\x83\x01\x90\x83\x82\x03_\x85\x01Ra\t\xE9V[\x90` \x81\x83\x03\x91\x01Ra?\x8AV[\x90V[\x92\x91` a?\xE9a?\xF1\x93`@\x87\x01\x90\x87\x82\x03_\x89\x01Ra\t\xE9V[\x94\x01\x90a\x05WV[V[\x90_\x92\x91\x80T\x90a@\ra@\x06\x83a\x07\xE4V[\x80\x94a\t\xD5V[\x91`\x01\x81\x16\x90\x81_\x14a@dWP`\x01\x14a@(W[PPPV[a@5\x91\x92\x93\x94Pa\x08\x17V[\x91_\x92[\x81\x84\x10a@LWPP\x01\x90_\x80\x80a@#V[`\x01\x81` \x92\x95\x93\x95T\x84\x86\x01R\x01\x91\x01\x92\x90a@9V[\x92\x94\x95PPP`\xFF\x19\x16\x82R\x15\x15` \x02\x01\x90_\x80\x80a@#V[_\x7FRequired metric missing\0\0\0\0\0\0\0\0\0\x91\x01RV[a@\xB3`\x17` \x92a\t\xD5V[a@\xBC\x81a@\x7FV[\x01\x90V[a@\xD8a@\xE6\x92`@\x83\x01\x90\x83\x82\x03_\x85\x01Ra?\xF3V[\x90` \x81\x83\x03\x91\x01Ra@\xA6V[\x90V[\x92\x93\x90\x93aA\x113aA\x0BaA\x05aA\x000a=.V[a\x03\xEFV[\x91a\x03\xEFV[\x14a=\x93V[aA%aA `\x08\x86\x90a\x07hV[a.\x93V[\x94aA/\x82a=\xF5V[\x94aA9_a,\xC2V[[\x80aAMaAG\x86a\x05TV[\x91a\x05TV[\x10\x15aA\xA0WaA\x9B\x90aA\x96aAq_aAi\x8A\x85\x90a>\x1CV[Q\x01Qa>CV[a>cV[a,\xDEV[aA:V[P\x91\x94\x90\x92\x95aA\xAF\x81a.\x9FV[aA\xC1aA\xBB_a,\xC2V[\x91a\x05TV[\x11\x96aA\xCBa>qV[\x90\x88aFKW[aA\xDB_a,\xC2V[[\x80aA\xEFaA\xE9\x8Ba\x05TV[\x91a\x05TV[\x10\x15aD\xAEW`\x01_\x8BaB\xE2W[P\x90\x88\x87\x89aB\x14\x94aB\x19W[PPPa,\xDEV[aA\xDCV[\x82_aBWaBOaB`\x94aBJaBB` aB;aBe\x9B\x8D\x90a>\x1CV[Q\x01a?VV[\x97`\ta\x1D\x07V[a\x1D\x1DV[\x92\x87\x90a>\x1CV[Q\x01Q\x90a\x1D\xAEV[a0\x18V[\x88\x87\x89\x90aB\x8F` aB\x88_aB}\x87\x89\x90a>\x1CV[Q\x01Q\x95\x87\x90a>\x1CV[Q\x01a?VV[aB\xC2aB\xBC\x7F#\xED\x02\xBD6\x05\xBD\xEAj\x8A\xFAv\xC4o\0\xD2t\x86\x0B\xA6\xCE\xA9\x80\xF2X[im\xF9\xE1\x82\xBD\x93a\x07LV[\x93a\x10\x06V[\x93aB\xD7aB\xCEa\x03\xA2V[\x92\x83\x92\x83a?\xCDV[\x03\x90\xA3\x88\x87\x89aB\x0CV[\x9A\x90\x95\x92\x91\x99aB\xF1_a,\xC2V[[\x80aC\raC\x07aC\x02\x8Aa.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aD\x98WaC%aC \x8D\x87a>CV[a?IV[aCIaCCaC>aC9\x8A\x86\x90a>CV[a?IV[a\x0F\x01V[\x91a\x0F\x01V[\x14aC\\WaCW\x90a,\xDEV[aB\xF2V[\x8A\x91\x9B\x92\x9CP\x89aB\x14\x94\x95\x98\x8A\x92`\x01\x90\x8AaC\x86` aC\x7F\x89\x8B\x90a>\x1CV[Q\x01a?VV[aC\xAEaC\xA8aC\xA3`\x01aC\x9C\x86\x88\x90a.\xA3V[P\x01a\t>V[a\x05TV[\x91a\x05TV[\x10\x91\x88\x88\x84\x15aDNW[PPPPaC\xE3W[aC\xCD\x90[\x15a\x04\xC2V[aC\xDCW[\x93\x94PPPaA\xFEV[P_aC\xD2V[\x90P\x82\x82_aC\xF3\x87\x89\x90a>\x1CV[Q\x01Q\x91aD?aD-aD'\x7F\xE0\x8FB\x89l\xE3\xAE\xC2\xFF}\xA9Z\x007/3\xCFg~u\xAD`%\x90\x83*\x8D\xFF\xCD\xADc\x15\x93a\x07LV[\x93a\x10\x06V[\x93aD6a\x03\xA2V[\x91\x82\x91\x82a?\xA4V[\x03\x90\xA3aC\xCD_\x91\x90PaC\xC2V[aD\x8E\x93\x94PaD|aD\x88\x93aDv` aDoaD\x83\x96`\x02\x96a>\x1CV[Q\x01a?VV[\x96a.\xA3V[P\x01a\t>V[a\x05TV[\x91a\x05TV[\x11\x8A_\x88\x88aC\xB9V[P\x99\x90\x9A\x87\x89aB\x14\x94\x95\x98aC\xCD\x8D\x94aC\xC7V[P\x97PP\x92\x93P\x93PaD\xC0_a,\xC2V[\x93[\x84aD\xDDaD\xD7aD\xD2\x86a.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aFDWaE\x03aD\xFD`\x03aD\xF6\x86\x89\x90a.\xA3V[P\x01a\teV[\x15a\x04\xC2V[aF9WaE%aE _aE\x19\x86\x89\x90a.\xA3V[P\x01a>vV[a?=V[aE7aE1\x82a7\x11V[\x91a7\x0BV[ \x90_\x96aED_a,\xC2V[[\x80aE`aEZaEU\x86a>?V[a\x05TV[\x91a\x05TV[\x10\x15aF'WaEyaEt\x84\x83\x90a>CV[a?IV[aE\x8BaE\x85\x86a\x0F\x01V[\x91a\x0F\x01V[\x14aE\x9EWaE\x99\x90a,\xDEV[aEEV[P\x95\x90\x96PaE\xBF\x91PaE\xB4`\x01[\x15a\x04\xC2V[aE\xC6W[[a,\xDEV[\x93\x94aD\xC2V[\x82\x85_aE\xD4\x87\x85\x90a.\xA3V[P\x01\x91aF\x1FaF\raF\x07\x7F\xE0\x8FB\x89l\xE3\xAE\xC2\xFF}\xA9Z\x007/3\xCFg~u\xAD`%\x90\x83*\x8D\xFF\xCD\xADc\x15\x93a\x07LV[\x93a\x10\x06V[\x93aF\x16a\x03\xA2V[\x91\x82\x91\x82a@\xC0V[\x03\x90\xA3aE\xB9V[P\x95\x90\x96aE\xBF\x92PaE\xB4\x90aE\xAEV[\x94\x93aE\xBF\x90aE\xBAV[PPPPPV[\x96\x93\x90PaFeaF`\x83\x97\x94\x99\x96\x93a.\x9FV[a=\xF5V[\x97aFo_a,\xC2V[[\x80aF\x8BaF\x85aF\x80\x8Ba.\x9FV[a\x05TV[\x91a\x05TV[\x10\x15aF\xE5WaF\xE0\x90aF\xDBaF\xB6aF\xB1_aF\xAA\x8D\x86\x90a.\xA3V[P\x01a>vV[a?=V[aF\xC8aF\xC2\x82a7\x11V[\x91a7\x0BV[ aF\xD6\x8D\x91\x84\x90\x92a>CV[a>cV[a,\xDEV[aFpV[P\x92\x95\x91\x94\x97\x90\x93\x96aA\xD2V[aF\xFBae?V[aG\x03aG\x05V[V[aG\x16aG\x11_a%\xE9V[al?V[V[aG aF\xF3V[V[aG,`\xA0a\x16\xBCV[\x90V[_\x90V[_\x90V[_\x90V[aGCaG\"V[\x90` \x80\x80\x80\x80\x86aGSaG/V[\x81R\x01aG^a'PV[\x81R\x01aGia'TV[\x81R\x01aGtaG3V[\x81R\x01aG\x7FaG7V[\x81RPPV[aG\x8DaG;V[\x90V[\x90aG\x9A\x90a\x05TV[\x90RV[\x90aG\xA8\x90a\x03\xB4V[\x90RV[\x90aG\xB6\x90a\x04\xAFV[\x90RV[\x90aG\xC4\x90a\x11YV[\x90RV[\x90aHGaH>`\x02aG\xD9aG\"V[\x94aG\xF0aG\xE8_\x83\x01a\t>V[_\x88\x01aG\x90V[aH\x08aG\xFF`\x01\x83\x01a\x10IV[` \x88\x01aG\x9EV[aH aH\x17`\x01\x83\x01a\x10vV[`@\x88\x01aG\xACV[aH8aH/`\x01\x83\x01a\x10\xA3V[``\x88\x01aG\xBAV[\x01a\x10\xC7V[`\x80\x84\x01a>cV[V[aHR\x90aG\xC8V[\x90V[aHz\x91aHpaHu\x92aHhaG\x85V[P`\x03a\x0F\xC8V[a\x10\x12V[aHIV[\x90V[_\x90V[\x90aH\x8B\x90a\x07LV[_R` R`@_ \x90V[\x90aH\xA1\x90a\x10\x06V[_R` R`@_ \x90V[aH\xD2\x91aH\xC8aH\xCD\x92aH\xC0aH}V[P`\x0CaH\x81V[aH\x97V[a\x10IV[\x90V[aH\xDDalUV[aH\xE5a^\xADV[aH\xF7aH\xF1\x83a\x03\xEFV[\x91a\x03\xEFV[\x03aI\x07WaI\x05\x90al?V[V[aI\"\x90_\x91\x82\x91c\x11\x8C\xDA\xA7`\xE0\x1B\x83R`\x04\x83\x01a\x0C\xC9V[\x03\x90\xFD[aIEaI@aIJ\x92aI8a'\xAEV[P`\x04a34V[a3JV[akXV[\x90V[aIW\x90Qa\x04\xAFV[\x90V[aInaIiaIs\x92a%\xCAV[a\x07IV[a\x04\xAFV[\x90V[aI\x80\x90Qa\x03\xB4V[\x90V[aI\x97aI\x92aI\x9C\x92a\x04\xAFV[a\x07IV[a\x05TV[\x90V[aI\xAEaI\xB4\x91\x93\x92\x93a\x05TV[\x92a\x05TV[\x82\x01\x80\x92\x11aI\xBFWV[a(\xE4V[\x90\x92\x91\x92aI\xD0a:\x9CV[PaI\xD9a'\xAEV[PaI\xE3\x82ad'V[\x93aJ\0aI\xFBaI\xF6`\x05\x86\x90a34V[a3JV[akXV[\x92aJ\r` \x87\x01aIMV[aJ\x1FaJ\x19_aIZV[\x91a\x04\xAFV[\x14\x80\x15aK\x11W[\x80\x15aJ\xF6W[aJ\xDCWaJh\x86aJbaJ]` aJVaJQ_aJ\xC5\x9B\x9C\x9D\x01aIvV[a6$V[\x93\x01aIMV[aI\x83V[\x90a(\xF8V[\x91\x80aJ\x83aJ}aJxa\x13-V[a\x05TV[\x91a\x05TV[\x11_\x14aJ\xD7WPaJ\x93a\x13-V[[aJ\x9F\x84\x82\x90aI\x9FV[aJ\xB1aJ\xAB\x88a\x05TV[\x91a\x05TV[\x11_\x14aJ\xC8WP\x84[\x90\x92\x90\x91\x92al\x8BV[\x91V[aJ\xD2\x90\x84aI\x9FV[aJ\xBBV[aJ\x94V[PPP\x91PaJ\xF2aJ\xED_a,\xC2V[a:\xDAV[\x91\x90V[P\x82aK\naK\x04\x86a\x05TV[\x91a\x05TV[\x10\x15aJ.V[P\x83aK%aK\x1F_a,\xC2V[\x91a\x05TV[\x14aJ'V[aK<\x90aK7ae?V[aK>V[V[aKI\x90`\na&\x9AV[V[aKT\x90aK+V[V[_\x90V[aKbaKVV[PaKl_a%\xBDV[\x90V[P\x90V[\x91\x90\x81\x10\x15aK\x83W` \x02\x01\x90V[a\x07~V[5aK\x92\x81a\x03\xFBV[\x90V[_\x80\xFD[`\xE0\x1B\x90V[_\x91\x03\x12aK\xA9WV[a\x03\xACV[\x91` aK\xCF\x92\x94\x93aK\xC8`@\x82\x01\x96_\x83\x01\x90a\x0C!V[\x01\x90a\x0C\xBCV[V[aK\xD9a\x03\xA2V[=_\x82>=\x90\xFD[\x90\x92\x91\x92aK\xEE_a,\xC2V[[\x80aL\x0CaL\x06aL\x01\x85\x89\x90aKoV[a\x05TV[\x91a\x05TV[\x10\x15aL\xBBWaL\x1B0a=.V[\x90c\xBA\x1F\xB1\x03\x84aL6aL1\x86\x8A\x86\x91aKsV[aK\x88V[\x93\x80;\x15aL\xB6WaL[_\x80\x94aLfaLOa\x03\xA2V[\x98\x89\x96\x87\x95\x86\x94aK\x99V[\x84R`\x04\x84\x01aK\xAEV[\x03\x92Z\xF1\x91\x82\x15aL\xB1WaL\x80\x92aL\x85W[Pa,\xDEV[aK\xEFV[aL\xA4\x90_=\x81\x11aL\xAAW[aL\x9C\x81\x83a\x08\xD7V[\x81\x01\x90aK\x9FV[_aLzV[P=aL\x92V[aK\xD1V[aK\x95V[PPP\x90PV[_\x7FNot slashing oracle\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aL\xF6`\x13` \x92a\t\xD5V[aL\xFF\x81aL\xC2V[\x01\x90V[aM\x18\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaL\xE9V[\x90V[\x15aM\"WV[aM*a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aM@`\x04\x82\x01aM\x03V[\x03\x90\xFD[_\x7FOperator unknown\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aMx`\x10` \x92a\t\xD5V[aM\x81\x81aMDV[\x01\x90V[aM\x9A\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaMkV[\x90V[\x15aM\xA4WV[aM\xACa\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aM\xC2`\x04\x82\x01aM\x85V[\x03\x90\xFD[\x90V[\x90aM\xDCg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91a&wV[\x91\x81\x19\x16\x91\x16\x17\x90V[\x90V[\x90aM\xFEaM\xF9aN\x05\x92a\x07LV[aM\xE6V[\x82TaM\xC9V[\x90UV[\x91\x90aN#\x81aN\x1C\x81aN(\x95a\t\xD5V[\x80\x95a\x17\x1DV[a\x08\xB9V[\x01\x90V[\x90\x91aNC\x92` \x83\x01\x92_\x81\x85\x03\x91\x01RaN\tV[\x90V[aNk3aNeaN_aNZ`\na%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14aM\x1BV[aN\x91aN\x8CaN\x85aN\x80`\x05\x85\x90a34V[a3JV[\x84\x90ae\x8DV[aM\x9DV[aN\xBDaN\xB2aN\xADaN\xA6`\x03\x85\x90a\x0F\xC8V[\x85\x90a\x10\x12V[aM\xC6V[`\x01`\x03\x91\x01a4\x0BV[aN\xDBaN\xD4aN\xCF`\x04\x84\x90a34V[a3JV[\x83\x90am\xA7V[PaO\x03aN\xE8Ba6@V[aN\xFEaN\xF7`\x0C\x85\x90aH\x81V[\x85\x90aH\x97V[aM\xE9V[\x90\x91\x92aO9aO3\x7F\x1E)\t\xCFE\xD7\x0C\xF0\x03\xF34\xB7<\x933\x0C\xE7\xE5rx-\xFC\x82\xFA\xB7\x9D\xEB\x88U\xA7\xC7\x91\x93a\x07LV[\x93a\x10\x06V[\x93aONaOEa\x03\xA2V[\x92\x83\x92\x83aN,V[\x03\x90\xA3V[aO]`\x80a\x16\xBCV[\x90V[aOk\x916\x91a\x17(V[\x90V[RV[\x90aO{\x90a\x04\xC2V[\x90RV[Q\x90V[\x90aO\x8D\x81a\t\xD1V[\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11aPMWaO\xB1\x82aO\xAB\x85Ta\x07\xE4V[\x85a.\xCFV[` \x90`\x1F\x83\x11`\x01\x14aO\xE5W\x91\x80\x91aO\xD4\x93_\x92aO\xD9W[PPa*\x07V[\x90U[V[\x90\x91P\x01Q_\x80aO\xCDV[`\x1F\x19\x83\x16\x91aO\xF4\x85a\x08\x17V[\x92_[\x81\x81\x10aP5WP\x91`\x02\x93\x91\x85`\x01\x96\x94\x10aP\x1BW[PPP\x02\x01\x90UaO\xD7V[aP+\x91\x01Q`\x1F\x84\x16\x90a)\xF2V[\x90U_\x80\x80aP\x0FV[\x91\x93` `\x01\x81\x92\x87\x87\x01Q\x81U\x01\x95\x01\x92\x01aO\xF7V[a\x08\xC3V[\x90aP\\\x91aO\x83V[V[aPh\x90Qa\x04\xC2V[\x90V[\x90aP\xC8```\x03aP\xCE\x94aP\x8E_\x82\x01aP\x88_\x88\x01aO\x7FV[\x90aPRV[aP\xA7`\x01\x82\x01aP\xA1` \x88\x01a?VV[\x90a0\x18V[aP\xC0`\x02\x82\x01aP\xBA`@\x88\x01a?VV[\x90a0\x18V[\x01\x92\x01aP^V[\x90a0jV[V[\x91\x90aP\xE1WaP\xDF\x91aPkV[V[a+\xA3V[\x90\x81T\x91h\x01\0\0\0\0\0\0\0\0\x83\x10\x15aQ\x16W\x82aQ\x0E\x91`\x01aQ\x14\x95\x01\x81Ua.\xA3V[\x90aP\xD0V[V[a\x08\xC3V[aR9\x95aR\"\x84\x96aR\x19aR\x11aQ\xFDaQ\xF8aR+\x97aQ\x9EaQ~aQxaR4\x9D\x8D\x9F\x9DaQs3aQmaQgaQbaQ]`\x07\x8C\x90a\x13\xC5V[a%\xBDV[a\x03\xEFV[\x91a\x03\xEFV[\x14a(5V[a-{V[\x90a-~V[aQ\x97aQ\x91aQ\x8Ca\x19!V[a\x05TV[\x91a\x05TV[\x11\x15a-\xDBV[aQ\xBB\x86aQ\xB4aQ\xAE\x8Da\x05TV[\x91a\x05TV[\x10\x15a.jV[aQ\xF1aQ\xD2aQ\xCD`\x08\x84\x90a\x07hV[a\x07\x92V[aQ\xEBaQ\xE5aQ\xE0a\x15mV[a\x05TV[\x91a\x05TV[\x10a(\xBBV[`\x08a\x07hV[a.\x93V[\x98\x99\x96\x92\x94\x96aR\x0BaOSV[\x9AaO`V[_\x8A\x01aOnV[` \x88\x01aG\x90V[`@\x86\x01aG\x90V[``\x84\x01aOqV[aP\xE6V[V[aRi\x90aRdaR_aRXaRS\x84`\x06a34V[a3JV[3\x90ae\x8DV[a5\xC4V[aSJV[V[_\x7FCannot go online while slashed\0\0\x91\x01RV[aR\x9F`\x1E` \x92a\t\xD5V[aR\xA8\x81aRkV[\x01\x90V[aR\xC1\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaR\x92V[\x90V[`@\x1B\x90V[\x90aR\xDEh\xFF\0\0\0\0\0\0\0\0\x91aR\xC4V[\x91\x81\x19\x16\x91\x16\x17\x90V[aR\xFCaR\xF7aS\x01\x92a\x04\xAFV[a\x07IV[a\x04\xAFV[\x90V[\x90V[\x90aS\x1CaS\x17aS#\x92aR\xE8V[aS\x04V[\x82TaR\xCAV[\x90UV[\x91` aSH\x92\x94\x93aSA`@\x82\x01\x96_\x83\x01\x90a\x11qV[\x01\x90a\x11qV[V[aShaScaS\\`\x03\x84\x90a\x0F\xC8V[3\x90a\x10\x12V[aM\xC6V[\x90aSu`\x01\x83\x01a\x10\xA3V[\x91\x82aS\x8AaS\x84`\x03a\x11YV[\x91a\x11YV[\x14aT\xAEW\x82aS\xA2aS\x9C_a\x11YV[\x91a\x11YV[\x14\x80\x15aT\x93W[aT\x8EWaS\xD1\x90aS\xBF`\x01\x80\x83\x01a4\x0BV[`\x01aS\xCA_aIZV[\x91\x01aS\x07V[aS\xEFaS\xE8aS\xE3`\x04\x84\x90a34V[a3JV[3\x90ae\x05V[P\x803aT%aT\x1F\x7F\xC9\x86,_\x02\xEE\xFB\xDC\xEA\x01\xC2\x07\xAES\x8E\x1D0M\xC90&\x87\x0FH\x95\x1EH\xA0\xF4\xC8G\x0C\x93a\x07LV[\x91a\x10\x06V[\x91aT.a\x03\xA2V[\x80aT8\x81a\x04KV[\x03\x90\xA3\x903\x90\x91`\x01aTtaTn\x7F\"\x88$\xB8l%di\x12_R\\\xE1\x8Cl-\n\x9E\x13=\x13\xB8\xECz,\x96\xA1\x93\xB0\xC2\x8A\t\x93a\x07LV[\x93a\x10\x06V[\x93aT\x89aT\x80a\x03\xA2V[\x92\x83\x92\x83aS'V[\x03\x90\xA3V[PPPV[P\x82aT\xA8aT\xA2`\x01a\x11YV[\x91a\x11YV[\x14aS\xAAV[aT\xB6a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aT\xCC`\x04\x82\x01aR\xACV[\x03\x90\xFD[aT\xD9\x90aR;V[V[_\x7FNot authorized\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aU\x0F`\x0E` \x92a\t\xD5V[aU\x18\x81aT\xDBV[\x01\x90V[aU1\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaU\x02V[\x90V[\x15aU;WV[aUCa\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aUY`\x04\x82\x01aU\x1CV[\x03\x90\xFD[\x90V[aUtaUoaUy\x92aU]V[a\x07IV[a\x03\xB4V[\x90V[_\x7FInterval too short\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[aU\xB0`\x12` \x92a\t\xD5V[aU\xB9\x81aU|V[\x01\x90V[aU\xD2\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaU\xA3V[\x90V[\x15aU\xDCWV[aU\xE4a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aU\xFA`\x04\x82\x01aU\xBDV[\x03\x90\xFD[\x90V[aV\x15aV\x10aV\x1A\x92aU\xFEV[a\x07IV[a\x04\xAFV[\x90V[_\x7FMax missed must be >= 1\0\0\0\0\0\0\0\0\0\x91\x01RV[aVQ`\x17` \x92a\t\xD5V[aVZ\x81aV\x1DV[\x01\x90V[aVs\x90` \x81\x01\x90_\x81\x83\x03\x91\x01RaVDV[\x90V[\x15aV}WV[aV\x85a\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80aV\x9B`\x04\x82\x01aV^V[\x03\x90\xFD[aV\xA9``a\x16\xBCV[\x90V[\x90aV\xC1aV\xBCaV\xC8\x92a0[V[a0gV[\x82Ta3\xDDV[\x90UV[\x90aW\x0E`@_aW\x14\x94aV\xEE\x82\x82\x01aV\xE8\x84\x88\x01aIvV[\x90aM\xE9V[aW\x06\x82\x82\x01aW\0` \x88\x01aIMV[\x90aS\x07V[\x01\x92\x01aP^V[\x90aV\xACV[V[\x90aW \x91aV\xCCV[V[\x91` aWC\x92\x94\x93aW<`@\x82\x01\x96_\x83\x01\x90a\x0C!V[\x01\x90a\x11)V[V[3aWxaWr\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x03\xEFV[\x91a\x03\xEFV[\x14\x80\x15aXdW[aW\x89\x90aU4V[aW\xA7\x82aW\xA0aW\x9A`V[aYmaYg_a,\xC2V[\x91a\x05TV[\x14a[YWaY\xA3aY\x8ABaY\x84_\x87\x01a\t>V[\x90a6\x7FV[aY\x9DaY\x98_\x85\x01aIvV[a6$V[\x90aX\xAAV[\x80aY\xB7aY\xB1`\xFFaI\x83V[\x91a\x05TV[\x11_\x14a[KWP`\xFF[\x90\x81aY\xE1aY\xDBaY\xD6`\x01\x88\x01a\x10vV[a\x04\xAFV[\x91a\x04\xAFV[\x11aY\xEEW[PPPPPV[aY\xFB\x82`\x01\x86\x01aS\x07V[aZ\x10aZ\x07_aX\xE8V[`\x01\x86\x01aM\xE9V[aZ.aZ(aZ#` \x85\x94\x01aIMV[a\x04\xAFV[\x91a\x04\xAFV[\x10\x15\x80a[$W[aZAW[\x80aY\xE7V[aZ\\aZP`\x01\x85\x01a\x10\xA3V[\x93`\x01`\x02\x91\x01a4\x0BV[aZzaZsaZn`\x04\x85\x90a34V[a3JV[\x85\x90am\xA7V[P\x81\x90\x84\x90\x91aZ\xC8aZ\xB6aZ\xB0\x7FD\xFD2\xB6wpL\xE6\x8Ewc\x89|Is;\x8FR\x89\x01\x8A\xC6\n\\\x92h\x02\xD67Y\xDBM\x93a\x07LV[\x93a\x10\x06V[\x93aZ\xBFa\x03\xA2V[\x91\x82\x91\x82a\x16'V[\x03\x90\xA3\x91\x90\x91`\x02a[\x03aZ\xFD\x7F\"\x88$\xB8l%di\x12_R\\\xE1\x8Cl-\n\x9E\x13=\x13\xB8\xECz,\x96\xA1\x93\xB0\xC2\x8A\t\x93a\x07LV[\x93a\x10\x06V[\x93a[\x18a[\x0Fa\x03\xA2V[\x92\x83\x92\x83aS'V[\x03\x90\xA3_\x80\x80\x80aZ;V[Pa[1`\x01\x84\x01a\x10\xA3V[a[Da[>`\x02a\x11YV[\x91a\x11YV[\x14\x15aZ6V[a[T\x90aX\xCCV[aY\xC2V[PPPPV[PPPPV[``\x90V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a[\x82W` \x80\x91\x02\x01\x90V[a\x08\xC3V[\x90a[\x99a[\x94\x83a[jV[a\x16\xBCV[\x91\x82RV[a[\xA8`\x80a\x16\xBCV[\x90V[\x90a\\\x12a\\\t`\x03a[\xBCa[\x9EV[\x94a[\xD3a[\xCB_\x83\x01a\t\0V[_\x88\x01aOnV[a[\xEBa[\xE2`\x01\x83\x01a\t>V[` \x88\x01aG\x90V[a\\\x03a[\xFA`\x02\x83\x01a\t>V[`@\x88\x01aG\x90V[\x01a\teV[``\x84\x01aOqV[V[a\\\x1D\x90a[\xABV[\x90V[\x90a\\*\x82a\x07\x92V[a\\3\x81a[\x87V[\x92a\\A` \x85\x01\x91a\x07\x96V[_\x91[\x83\x83\x10a\\QWPPPPV[`\x04` `\x01\x92a\\a\x85a\\\x14V[\x81R\x01\x92\x01\x92\x01\x91\x90a\\DV[a\\x\x90a\\ V[\x90V[a\\\x92a\\\x97\x91a\\\x8Aa[eV[P`\x08a\x07hV[a\\oV[\x90V[a\\\xC8\x90a\\\xC3a\\\xBEa\\\xB7a\\\xB2\x84`\x06a34V[a3JV[3\x90ae\x8DV[a5\xC4V[a]#V[V[_\x7FCannot go offline while slashed\0\x91\x01RV[a\\\xFE`\x1F` \x92a\t\xD5V[a]\x07\x81a\\\xCAV[\x01\x90V[a] \x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra\\\xF1V[\x90V[a]Aa]V[\x90V[a^\xB5aKVV[Pa^\xC0`\x01a%\xBDV[\x90V[a^\xCD\x90Qa\x11YV[\x90V[\x90V[a^\xE7a^\xE2a^\xEC\x92a^\xD0V[a\x07IV[a\x05TV[\x90V[` \x7Fl\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x7FOperator not eligible for remova_\x82\x01R\x01RV[a_I`!`@\x92a\t\xD5V[a_R\x81a^\xEFV[\x01\x90V[a_k\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Ra_adC\x91ad6a'\x8EV[P`\x02a\"\x87V[ad\x1BV[adN_\x82\x01aIvV[ad`adZ_aX\xE8V[\x91a\x03\xB4V[\x14ad\xA6W[adr` \x82\x01aIMV[ad\x84ad~_aIZV[\x91a\x04\xAFV[\x14ad\x8DW[\x90V[ad\xA1ad\x98a\x16\x0FV[` \x83\x01aG\xACV[ad\x8AV[ad\xB9ad\xB1a\x0C\x08V[_\x83\x01aG\x9EV[adfV[ad\xC7\x90a\x0F\xDEV[\x90V[ad\xDEad\xD9ad\xE3\x92a\x03\xE4V[a\x07IV[a\x05TV[\x90V[ad\xFAad\xF5ad\xFF\x92a\x05TV[a&wV[a\x0F\x01V[\x90V[\x90V[\x90ae7ae1ae,ae'_ae<\x96ae\x1Fa;\xCBV[P\x01\x94ad\xBEV[ad\xCAV[ad\xE6V[\x91ae\x02V[anhV[\x90V[aeGaKZV[ae`aeZaeUalUV[a\x03\xEFV[\x91a\x03\xEFV[\x03aegWV[ae\x89aeralUV[_\x91\x82\x91c\x11\x8C\xDA\xA7`\xE0\x1B\x83R`\x04\x83\x01a\x0C\xC9V[\x03\x90\xFD[\x90ae\xBFae\xB9ae\xB4ae\xAF_ae\xC4\x96ae\xA7a;\xCBV[P\x01\x94ad\xBEV[ad\xCAV[ad\xE6V[\x91ae\x02V[an\xCBV[\x90V[ae\xE6\x91ae\xDD\x91ae\xD7aKVV[Pao'V[\x90\x92\x91\x92ao\xE7V[\x90V[_\x7FOperator is slashed\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x01RV[af\x1D`\x13` \x92a\t\xD5V[af&\x81ae\xE9V[\x01\x90V[af?\x90` \x81\x01\x90_\x81\x83\x03\x91\x01Raf\x10V[\x90V[\x15afIWV[afQa\x03\xA2V[bF\x1B\xCD`\xE5\x1B\x81R\x80afg`\x04\x82\x01af*V[\x03\x90\xFD[\x90af\x80af{af\x87\x92a3MV[a3YV[\x82Ta0\x02V[\x90UV[af\x94\x90a\x03\xB4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14af\xA9W`\x01\x01\x90V[a(\xE4V[\x90V[af\xC5af\xC0af\xCA\x92af\xAEV[a\x07IV[a\x04\xAFV[\x90V[\x91` af\xEE\x92\x94\x93af\xE7`@\x82\x01\x96_\x83\x01\x90a\x11)V[\x01\x90a\x05WV[V[af\xF9\x90a\x0F\xDEV[\x90V[ag\x05\x90af\xF0V[\x90V[ag\x11\x90a\x0F\xFAV[\x90V[`@\x90ag=agD\x94\x96\x95\x93\x96ag3``\x84\x01\x98_\x85\x01\x90a\x0C\xBCV[` \x83\x01\x90a\x0C!V[\x01\x90a\x0C!V[V[\x94\x92\x93\x91\x93agiagdag]`\x03\x89\x90a\x0F\xC8V[\x87\x90a\x10\x12V[aM\xC6V[\x93ags\x87ad'V[\x93ag\x9Dag\x83`\x01\x88\x01a\x10\xA3V[ag\x96ag\x90`\x03a\x11YV[\x91a\x11YV[\x14\x15afBV[ag\xBBag\xB4ag\xAF`\x05\x8B\x90a34V[a3JV[\x88\x90ae\x05V[Pah\x90`@ag\xCD`\x01\x89\x01a\x10\xA3V[\x96ag\xDAB_\x8B\x01a0\x18V[ah\x04ag\xE8\x85\x87\x90a6\xFDV[ag\xFAag\xF4\x82a7\x11V[\x91a7\x0BV[ `\x02\x8B\x01afkV[ah\x19ah\x10_aIZV[`\x01\x8B\x01aS\x07V[ah7`\x01\x8A\x01ah1ah,\x82a\x10IV[af\x8BV[\x90aM\xE9V[ah?a<\xFFV[P\x85ahSahM_aIZV[\x91a\x04\xAFV[\x14_\x14ak\x14Wahj_\x99[`\x01\x8B\x91\x01a4\x0BV[\x87ah~ahx`\x02a\x11YV[\x91a\x11YV[\x14\x80aj\xF8W[aj\x8AW[\x01aP^V[\x80ajfW[ajPW[PP\x85\x91\x85\x91\x92Bah\xDFah\xD9ah\xD3\x7Fe\x89\x18\xE3\x14\x7F\x13\xDD\x06\x8E\xC2\x147\xB4\xC2\\!h*\x8D\xC2\x12\x93Hg\x1E\xAD\0\r\xB3\xE7\xB9\x94a\x07LV[\x94a\x07LV[\x94a\x10\x06V[\x94ah\xF4ah\xEBa\x03\xA2V[\x92\x83\x92\x83af\xCDV[\x03\x90\xA4\x80ai\nai\x04\x84a\x11YV[\x91a\x11YV[\x03ai\xFAW[PPai\x1C`\x0Ba%\xBDV[ai6ai0ai+_a%\xE9V[a\x03\xEFV[\x91a\x03\xEFV[\x03ai@W[PPV[aiZaiUaiP`\x0Ba%\xBDV[af\xFCV[ag\x08V[\x91c\xD4xS\xB6\x91\x90\x92ailBa6@V[\x92\x81;\x15ai\xF5W_ai\x92\x91ai\x9D\x82\x96ai\x86a\x03\xA2V[\x98\x89\x97\x88\x96\x87\x95aK\x99V[\x85R`\x04\x85\x01ag\x14V[\x03\x92Z\xF1\x90\x81ai\xC9W[P\x15_\x14ai\xC4W`\x01ai\xBFW[[_\x80aiV[an\xFBan\xF5_a,\xC2V[\x91a\x05TV[\x14\x15\x90V[_\x90V[\x90V[ao\x1Bao\x16ao \x92ao\x04V[a\x07IV[a\x05TV[\x90V[_\x90V[\x91\x90\x91ao2aKVV[Pao;ao\0V[PaoDa3\x87V[PaoN\x83a7\x11V[aoaao[`Aao\x07V[\x91a\x05TV[\x14_\x14ao\xA8Wao\xA1\x91\x92aoua3\x87V[Pao~a3\x87V[Pao\x87ao#V[P` \x81\x01Q```@\x83\x01Q\x92\x01Q_\x1A\x90\x91\x92az\x07V[\x91\x92\x90\x91\x90V[Pao\xB2_a%\xE9V[\x90ao\xC6ao\xC1`\x02\x94a7\x11V[ad\xE6V[\x91\x92\x91\x90V[`\x04\x11\x15ao\xD6WV[a\x116V[\x90ao\xE5\x82ao\xCCV[V[\x80ao\xFAao\xF4_ao\xDBV[\x91ao\xDBV[\x14_\x14ap\x05WPPV[\x80ap\x19ap\x13`\x01ao\xDBV[\x91ao\xDBV[\x14_\x14apavG\x81\x83a\x08\xD7V[\x81\x01\x90as\xD9V[\x90_au8V[PPPPV[PPPPV[_avv\x91avoa'\xAEV[P\x01anNV[\x90V[_R` _ \x90V[av\x8B\x81anNV[\x82\x10\x15av\xA5Wav\x9D`\x01\x91avyV[\x91\x02\x01\x90_\x90V[a\x07~V[av\xBA\x90`\x08av\xBF\x93\x02a\x0CxV[a\x10\xB0V[\x90V[\x90av\xCD\x91Tav\xAAV[\x90V[av\xEE\x91_av\xE8\x92av\xE1a3\x87V[P\x01av\x82V[\x90av\xC2V[\x90V[av\xFA_a%\xBDV[aw\x04\x82_a&\x9AV[\x90aw8aw2\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x93a\x10\x06V[\x91a\x10\x06V[\x91awAa\x03\xA2V[\x80awK\x81a\x04KV[\x03\x90\xA3V[awXa;\xCBV[Paw\x80awzawsawn`\x06\x85\x90a34V[a3JV[\x84\x90ae\x8DV[\x15a\x04\xC2V[ax\"Waw\xA0\x91aw\x96aw\x9B\x92`\x03a\x0F\xC8V[a\x10\x12V[aHIV[aw\xAB_\x82\x01a?VV[aw\xBDaw\xB7_a,\xC2V[\x91a\x05TV[\x14\x80\x15aw\xFCW[aw\xF6Waw\xEBaw\xE5aw\xF1\x92aw\xDF_B\x92\x01a?VV[\x90a6\x7FV[\x92a\x05TV[\x91a\x05TV[\x10\x15\x90V[PP_\x90V[Pax\t``\x82\x01a^\xC3V[ax\x1Cax\x16`\x03a\x11YV[\x91a\x11YV[\x14aw\xC5V[PPP_\x90V[ax=ax8axB\x92aU\xFEV[a\x07IV[a\x05TV[\x90V[cNH{q`\xE0\x1B_R`1`\x04R`$_\xFD[axb\x81am\xEDV[\x80\x15ax\x83W`\x01\x90\x03\x90ax\x80axz\x83\x83am\xF1V[\x90a3\x8BV[UV[axEV[ax\x90a;\xCBV[Pax\xA7ax\xA2`\x01\x83\x01\x84\x90anRV[a\t>V[\x90\x81ax\xBBax\xB5_a,\xC2V[\x91a\x05TV[\x14\x15_\x14ay\x87Way9\x92`\x01ay4\x92\x84ax\xE2_\x96ax\xDC\x85ax)V[\x90a6\x7FV[ax\xFFax\xF0\x88\x85\x01anNV[ax\xF9\x86ax)V[\x90a6\x7FV[\x81ay\x12ay\x0C\x83a\x05TV[\x91a\x05TV[\x03ay>W[PPPay.ay)\x86\x83\x01am\xE1V[axYV[\x01anRV[a)\xBFV[`\x01\x90V[ay\x7F\x92ayqay]ayWayz\x94\x8C\x89\x01av\x82V[\x90av\xC2V[\x93ayk\x85\x91\x8C\x89\x01av\x82V[\x90a3eV[\x91\x85\x85\x01anRV[a0\x18V[_\x80\x80ay\x18V[PPP_\x90V[\x90V[ay\xA5ay\xA0ay\xAA\x92ay\x8EV[a\x07IV[a\x05TV[\x90V[ay\xE2ay\xE9\x94ay\xD8``\x94\x98\x97\x95ay\xCE`\x80\x86\x01\x9A_\x87\x01\x90a\x0F\x04V[` \x85\x01\x90a\x11)V[`@\x83\x01\x90a\x0F\x04V[\x01\x90a\x0F\x04V[V[ay\xFFay\xFAaz\x04\x92a%\xCAV[a&wV[a\x0F\x01V[\x90V[\x93\x92\x93az\x12aKVV[Paz\x1Bao\0V[Paz$a3\x87V[Paz.\x85akwV[az`azZ\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0ay\x91V[\x91a\x05TV[\x11az\xEDW\x90az\x83` \x94\x95_\x94\x93\x92\x93azza\x03\xA2V[\x94\x85\x94\x85ay\xADV[\x83\x80R\x03\x90`\x01Z\xFA\x15az\xE8Waz\x9B_Qa&wV[\x80az\xB6az\xB0az\xAB_a%\xE9V[a\x03\xEFV[\x91a\x03\xEFV[\x14az\xCCW_\x91az\xC6_ay\xEBV[\x91\x92\x91\x90V[Paz\xD6_a%\xE9V[`\x01\x91az\xE2_ay\xEBV[\x91\x92\x91\x90V[aK\xD1V[PPPaz\xF9_a%\xE9V[\x90`\x03\x92\x91\x92\x91\x90V\xFE\xA1dsolcC\0\x08\x1A\0\n", ); #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] diff --git a/fixtures/Cargo.toml b/fixtures/Cargo.toml index a3f9ac5c..5b078783 100644 --- a/fixtures/Cargo.toml +++ b/fixtures/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tnt-core-fixtures" -version = "0.11.2" +version = "0.12.0" edition = "2021" rust-version = "1.81" description = "Local testnet fixture data for TNT Core" diff --git a/indexer/config.yaml b/indexer/config.yaml index e8f51c24..3a54d558 100644 --- a/indexer/config.yaml +++ b/indexer/config.yaml @@ -53,7 +53,7 @@ networks: - event: ServiceRequestedWithSecurity(uint64 indexed requestId, uint64 indexed blueprintId, address indexed requester, uint8 confidentiality) - event: ServiceTerminated(uint64 indexed serviceId) - event: SlashCancelled(uint64 indexed slashId, address indexed canceller, string reason) - - event: SlashConfigUpdated(uint64 disputeWindow, bool instantSlashEnabled, uint16 maxSlashBps) + - event: SlashConfigUpdated(uint64 disputeWindow, bool instantSlashEnabled, uint16 maxSlashBps, uint64 disputeResolutionDeadline, uint256 disputeBond, uint16 maxPendingSlashesPerOperator) - event: SlashDisputed(uint64 indexed slashId, address indexed disputer, string reason) - event: SlashExecuted(uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, uint256 actualSlashed) - event: SlashProposed(uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, address proposer, uint16 slashBps, uint16 effectiveSlashBps, bytes32 evidence, uint64 executeAfter) diff --git a/indexer/schema.graphql b/indexer/schema.graphql index 6c9745d2..145cf213 100644 --- a/indexer/schema.graphql +++ b/indexer/schema.graphql @@ -437,6 +437,9 @@ type SlashConfig { disputeWindow: BigInt! instantSlashEnabled: Boolean! maxSlashBps: BigInt! + disputeResolutionDeadline: BigInt! + disputeBond: BigInt! + maxPendingSlashesPerOperator: BigInt! updatedAt: BigInt! } diff --git a/indexer/src/handlers/tangle.ts b/indexer/src/handlers/tangle.ts index 06900032..f473e4f5 100644 --- a/indexer/src/handlers/tangle.ts +++ b/indexer/src/handlers/tangle.ts @@ -246,6 +246,9 @@ export function registerTangleHandlers() { disputeWindow: toBigInt(event.params.disputeWindow), instantSlashEnabled: Boolean(event.params.instantSlashEnabled), maxSlashBps: toBigInt(event.params.maxSlashBps), + disputeResolutionDeadline: toBigInt(event.params.disputeResolutionDeadline), + disputeBond: toBigInt(event.params.disputeBond), + maxPendingSlashesPerOperator: toBigInt(event.params.maxPendingSlashesPerOperator), updatedAt: timestamp, } as SlashConfig); }); diff --git a/indexer/src/lib/handlerUtils.ts b/indexer/src/lib/handlerUtils.ts index 554ac141..654a3411 100644 --- a/indexer/src/lib/handlerUtils.ts +++ b/indexer/src/lib/handlerUtils.ts @@ -120,6 +120,9 @@ export const ensureSlashConfig = async ( disputeWindow: 0n, instantSlashEnabled: false, maxSlashBps: 0n, + disputeResolutionDeadline: 0n, + disputeBond: 0n, + maxPendingSlashesPerOperator: 0n, updatedAt: timestamp, } as SlashConfig; context.SlashConfig.set(config); diff --git a/src/core/Payments.sol b/src/core/Payments.sol index e10d154e..5ed87112 100644 --- a/src/core/Payments.sol +++ b/src/core/Payments.sol @@ -63,7 +63,7 @@ abstract contract Payments is Base, PaymentsEffectiveExposure { /// whitelists the escrow's payment token. Without these checks a service could /// be funded after expiry (escrow stuck) or after a manager policy revoke /// (ongoing top-ups for a token the protocol now disallows). - function fundService(uint64 serviceId, uint256 amount) external payable nonReentrant { + function fundService(uint64 serviceId, uint256 amount) external payable whenNotPaused nonReentrant { Types.Service storage svc = _getService(serviceId); if (svc.status != Types.ServiceStatus.Active) { revert Errors.ServiceNotActive(serviceId); @@ -113,7 +113,7 @@ abstract contract Payments is Base, PaymentsEffectiveExposure { /// @notice Bill a subscription service /// @dev Anyone can call this to trigger billing; no incentive for single billing - function billSubscription(uint64 serviceId) external nonReentrant { + function billSubscription(uint64 serviceId) external whenNotPaused nonReentrant { _billSubscriptionInternal(serviceId); } @@ -124,6 +124,7 @@ abstract contract Payments is Base, PaymentsEffectiveExposure { /// @return billedCount Number of services successfully billed function billSubscriptionBatch(uint64[] calldata serviceIds) external + whenNotPaused nonReentrant returns (uint256 totalBilled, uint256 billedCount) { @@ -421,6 +422,13 @@ abstract contract Payments is Base, PaymentsEffectiveExposure { if (amount == 0) return; uint256 operatorsLength = operators.length; + // Refuse to distribute when no operators are running the service: dev and + // treasury were getting paid while the operator+staker pool (default 60%) + // was retained by the contract with no path back. Service owners recover + // escrow via terminate -> withdrawRemainingEscrow once operators leave. + if (operatorsLength == 0) { + revert Errors.NoOperators(); + } // M-5 FIX: Validate payment amount is sufficient to prevent rounding to zero PaymentLib.validatePaymentAmount(amount, _paymentSplit, operatorsLength); diff --git a/src/core/ServicesApprovals.sol b/src/core/ServicesApprovals.sol index 784c0ed6..1839b689 100644 --- a/src/core/ServicesApprovals.sol +++ b/src/core/ServicesApprovals.sol @@ -87,6 +87,11 @@ abstract contract ServicesApprovals is Base { /// SSTORE path off the critical path for unauthorized callers. function approveService(Types.ApprovalParams calldata p) external whenNotPaused nonReentrant { _requireApprovingOperator(p.requestId); + // Reject late approvals after the request has crossed its expiry grace. + // Without this, an operator can race `expireServiceRequest` and quietly + // activate a stale request the requester thought they could clean up. + // Mirrors the symmetric check that `rejectService` already performs. + _requireRequestNotExpired(_getServiceRequest(p.requestId), p.requestId); // Pure validation — reverts before any SSTORE if anything is malformed. Types.AssetSecurityRequirement[] storage requirements = _requestSecurityRequirements[p.requestId]; diff --git a/src/core/ServicesLifecycle.sol b/src/core/ServicesLifecycle.sol index f8b15651..4d5a95ea 100644 --- a/src/core/ServicesLifecycle.sol +++ b/src/core/ServicesLifecycle.sol @@ -48,7 +48,7 @@ abstract contract ServicesLifecycle is Base { // ═══════════════════════════════════════════════════════════════════════════ /// @notice Terminate a service - function terminateService(uint64 serviceId) external { + function terminateService(uint64 serviceId) external nonReentrant { Types.Service storage svc = _getService(serviceId); if (svc.owner != msg.sender) { revert Errors.NotServiceOwner(serviceId, msg.sender); @@ -60,7 +60,7 @@ abstract contract ServicesLifecycle is Base { /// @notice Permissionlessly terminate an unpaid subscription after grace period /// @dev Eligibility: service is active subscription, escrow cannot cover one period, /// and manager-resolved grace windows have elapsed past the billing due time. - function terminateServiceForNonPayment(uint64 serviceId) external { + function terminateServiceForNonPayment(uint64 serviceId) external nonReentrant { Types.Service storage svc = _getService(serviceId); if (svc.status != Types.ServiceStatus.Active) { revert Errors.ServiceNotActive(serviceId); @@ -227,6 +227,9 @@ abstract contract ServicesLifecycle is Base { /// @dev Operator must wait for exit queue duration before executing function scheduleExit(uint64 serviceId) external nonReentrant { Types.Service storage svc = _getService(serviceId); + if (svc.status != Types.ServiceStatus.Active) { + revert Errors.ServiceNotActive(serviceId); + } if (svc.membership != Types.MembershipModel.Dynamic) { revert Errors.InvalidState(); } @@ -315,6 +318,9 @@ abstract contract ServicesLifecycle is Base { /// @dev Requires forceExitAllowed in exit config function forceExit(uint64 serviceId, address operator) external nonReentrant { Types.Service storage svc = _getService(serviceId); + if (svc.status != Types.ServiceStatus.Active) { + revert Errors.ServiceNotActive(serviceId); + } if (svc.owner != msg.sender) { revert Errors.NotServiceOwner(serviceId, msg.sender); } @@ -341,6 +347,9 @@ abstract contract ServicesLifecycle is Base { /// @dev For backwards compatibility. Will fail if exit queue duration > 0 function leaveService(uint64 serviceId) external nonReentrant { Types.Service storage svc = _getService(serviceId); + if (svc.status != Types.ServiceStatus.Active) { + revert Errors.ServiceNotActive(serviceId); + } if (svc.membership != Types.MembershipModel.Dynamic) { revert Errors.InvalidState(); } @@ -371,6 +380,13 @@ abstract contract ServicesLifecycle is Base { /// @notice Internal function to execute operator leave function _executeLeave(uint64 serviceId, address operator) internal { Types.Service storage svc = _getService(serviceId); + // Cover the executeExit -> _executeLeave path so leaving a Terminated service + // can't double-decrement counts, double-emit OperatorLeftService, or fire + // onOperatorLeft for a dead service. The other entrypoints already gate on + // status before calling here; this is the catch-all. + if (svc.status != Types.ServiceStatus.Active) { + revert Errors.ServiceNotActive(serviceId); + } if (svc.operatorCount <= svc.minOperators) { revert Errors.InvalidState(); @@ -402,6 +418,9 @@ abstract contract ServicesLifecycle is Base { /// @param operator The operator to remove function forceRemoveOperator(uint64 serviceId, address operator) external nonReentrant { Types.Service storage svc = _getService(serviceId); + if (svc.status != Types.ServiceStatus.Active) { + revert Errors.ServiceNotActive(serviceId); + } Types.Blueprint storage bp = _blueprints[svc.blueprintId]; // Only blueprint manager can force remove diff --git a/src/core/ServicesRequests.sol b/src/core/ServicesRequests.sol index 35b2db61..3aaf0073 100644 --- a/src/core/ServicesRequests.sol +++ b/src/core/ServicesRequests.sol @@ -252,7 +252,8 @@ abstract contract ServicesRequests is Base { private view { - for (uint256 i = 0; i < operators.length; i++) { + uint256 len = operators.length; + for (uint256 i = 0; i < len; i++) { if (_operatorRegistrations[blueprintId][operators[i]].registeredAt == 0) { revert Errors.OperatorNotRegistered(blueprintId, operators[i]); } @@ -262,6 +263,16 @@ abstract contract ServicesRequests is Base { if (exposures[i] > BPS_DENOMINATOR) { revert Errors.InvalidState(); } + // Reject duplicate operator entries: with duplicates, `req.operatorCount` + // exceeds the unique approver count, so `approvalCount == operatorCount` + // is unreachable and the request can only be cleaned up via + // `expireServiceRequest`. Operator counts are bounded by + // `bpConfig.maxOperators`, so the O(N²) check is fine in practice. + for (uint256 j = i + 1; j < len; j++) { + if (operators[i] == operators[j]) { + revert Errors.InvalidState(); + } + } } } diff --git a/src/core/Slashing.sol b/src/core/Slashing.sol index 7df1966f..2079646c 100644 --- a/src/core/Slashing.sol +++ b/src/core/Slashing.sol @@ -34,12 +34,19 @@ abstract contract Slashing is Base { bytes32 evidence ) external + nonReentrant returns (uint64 slashId) { // M-6 FIX: Validate slashBps does not exceed 100% (10000 bps) if (slashBps > BPS_DENOMINATOR) { revert Errors.SlashBpsExceedsMax(slashBps, BPS_DENOMINATOR); } + // Reject zero evidence: the field is the off-chain identifier (e.g. an IPFS + // CID hash) that monitors index by, and a 0x00…00 entry is indistinguishable + // from "missing." Operators should always supply a real reference. + if (evidence == bytes32(0)) { + revert Errors.InvalidState(); + } Types.Service storage svc = _getService(serviceId); Types.Blueprint storage bp = _blueprints[svc.blueprintId]; @@ -207,7 +214,7 @@ abstract contract Slashing is Base { /// The slashed operator must post `_slashState.config.disputeBond` in native /// asset. Bond is forfeit to treasury if the dispute auto-fails or the slash /// executes; refunded if SLASH_ADMIN cancels the slash. - function disputeSlash(uint64 slashId, string calldata reason) external payable { + function disputeSlash(uint64 slashId, string calldata reason) external payable nonReentrant { SlashingLib.SlashProposal storage proposal = _slashProposals[slashId]; bool isAdmin = hasRole(SLASH_ADMIN_ROLE, msg.sender); diff --git a/src/exposure/ExposureCalculator.sol b/src/exposure/ExposureCalculator.sol deleted file mode 100644 index f6beeb86..00000000 --- a/src/exposure/ExposureCalculator.sol +++ /dev/null @@ -1,278 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.26; - -import { Types } from "../libraries/Types.sol"; -import { ExposureTypes } from "./ExposureTypes.sol"; -import { IPriceOracle } from "../oracles/interfaces/IPriceOracle.sol"; - -/// @title ExposureCalculator -/// @notice Library for calculating operator exposure across multiple assets -/// @dev Provides both percentage-based (native) and USD-denominated calculations -library ExposureCalculator { - // ═══════════════════════════════════════════════════════════════════════════ - // EXPOSURE CALCULATION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Calculate exposed amount from delegation and exposure percentage - /// @param delegatedAmount Total delegation to operator for an asset - /// @param exposureBps Exposure percentage in basis points (0-10000) - /// @return exposedAmount Amount exposed based on percentage - function calculateExposedAmount( - uint256 delegatedAmount, - uint16 exposureBps - ) - internal - pure - returns (uint256 exposedAmount) - { - return (delegatedAmount * exposureBps) / ExposureTypes.BPS_DENOMINATOR; - } - - /// @notice Calculate the weighted average exposure across multiple assets - /// @dev Uses delegation amounts as weights (in native units, not USD) - /// @param delegations Array of delegation amounts per asset - /// @param exposureBps Array of exposure percentages per asset - /// @return weightedExposureBps The weighted average exposure in basis points - function calculateWeightedExposure( - uint256[] memory delegations, - uint16[] memory exposureBps - ) - internal - pure - returns (uint16 weightedExposureBps) - { - require(delegations.length == exposureBps.length, "Length mismatch"); - - if (delegations.length == 0) return 0; - - uint256 totalDelegation = 0; - uint256 weightedSum = 0; - - for (uint256 i = 0; i < delegations.length; i++) { - totalDelegation += delegations[i]; - weightedSum += uint256(exposureBps[i]) * delegations[i]; - } - - if (totalDelegation == 0) return 0; - - // Casting is safe because weighted average of basis points stays within 0-10000. - // forge-lint: disable-next-line(unsafe-typecast) - return uint16(weightedSum / totalDelegation); - } - - /// @notice Calculate USD-weighted average exposure using price oracle - /// @param tokens Array of token addresses (address(0) for native) - /// @param delegations Array of delegation amounts per asset - /// @param exposureBps Array of exposure percentages per asset - /// @param oracle Price oracle for USD conversions - /// @return weightedExposureBps USD-weighted average exposure - /// @return totalValueUsd Total value of all delegations in USD (18 decimals) - // forge-lint: disable-next-line(mixed-case-function) - function calculateUSDWeightedExposure( - address[] memory tokens, - uint256[] memory delegations, - uint16[] memory exposureBps, - IPriceOracle oracle - ) - internal - view - returns (uint16 weightedExposureBps, uint256 totalValueUsd) - { - require(tokens.length == delegations.length, "Length mismatch"); - require(delegations.length == exposureBps.length, "Length mismatch"); - - if (delegations.length == 0) return (0, 0); - - uint256[] memory usdValues = new uint256[](delegations.length); - - // Convert each delegation to USD - for (uint256 i = 0; i < delegations.length; i++) { - if (delegations[i] > 0) { - usdValues[i] = oracle.toUSD(tokens[i], delegations[i]); - totalValueUsd += usdValues[i]; - } - } - - if (totalValueUsd == 0) return (0, 0); - - // Calculate USD-weighted exposure - uint256 weightedSum = 0; - for (uint256 i = 0; i < delegations.length; i++) { - weightedSum += uint256(exposureBps[i]) * usdValues[i]; - } - - // Casting is safe because weighted average of basis points stays within 0-10000. - // forge-lint: disable-next-line(unsafe-typecast) - weightedExposureBps = uint16(weightedSum / totalValueUsd); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // SLASH AMOUNT CALCULATION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Calculate slash amount based on exposure percentage - /// @dev Slash is applied to the exposed portion of delegation - /// @param delegatedAmount Total delegation for the asset - /// @param exposureBps Operator's exposure percentage - /// @param slashBps Slash percentage (of exposed amount) - /// @return slashAmount Amount to slash - function calculateSlashAmount( - uint256 delegatedAmount, - uint16 exposureBps, - uint16 slashBps - ) - internal - pure - returns (uint256 slashAmount) - { - uint256 exposedAmount = calculateExposedAmount(delegatedAmount, exposureBps); - return (exposedAmount * slashBps) / ExposureTypes.BPS_DENOMINATOR; - } - - /// @notice Calculate max slashable amount for an operator-asset pair - /// @param delegatedAmount Total delegation - /// @param exposureBps Operator's exposure percentage - /// @return maxSlashable Maximum amount that can be slashed - function calculateMaxSlashable( - uint256 delegatedAmount, - uint16 exposureBps - ) - internal - pure - returns (uint256 maxSlashable) - { - return calculateExposedAmount(delegatedAmount, exposureBps); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // REWARD DISTRIBUTION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Calculate reward share based on exposure percentage - /// @dev Higher exposure = higher risk = higher reward share - /// @param delegatedAmount Total delegation for the asset - /// @param exposureBps Operator's exposure percentage - /// @param totalReward Total reward pool to distribute - /// @param totalExposedValue Sum of all exposed values in the service - /// @return rewardShare Operator's share of rewards - function calculateRewardShare( - uint256 delegatedAmount, - uint16 exposureBps, - uint256 totalReward, - uint256 totalExposedValue - ) - internal - pure - returns (uint256 rewardShare) - { - if (totalExposedValue == 0) return 0; - - uint256 exposedAmount = calculateExposedAmount(delegatedAmount, exposureBps); - return (totalReward * exposedAmount) / totalExposedValue; - } - - /// @notice Calculate total exposed value for a service across all operators - /// @param delegations Array of delegation amounts (per operator) - /// @param exposureBps Array of exposure percentages (per operator) - /// @return totalExposed Sum of all exposed values - function calculateTotalExposedValue( - uint256[] memory delegations, - uint16[] memory exposureBps - ) - internal - pure - returns (uint256 totalExposed) - { - require(delegations.length == exposureBps.length, "Length mismatch"); - - for (uint256 i = 0; i < delegations.length; i++) { - totalExposed += calculateExposedAmount(delegations[i], exposureBps[i]); - } - } - - // ═══════════════════════════════════════════════════════════════════════════ - // VALIDATION HELPERS - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Check if exposure is within valid range - /// @param exposureBps Exposure to validate - /// @return valid True if exposure is between MIN and MAX - function isValidExposure(uint16 exposureBps) internal pure returns (bool valid) { - return exposureBps >= ExposureTypes.MIN_EXPOSURE_BPS && exposureBps <= ExposureTypes.MAX_EXPOSURE_BPS; - } - - /// @notice Check if exposure is within specified bounds - /// @param exposureBps Exposure to validate - /// @param minBps Minimum allowed exposure - /// @param maxBps Maximum allowed exposure - /// @return valid True if exposure is within bounds - function isWithinBounds(uint16 exposureBps, uint16 minBps, uint16 maxBps) internal pure returns (bool valid) { - return exposureBps >= minBps && exposureBps <= maxBps; - } - - /// @notice Clamp exposure to valid range - /// @param exposureBps Exposure to clamp - /// @return clamped Clamped exposure value - function clampExposure(uint16 exposureBps) internal pure returns (uint16 clamped) { - if (exposureBps < ExposureTypes.MIN_EXPOSURE_BPS) { - return ExposureTypes.MIN_EXPOSURE_BPS; - } - if (exposureBps > ExposureTypes.MAX_EXPOSURE_BPS) { - return ExposureTypes.MAX_EXPOSURE_BPS; - } - return exposureBps; - } - - // ═══════════════════════════════════════════════════════════════════════════ - // AGGREGATION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Build calculated exposure for an operator-asset pair - /// @param operator Operator address - /// @param asset The asset - /// @param delegatedAmount Delegation to operator - /// @param exposureBps Exposure percentage - /// @param serviceId Service ID (0 if aggregate) - /// @return exposure Calculated exposure struct - function buildCalculatedExposure( - address operator, - Types.Asset memory asset, - uint256 delegatedAmount, - uint16 exposureBps, - uint64 serviceId - ) - internal - pure - returns (ExposureTypes.CalculatedExposure memory exposure) - { - exposure.operator = operator; - exposure.asset = asset; - exposure.delegatedAmount = delegatedAmount; - exposure.exposureBps = exposureBps; - exposure.exposedAmount = calculateExposedAmount(delegatedAmount, exposureBps); - exposure.serviceId = serviceId; - } - - /// @notice Aggregate multiple calculated exposures into a single summary - /// @param exposures Array of calculated exposures - /// @param operator Operator address - /// @param serviceId Service ID - /// @return aggregate Aggregated exposure - function aggregateExposures( - ExposureTypes.CalculatedExposure[] memory exposures, - address operator, - uint64 serviceId - ) - internal - pure - returns (ExposureTypes.AggregateExposure memory aggregate) - { - aggregate.operator = operator; - aggregate.serviceId = serviceId; - aggregate.perAsset = exposures; - - for (uint256 i = 0; i < exposures.length; i++) { - aggregate.totalExposedValue += exposures[i].exposedAmount; - } - } -} diff --git a/src/exposure/ExposureManager.sol b/src/exposure/ExposureManager.sol deleted file mode 100644 index 4bd0f82d..00000000 --- a/src/exposure/ExposureManager.sol +++ /dev/null @@ -1,441 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.26; - -import { Types } from "../libraries/Types.sol"; -import { IStaking } from "../interfaces/IStaking.sol"; -import { IExposureManager } from "./IExposureManager.sol"; -import { ExposureTypes } from "./ExposureTypes.sol"; - -/// @title ExposureManager -/// @notice Manages operator per-asset exposure limits and validates commitments -/// @dev Aligns with Tangle pallet exposure model (percentage-based, per-asset) -/// -/// Architecture: -/// 1. Operators set per-asset exposure limits (max % they'll commit) -/// 2. Service requesters specify security requirements (min/max %) -/// 3. When operators approve, their commitments are validated against: -/// - Their own exposure limits -/// - Min/max from service requirements -/// - Their actual delegation for each asset -/// 4. Exposure used in both reward distribution and slashing calculations -contract ExposureManager is IExposureManager { - // ═══════════════════════════════════════════════════════════════════════════ - // STATE - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice The staking contract for delegation queries - // forge-lint: disable-next-line(screaming-snake-case-immutable) - IStaking public immutable staking; - - /// @notice Operator global exposure configs - mapping(address => ExposureTypes.OperatorExposureConfig) public operatorConfigs; - - /// @notice Operator per-asset exposure limits (operator => assetHash => limit) - mapping(address => mapping(bytes32 => ExposureTypes.OperatorAssetExposureLimit)) internal _assetExposureLimits; - - /// @notice Track which assets an operator has configured - mapping(address => bytes32[]) internal _operatorConfiguredAssets; - - // ═══════════════════════════════════════════════════════════════════════════ - // CONSTRUCTOR - // ═══════════════════════════════════════════════════════════════════════════ - - constructor(address _staking) { - require(_staking != address(0), "Zero address"); - staking = IStaking(_staking); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // OPERATOR CONFIGURATION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @inheritdoc IExposureManager - function setAssetExposureLimit( - Types.Asset calldata asset, - uint16 maxExposureBps, - uint16 defaultExposureBps, - bool enabled - ) - external - override - { - _validateExposureConfig(maxExposureBps, defaultExposureBps); - - bytes32 assetHash = _hashAsset(asset); - ExposureTypes.OperatorAssetExposureLimit storage limit = _assetExposureLimits[msg.sender][assetHash]; - - // Track if this is a new asset for the operator - if (limit.maxExposureBps == 0 && maxExposureBps > 0) { - _operatorConfiguredAssets[msg.sender].push(assetHash); - } - - limit.asset = asset; - limit.maxExposureBps = maxExposureBps; - limit.defaultExposureBps = defaultExposureBps; - limit.enabled = enabled; - - emit AssetExposureLimitSet(msg.sender, asset, maxExposureBps, defaultExposureBps, enabled); - } - - /// @inheritdoc IExposureManager - function batchSetAssetExposureLimits(ExposureTypes.OperatorAssetExposureLimit[] calldata limits) external override { - for (uint256 i = 0; i < limits.length; i++) { - _validateExposureConfig(limits[i].maxExposureBps, limits[i].defaultExposureBps); - - bytes32 assetHash = _hashAsset(limits[i].asset); - ExposureTypes.OperatorAssetExposureLimit storage limit = _assetExposureLimits[msg.sender][assetHash]; - - if (limit.maxExposureBps == 0 && limits[i].maxExposureBps > 0) { - _operatorConfiguredAssets[msg.sender].push(assetHash); - } - - limit.asset = limits[i].asset; - limit.maxExposureBps = limits[i].maxExposureBps; - limit.defaultExposureBps = limits[i].defaultExposureBps; - limit.enabled = limits[i].enabled; - - emit AssetExposureLimitSet( - msg.sender, limits[i].asset, limits[i].maxExposureBps, limits[i].defaultExposureBps, limits[i].enabled - ); - } - } - - /// @inheritdoc IExposureManager - function setOperatorExposureConfig(uint16 globalMaxExposureBps, bool requireExplicitApproval) external override { - if (globalMaxExposureBps > ExposureTypes.MAX_EXPOSURE_BPS) { - revert InvalidExposureConfig("Global max exceeds 100%"); - } - - ExposureTypes.OperatorExposureConfig storage config = operatorConfigs[msg.sender]; - config.globalMaxExposureBps = globalMaxExposureBps; - config.requireExplicitApproval = requireExplicitApproval; - config.updatedAt = uint64(block.timestamp); - - emit OperatorExposureConfigUpdated(msg.sender, globalMaxExposureBps, requireExplicitApproval); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // VALIDATION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @inheritdoc IExposureManager - function validateCommitments( - address operator, - Types.AssetSecurityRequirement[] calldata requirements, - Types.AssetSecurityCommitment[] calldata commitments - ) - external - view - override - returns (bool valid, ExposureTypes.CommitmentValidationResult memory result) - { - // 1. Check operator is registered - if (!staking.isOperator(operator)) { - return ( - false, - ExposureTypes.CommitmentValidationResult({ - valid: false, - reason: "Not an operator", - asset: Types.Asset(Types.AssetKind.Native, address(0)), - requiredStake: 0, - actualStake: 0 - }) - ); - } - - // 2. Check each requirement has a matching valid commitment - for (uint256 i = 0; i < requirements.length; i++) { - Types.AssetSecurityRequirement calldata req = requirements[i]; - bool found = false; - - for (uint256 j = 0; j < commitments.length; j++) { - if (_assetsMatch(req.asset, commitments[j].asset)) { - // Found matching commitment, validate it - (bool commitValid, ExposureTypes.CommitmentValidationResult memory commitResult) = - _validateSingleCommitment(operator, req, commitments[j]); - - if (!commitValid) { - return (false, commitResult); - } - found = true; - break; - } - } - - if (!found) { - return ( - false, - ExposureTypes.CommitmentValidationResult({ - valid: false, - reason: "Missing commitment for required asset", - asset: req.asset, - requiredStake: 0, - actualStake: 0 - }) - ); - } - } - - // 3. Check for unexpected commitments (assets not in requirements) - for (uint256 j = 0; j < commitments.length; j++) { - bool expected = false; - for (uint256 i = 0; i < requirements.length; i++) { - if (_assetsMatch(requirements[i].asset, commitments[j].asset)) { - expected = true; - break; - } - } - if (!expected) { - return ( - false, - ExposureTypes.CommitmentValidationResult({ - valid: false, - reason: "Unexpected asset commitment", - asset: commitments[j].asset, - requiredStake: 0, - actualStake: 0 - }) - ); - } - } - - return ( - true, - ExposureTypes.CommitmentValidationResult({ - valid: true, - reason: "", - asset: Types.Asset(Types.AssetKind.Native, address(0)), - requiredStake: 0, - actualStake: 0 - }) - ); - } - - /// @notice Validate a single commitment - function _validateSingleCommitment( - address operator, - Types.AssetSecurityRequirement calldata requirement, - Types.AssetSecurityCommitment calldata commitment - ) - internal - view - returns (bool, ExposureTypes.CommitmentValidationResult memory) - { - // Check exposure is within requirement bounds - if (commitment.exposureBps < requirement.minExposureBps) { - return ( - false, - ExposureTypes.CommitmentValidationResult({ - valid: false, - reason: "Commitment below minimum", - asset: requirement.asset, - requiredStake: 0, - actualStake: 0 - }) - ); - } - - if (commitment.exposureBps > requirement.maxExposureBps) { - return ( - false, - ExposureTypes.CommitmentValidationResult({ - valid: false, - reason: "Commitment above maximum", - asset: requirement.asset, - requiredStake: 0, - actualStake: 0 - }) - ); - } - - // Check operator's own exposure limit - (uint16 effectiveLimit,) = _getEffectiveExposureLimit(operator, requirement.asset); - if (effectiveLimit > 0 && commitment.exposureBps > effectiveLimit) { - return ( - false, - ExposureTypes.CommitmentValidationResult({ - valid: false, - reason: "Exceeds operator limit", - asset: requirement.asset, - requiredStake: 0, - actualStake: 0 - }) - ); - } - - // Check operator has sufficient delegation for this asset - uint256 delegation = _getOperatorDelegationForAsset(operator, requirement.asset); - if (delegation == 0) { - return ( - false, - ExposureTypes.CommitmentValidationResult({ - valid: false, - reason: "No delegation for asset", - asset: requirement.asset, - requiredStake: 1, // At least some stake required - actualStake: 0 - }) - ); - } - - return ( - true, - ExposureTypes.CommitmentValidationResult({ - valid: true, reason: "", asset: requirement.asset, requiredStake: 0, actualStake: delegation - }) - ); - } - - /// @inheritdoc IExposureManager - function canAcceptExposure( - address operator, - Types.Asset calldata asset, - uint16 exposureBps - ) - external - view - override - returns (bool canAccept, uint16 effectiveLimit) - { - (effectiveLimit,) = _getEffectiveExposureLimit(operator, asset); - - // If no limit set and operator doesn't require explicit approval, allow any exposure - if (effectiveLimit == 0 && !operatorConfigs[operator].requireExplicitApproval) { - return (true, ExposureTypes.MAX_EXPOSURE_BPS); - } - - // Check against operator's limit - canAccept = exposureBps <= effectiveLimit; - } - - // ═══════════════════════════════════════════════════════════════════════════ - // EXPOSURE CALCULATION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @inheritdoc IExposureManager - function calculateExposedAmount( - address operator, - Types.Asset calldata asset, - uint16 exposureBps - ) - external - view - override - returns (uint256 delegatedAmount, uint256 exposedAmount) - { - delegatedAmount = _getOperatorDelegationForAsset(operator, asset); - exposedAmount = (delegatedAmount * exposureBps) / ExposureTypes.BPS_DENOMINATOR; - } - - /// @inheritdoc IExposureManager - function getOperatorServiceExposure( - address operator, - uint64 serviceId - ) - external - pure - override - returns (ExposureTypes.AggregateExposure memory exposure) - { - // This would need access to service storage to get commitments - // For now, return empty - actual implementation needs Tangle integration - exposure.operator = operator; - exposure.serviceId = serviceId; - exposure.totalExposedValue = 0; - } - - // ═══════════════════════════════════════════════════════════════════════════ - // VIEW FUNCTIONS - // ═══════════════════════════════════════════════════════════════════════════ - - /// @inheritdoc IExposureManager - function getAssetExposureLimit( - address operator, - Types.Asset calldata asset - ) - external - view - override - returns (ExposureTypes.OperatorAssetExposureLimit memory limit) - { - bytes32 assetHash = _hashAsset(asset); - return _assetExposureLimits[operator][assetHash]; - } - - /// @inheritdoc IExposureManager - function getOperatorExposureConfig(address operator) - external - view - override - returns (ExposureTypes.OperatorExposureConfig memory config) - { - return operatorConfigs[operator]; - } - - /// @inheritdoc IExposureManager - function getEffectiveExposureLimit( - address operator, - Types.Asset calldata asset - ) - external - view - override - returns (uint16 effectiveLimit, bool isExplicit) - { - return _getEffectiveExposureLimit(operator, asset); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // INTERNAL FUNCTIONS - // ═══════════════════════════════════════════════════════════════════════════ - - function _getEffectiveExposureLimit( - address operator, - Types.Asset memory asset - ) - internal - view - returns (uint16 effectiveLimit, bool isExplicit) - { - bytes32 assetHash = _hashAsset(asset); - ExposureTypes.OperatorAssetExposureLimit storage perAsset = _assetExposureLimits[operator][assetHash]; - - if (perAsset.maxExposureBps > 0) { - return (perAsset.maxExposureBps, true); - } - - ExposureTypes.OperatorExposureConfig storage config = operatorConfigs[operator]; - if (config.globalMaxExposureBps > 0) { - return (config.globalMaxExposureBps, false); - } - - // Default: 100% if no limits set - return (ExposureTypes.MAX_EXPOSURE_BPS, false); - } - - function _getOperatorDelegationForAsset(address operator, Types.Asset memory asset) - internal - view - returns (uint256) - { - return staking.getOperatorStakeForAsset(operator, asset); - } - - function _hashAsset(Types.Asset memory asset) internal pure returns (bytes32) { - // forge-lint: disable-next-line(asm-keccak256) - return keccak256(abi.encode(asset.kind, asset.token)); - } - - function _assetsMatch(Types.Asset memory a, Types.Asset memory b) internal pure returns (bool) { - return a.kind == b.kind && a.token == b.token; - } - - function _validateExposureConfig(uint16 maxBps, uint16 defaultBps) internal pure { - if (maxBps > ExposureTypes.MAX_EXPOSURE_BPS) { - revert InvalidExposureConfig("Max exceeds 100%"); - } - if (defaultBps > maxBps && defaultBps != 0) { - revert InvalidExposureConfig("Default exceeds max"); - } - } -} diff --git a/src/exposure/ExposureTypes.sol b/src/exposure/ExposureTypes.sol deleted file mode 100644 index 12a29967..00000000 --- a/src/exposure/ExposureTypes.sol +++ /dev/null @@ -1,77 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.26; - -import { Types } from "../libraries/Types.sol"; - -/// @title ExposureTypes -/// @notice Type definitions for the exposure system -/// @dev Aligns with Tangle pallet exposure model (percentage-based, per-asset) -library ExposureTypes { - // ═══════════════════════════════════════════════════════════════════════════ - // CONSTANTS - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Basis points denominator (100% = 10000) - uint16 public constant BPS_DENOMINATOR = 10_000; - - /// @notice Maximum exposure (100%) - uint16 public constant MAX_EXPOSURE_BPS = 10_000; - - /// @notice Minimum non-zero exposure (0.01%) - uint16 public constant MIN_EXPOSURE_BPS = 1; - - // ═══════════════════════════════════════════════════════════════════════════ - // OPERATOR EXPOSURE LIMITS - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Operator's per-asset exposure limit - /// @dev Operators can set maximum exposure % they're willing to commit per asset - struct OperatorAssetExposureLimit { - Types.Asset asset; // The asset - uint16 maxExposureBps; // Maximum exposure operator will accept (0 = disabled) - uint16 defaultExposureBps; // Default exposure if not specified (0 = use max) - bool enabled; // Whether operator accepts this asset - } - - /// @notice Full operator exposure configuration - struct OperatorExposureConfig { - uint16 globalMaxExposureBps; // Default max if no per-asset limit set - bool requireExplicitApproval; // If true, operator must approve each asset - uint64 updatedAt; // Last config update timestamp - } - - // ═══════════════════════════════════════════════════════════════════════════ - // EXPOSURE CALCULATION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Calculated exposure for an operator-asset-service tuple - struct CalculatedExposure { - address operator; - Types.Asset asset; - uint256 delegatedAmount; // Total delegated to operator for this asset - uint16 exposureBps; // Committed exposure percentage - uint256 exposedAmount; // delegatedAmount * exposureBps / 10000 - uint64 serviceId; // 0 if aggregate - } - - /// @notice Aggregate exposure across multiple assets (for display/comparison) - struct AggregateExposure { - address operator; - uint64 serviceId; - CalculatedExposure[] perAsset; // Per-asset breakdown - uint256 totalExposedValue; // Sum of all exposed amounts (in native units, not USD) - } - - // ═══════════════════════════════════════════════════════════════════════════ - // VALIDATION RESULTS - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Result of validating a commitment - struct CommitmentValidationResult { - bool valid; - string reason; // Empty if valid - Types.Asset asset; // Asset that failed (if any) - uint256 requiredStake; // Required delegation (if stake check failed) - uint256 actualStake; // Actual delegation (if stake check failed) - } -} diff --git a/src/exposure/IExposureManager.sol b/src/exposure/IExposureManager.sol deleted file mode 100644 index d6d027a8..00000000 --- a/src/exposure/IExposureManager.sol +++ /dev/null @@ -1,163 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.26; - -import { Types } from "../libraries/Types.sol"; -import { ExposureTypes } from "./ExposureTypes.sol"; - -/// @title IExposureManager -/// @notice Interface for managing operator per-asset exposure limits -/// @dev Aligns with Tangle pallet exposure model -interface IExposureManager { - // ═══════════════════════════════════════════════════════════════════════════ - // ERRORS - // ═══════════════════════════════════════════════════════════════════════════ - - error ExposureTooHigh(address operator, address token, uint16 requested, uint16 limit); - error ExposureTooLow(address operator, address token, uint16 requested, uint16 minimum); - error AssetNotEnabled(address operator, address token); - error InsufficientDelegation(address operator, address token, uint256 required, uint256 actual); - error InvalidExposureConfig(string reason); - error NotOperator(address account); - - // ═══════════════════════════════════════════════════════════════════════════ - // EVENTS - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Emitted when operator sets per-asset exposure limit - event AssetExposureLimitSet( - address indexed operator, Types.Asset asset, uint16 maxExposureBps, uint16 defaultExposureBps, bool enabled - ); - - /// @notice Emitted when operator updates global config - event OperatorExposureConfigUpdated( - address indexed operator, uint16 globalMaxExposureBps, bool requireExplicitApproval - ); - - // ═══════════════════════════════════════════════════════════════════════════ - // OPERATOR CONFIGURATION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Set exposure limit for a specific asset - /// @param asset The asset to configure - /// @param maxExposureBps Maximum exposure operator will commit (in basis points) - /// @param defaultExposureBps Default exposure if not specified (0 = use max) - /// @param enabled Whether operator accepts this asset - function setAssetExposureLimit( - Types.Asset calldata asset, - uint16 maxExposureBps, - uint16 defaultExposureBps, - bool enabled - ) - external; - - /// @notice Batch set exposure limits for multiple assets - function batchSetAssetExposureLimits(ExposureTypes.OperatorAssetExposureLimit[] calldata limits) external; - - /// @notice Set global exposure configuration - /// @param globalMaxExposureBps Default max for assets without explicit limit - /// @param requireExplicitApproval If true, all assets must have explicit limits - function setOperatorExposureConfig(uint16 globalMaxExposureBps, bool requireExplicitApproval) external; - - // ═══════════════════════════════════════════════════════════════════════════ - // VALIDATION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Validate operator's security commitments against their limits and delegation - /// @param operator The operator address - /// @param requirements Service security requirements - /// @param commitments Operator's proposed commitments - /// @return valid True if all commitments are valid - /// @return result Detailed validation result (for debugging) - function validateCommitments( - address operator, - Types.AssetSecurityRequirement[] calldata requirements, - Types.AssetSecurityCommitment[] calldata commitments - ) - external - view - returns (bool valid, ExposureTypes.CommitmentValidationResult memory result); - - /// @notice Check if operator can accept a specific exposure for an asset - /// @param operator The operator address - /// @param asset The asset - /// @param exposureBps Requested exposure in basis points - /// @return canAccept True if operator's limits allow this exposure - /// @return effectiveLimit The operator's effective limit for this asset - function canAcceptExposure( - address operator, - Types.Asset calldata asset, - uint16 exposureBps - ) - external - view - returns (bool canAccept, uint16 effectiveLimit); - - // ═══════════════════════════════════════════════════════════════════════════ - // EXPOSURE CALCULATION - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Calculate exposed amount for an operator-asset pair - /// @param operator The operator - /// @param asset The asset - /// @param exposureBps Exposure percentage in basis points - /// @return delegatedAmount Total delegation to operator for this asset - /// @return exposedAmount Amount exposed based on percentage - function calculateExposedAmount( - address operator, - Types.Asset calldata asset, - uint16 exposureBps - ) - external - view - returns (uint256 delegatedAmount, uint256 exposedAmount); - - /// @notice Get full exposure breakdown for an operator in a service - /// @param operator The operator - /// @param serviceId The service ID - /// @return exposure Aggregate exposure information - function getOperatorServiceExposure( - address operator, - uint64 serviceId - ) - external - view - returns (ExposureTypes.AggregateExposure memory exposure); - - // ═══════════════════════════════════════════════════════════════════════════ - // VIEW FUNCTIONS - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Get operator's exposure limit for an asset - /// @param operator The operator address - /// @param asset The asset - /// @return limit The exposure limit (zero if not set) - function getAssetExposureLimit( - address operator, - Types.Asset calldata asset - ) - external - view - returns (ExposureTypes.OperatorAssetExposureLimit memory limit); - - /// @notice Get operator's global exposure config - /// @param operator The operator address - /// @return config The exposure configuration - function getOperatorExposureConfig(address operator) - external - view - returns (ExposureTypes.OperatorExposureConfig memory config); - - /// @notice Get the effective exposure limit for an operator-asset pair - /// @dev Returns per-asset limit if set, else global limit - /// @param operator The operator - /// @param asset The asset - /// @return effectiveLimit The effective limit in basis points - /// @return isExplicit True if limit is from per-asset config - function getEffectiveExposureLimit( - address operator, - Types.Asset calldata asset - ) - external - view - returns (uint16 effectiveLimit, bool isExplicit); -} diff --git a/src/facets/tangle/TangleServicesFacet.sol b/src/facets/tangle/TangleServicesFacet.sol index 7c88ee7b..fb481545 100644 --- a/src/facets/tangle/TangleServicesFacet.sol +++ b/src/facets/tangle/TangleServicesFacet.sol @@ -16,13 +16,17 @@ contract TangleServicesFacet is ServicesApprovals, IFacetSelectors { using EnumerableSet for EnumerableSet.AddressSet; function selectors() external pure returns (bytes4[] memory selectorList) { - selectorList = new bytes4[](6); + selectorList = new bytes4[](7); selectorList[0] = this.approveService.selector; selectorList[1] = this.rejectService.selector; selectorList[2] = this.getOperatorBlsPubkey.selector; selectorList[3] = this.blsPopMessage.selector; selectorList[4] = this.getTeeCommitmentRoot.selector; selectorList[5] = this.teeNonceFor.selector; + // The aa511c2 release added `expireServiceRequest` to ITangleServices but + // forgot to register it here, so the permissionless cleanup path was + // unreachable on the proxy. + selectorList[6] = this.expireServiceRequest.selector; } /// @notice keccak256 root over an operator's `TeeAttestationCommitment[]` for a service. diff --git a/src/interfaces/IStreamingPaymentAdapter.sol b/src/interfaces/IStreamingPaymentAdapter.sol deleted file mode 100644 index 71468816..00000000 --- a/src/interfaces/IStreamingPaymentAdapter.sol +++ /dev/null @@ -1,295 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.26; - -/// @title IStreamingPaymentAdapter -/// @notice Common interface for streaming payment adapters (Superfluid, Sablier, etc.) -/// @dev Adapters implement this interface to provide streaming payment capabilities -/// to Tangle services without tight coupling to specific protocols. -interface IStreamingPaymentAdapter { - // ═══════════════════════════════════════════════════════════════════════════ - // EVENTS - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Emitted when a stream is created for a service - event StreamCreated( - uint64 indexed serviceId, - uint256 indexed streamId, - address indexed payer, - address token, - uint256 ratePerSecond, - uint256 totalAmount - ); - - /// @notice Emitted when a stream is updated - event StreamUpdated(uint64 indexed serviceId, uint256 indexed streamId, uint256 newRatePerSecond); - - /// @notice Emitted when a stream is cancelled - event StreamCancelled(uint64 indexed serviceId, uint256 indexed streamId, uint256 refundedAmount); - - /// @notice Emitted when funds are withdrawn from a stream - event StreamWithdrawn(uint64 indexed serviceId, uint256 indexed streamId, uint256 amount, address recipient); - - /// @notice Emitted when a stream is settled and distributed - event StreamSettled(uint64 indexed serviceId, uint256 indexed streamId, uint256 amount); - - // ═══════════════════════════════════════════════════════════════════════════ - // STREAM MANAGEMENT - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Create a streaming payment for a service - /// @param serviceId The Tangle service ID - /// @param token The ERC-20 token to stream (address(0) for native) - /// @param totalAmount Total amount to stream - /// @param durationSeconds Stream duration in seconds - /// @param cliffSeconds Optional cliff period (0 for no cliff) - /// @return streamId The created stream ID - function createStream( - uint64 serviceId, - address token, - uint256 totalAmount, - uint64 durationSeconds, - uint64 cliffSeconds - ) - external - payable - returns (uint256 streamId); - - /// @notice Update the rate of an existing stream - /// @param streamId The stream ID to update - /// @param newRatePerSecond New streaming rate - function updateStreamRate(uint256 streamId, uint256 newRatePerSecond) external; - - /// @notice Cancel a stream and refund remaining balance - /// @param streamId The stream ID to cancel - /// @return refundedAmount Amount refunded to the payer - function cancelStream(uint256 streamId) external returns (uint256 refundedAmount); - - /// @notice Withdraw available funds from a stream - /// @param streamId The stream ID - /// @return withdrawnAmount Amount withdrawn - function withdrawFromStream(uint256 streamId) external returns (uint256 withdrawnAmount); - - /// @notice Settle a stream's accumulated funds and distribute to operators - /// @dev This triggers distribution through Tangle's payment system - /// @param streamId The stream ID to settle - function settleAndDistribute(uint256 streamId) external; - - // ═══════════════════════════════════════════════════════════════════════════ - // VIEW FUNCTIONS - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Get the current withdrawable amount for a stream - /// @param streamId The stream ID - /// @return amount Amount available to withdraw - function getWithdrawableAmount(uint256 streamId) external view returns (uint256 amount); - - /// @notice Get the current streaming rate - /// @param streamId The stream ID - /// @return ratePerSecond Tokens per second being streamed - function getStreamRate(uint256 streamId) external view returns (uint256 ratePerSecond); - - /// @notice Get full stream information - /// @param streamId The stream ID - /// @return serviceId Associated Tangle service - /// @return payer Address funding the stream - /// @return token Token being streamed - /// @return totalAmount Total stream amount - /// @return withdrawnAmount Amount already withdrawn - /// @return startTime Stream start timestamp - /// @return endTime Stream end timestamp - /// @return cliffTime Cliff timestamp (0 if no cliff) - /// @return active Whether stream is active - function getStreamInfo(uint256 streamId) - external - view - returns ( - uint64 serviceId, - address payer, - address token, - uint256 totalAmount, - uint256 withdrawnAmount, - uint256 startTime, - uint256 endTime, - uint256 cliffTime, - bool active - ); - - /// @notice Get the service ID associated with a stream - /// @param streamId The stream ID - /// @return serviceId The Tangle service ID - function getStreamServiceId(uint256 streamId) external view returns (uint64 serviceId); - - /// @notice Get all active streams for a service - /// @param serviceId The Tangle service ID - /// @return streamIds Array of active stream IDs - function getServiceStreams(uint64 serviceId) external view returns (uint256[] memory streamIds); - - /// @notice Calculate real-time accrued amount (not yet settled) - /// @param streamId The stream ID - /// @return accruedAmount Amount accrued since last settlement - function getAccruedAmount(uint256 streamId) external view returns (uint256 accruedAmount); - - // ═══════════════════════════════════════════════════════════════════════════ - // PROTOCOL INFO - // ═══════════════════════════════════════════════════════════════════════════ - - /// @notice Get the name of the underlying protocol - /// @return name Protocol name (e.g., "Superfluid", "Sablier") - function protocolName() external view returns (string memory name); - - /// @notice Check if a token is supported for streaming - /// @param token The token address - /// @return supported True if token can be streamed - function isTokenSupported(address token) external view returns (bool supported); -} - -/// @title ISuperfluidAdapter -/// @notice Extended interface for Superfluid-specific features -interface ISuperfluidAdapter is IStreamingPaymentAdapter { - /// @notice Get the net flow rate for an account (incoming - outgoing) - /// @param account The account address - /// @param token The super token - /// @return netFlowRate Net flow rate (can be negative) - function getNetFlowRate(address account, address token) external view returns (int96 netFlowRate); - - /// @notice Get the real-time balance of an account - /// @param account The account address - /// @param token The super token - /// @return availableBalance Current available balance - /// @return deposit Required deposit/buffer - function getRealtimeBalance( - address account, - address token - ) - external - view - returns (int256 availableBalance, uint256 deposit); - - /// @notice Check if an account is solvent (positive balance) - /// @param account The account address - /// @param token The super token - /// @return solvent True if account has positive balance - function isSolvent(address account, address token) external view returns (bool solvent); - - /// @notice Get the required buffer/deposit for a flow rate - /// @param token The super token - /// @param flowRate Flow rate in wei/second - /// @return bufferAmount Required buffer deposit - function getRequiredBuffer(address token, int96 flowRate) external view returns (uint256 bufferAmount); - - /// @notice Wrap underlying tokens to super tokens - /// @param token The underlying token - /// @param amount Amount to wrap - function wrapTokens(address token, uint256 amount) external; - - /// @notice Unwrap super tokens to underlying - /// @param token The super token - /// @param amount Amount to unwrap - function unwrapTokens(address token, uint256 amount) external; -} - -/// @title ISablierAdapter -/// @notice Extended interface for Sablier-specific features -interface ISablierAdapter is IStreamingPaymentAdapter { - /// @notice Stream type for Sablier - enum StreamType { - Linear, // Linear vesting over time - Dynamic, // Custom curve with segments - Tranched // Fixed payment tranches - } - - /// @notice Segment for dynamic streams - struct Segment { - uint128 amount; - uint64 exponent; // Curve exponent (scaled by 1e18) - uint40 timestamp; - } - - /// @notice Create a linear stream (constant rate) - /// @param serviceId The Tangle service ID - /// @param token The ERC-20 token - /// @param totalAmount Total amount to stream - /// @param durationSeconds Total duration - /// @param cliffSeconds Cliff period - /// @return streamId The created stream ID - function createLinearStream( - uint64 serviceId, - address token, - uint128 totalAmount, - uint40 durationSeconds, - uint40 cliffSeconds - ) - external - returns (uint256 streamId); - - /// @notice Create a dynamic stream with custom curve - /// @param serviceId The Tangle service ID - /// @param token The ERC-20 token - /// @param totalAmount Total amount to stream - /// @param segments Array of segments defining the curve - /// @return streamId The created stream ID - function createDynamicStream( - uint64 serviceId, - address token, - uint128 totalAmount, - Segment[] calldata segments - ) - external - returns (uint256 streamId); - - /// @notice Check if a stream is cancelable - /// @param streamId The stream ID - /// @return cancelable True if stream can be cancelled - function isCancelable(uint256 streamId) external view returns (bool cancelable); - - /// @notice Check if a stream was cancelled - /// @param streamId The stream ID - /// @return cancelled True if stream was cancelled - function wasCancelled(uint256 streamId) external view returns (bool cancelled); - - /// @notice Get the NFT token ID for a stream (Sablier streams are NFTs) - /// @param streamId The stream ID - /// @return tokenId The ERC-721 token ID - // forge-lint: disable-next-line(mixed-case-function) - function getStreamNFT(uint256 streamId) external view returns (uint256 tokenId); - - /// @notice Transfer stream ownership (NFT transfer) - /// @param streamId The stream ID - /// @param newRecipient New recipient address - function transferStream(uint256 streamId, address newRecipient) external; -} - -/// @title IPaymentAdapterRegistry -/// @notice Registry for managing multiple payment adapters -interface IPaymentAdapterRegistry { - /// @notice Register a new payment adapter - /// @param name Adapter name - /// @param adapter Adapter address - function registerAdapter(string calldata name, address adapter) external; - - /// @notice Remove a payment adapter - /// @param name Adapter name to remove - function removeAdapter(string calldata name) external; - - /// @notice Get an adapter by name - /// @param name Adapter name - /// @return adapter Adapter address - function getAdapter(string calldata name) external view returns (address adapter); - - /// @notice Get the default adapter - /// @return adapter Default adapter address - function getDefaultAdapter() external view returns (address adapter); - - /// @notice Set the default adapter - /// @param name Name of adapter to set as default - function setDefaultAdapter(string calldata name) external; - - /// @notice Check if an adapter is registered - /// @param name Adapter name - /// @return registered True if adapter exists - function isRegistered(string calldata name) external view returns (bool registered); - - /// @notice Get all registered adapter names - /// @return names Array of adapter names - function getRegisteredAdapters() external view returns (string[] memory names); -} diff --git a/src/interfaces/ITangleSlashing.sol b/src/interfaces/ITangleSlashing.sol index 5bb2a51a..5f2ec346 100644 --- a/src/interfaces/ITangleSlashing.sol +++ b/src/interfaces/ITangleSlashing.sol @@ -8,11 +8,40 @@ import { SlashingLib } from "../libraries/SlashingLib.sol"; interface ITangleSlashing { // ═══════════════════════════════════════════════════════════════════════════ // EVENTS + // + // These mirror the events emitted from `SlashingLib`. The interface used to + // declare smaller, legacy shapes that no longer matched what the protocol + // actually emits, so off-chain consumers (Rust bindings, indexers) wired to + // `ITangleSlashing` could not decode any slash event. Aligning here. // ═══════════════════════════════════════════════════════════════════════════ - event SlashProposed(uint64 indexed serviceId, address indexed operator, uint16 slashBps, bytes32 evidence); + event SlashProposed( + uint64 indexed slashId, + uint64 indexed serviceId, + address indexed operator, + address proposer, + uint16 slashBps, + uint16 effectiveSlashBps, + bytes32 evidence, + uint64 executeAfter + ); + + event SlashDisputed(uint64 indexed slashId, address indexed disputer, string reason); + + event SlashExecuted( + uint64 indexed slashId, uint64 indexed serviceId, address indexed operator, uint256 actualSlashed + ); - event SlashExecuted(uint64 indexed serviceId, address indexed operator, uint256 amount); + event SlashCancelled(uint64 indexed slashId, address indexed canceller, string reason); + + event SlashConfigUpdated( + uint64 disputeWindow, + bool instantSlashEnabled, + uint16 maxSlashBps, + uint64 disputeResolutionDeadline, + uint256 disputeBond, + uint16 maxPendingSlashesPerOperator + ); // ═══════════════════════════════════════════════════════════════════════════ // FUNCTIONS diff --git a/src/libraries/SignatureLib.sol b/src/libraries/SignatureLib.sol index adb022ea..aa3b5359 100644 --- a/src/libraries/SignatureLib.sol +++ b/src/libraries/SignatureLib.sol @@ -27,9 +27,13 @@ library SignatureLib { bytes32 internal constant RESOURCE_COMMITMENT_TYPEHASH = keccak256("ResourceCommitment(uint8 kind,uint64 count)"); /// @dev EIP-712 TypeHash for QuoteDetails - /// @dev Replay protection is handled by marking digests as used + /// @dev Replay protection is handled by marking digests as used. + /// @dev `requester` is part of the typed data so the operator's signature commits + /// to who is allowed to redeem the quote. Without it, a third party can copy + /// the signature, flip `details.requester`, and pass the binding check in + /// `verifyQuoteBatch` while the original signature still recovers correctly. bytes32 internal constant QUOTE_TYPEHASH = keccak256( - "QuoteDetails(uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" + "QuoteDetails(address requester,uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" ); /// @dev EIP-712 TypeHash for JobQuoteDetails (per-job RFQ) @@ -80,6 +84,7 @@ library SignatureLib { return keccak256( abi.encode( QUOTE_TYPEHASH, + details.requester, details.blueprintId, details.ttlBlocks, details.totalCost, diff --git a/src/libraries/SlashingLib.sol b/src/libraries/SlashingLib.sol index 26c84a96..b77295b1 100644 --- a/src/libraries/SlashingLib.sol +++ b/src/libraries/SlashingLib.sol @@ -327,12 +327,14 @@ library SlashingLib { /// `proposal.disputeDeadline` (snapshotted from config at dispute time) has /// elapsed. The deadline is read from the proposal — not live config — so /// admin cannot retroactively shorten the operator's review window. + /// The same `TIMESTAMP_BUFFER` is applied to both branches: a sequencer / + /// proposer with timestamp influence cannot sandwich either deadline tick. function isExecutable(SlashProposal storage proposal) internal view returns (bool) { if (proposal.status == SlashStatus.Pending) { return block.timestamp >= proposal.executeAfter + TIMESTAMP_BUFFER; } if (proposal.status == SlashStatus.Disputed) { - return block.timestamp >= uint256(proposal.disputeDeadline); + return block.timestamp >= uint256(proposal.disputeDeadline) + TIMESTAMP_BUFFER; } return false; } diff --git a/src/staking/LiquidDelegationVault.sol b/src/staking/LiquidDelegationVault.sol index ae1dd422..113d8863 100644 --- a/src/staking/LiquidDelegationVault.sol +++ b/src/staking/LiquidDelegationVault.sol @@ -242,6 +242,10 @@ contract LiquidDelegationVault is ERC20, IERC7540Deposit, IERC7540Redeem, IERC75 returns (uint256 requestId) { if (shares == 0) revert ZeroShares(); + // Reject the zero-address controller. Filing a request under controller=0 + // burns the redeemer's shares (no one can sign as address(0) to claim) so + // we fail loudly here instead of silently locking the redemption forever. + if (controller == address(0)) revert NotController(); // Verify caller can act on behalf of owner if (msg.sender != owner && !_operators[owner][msg.sender]) { diff --git a/src/staking/OperatorStatusRegistry.sol b/src/staking/OperatorStatusRegistry.sol index 0dc7de57..e32b6f6a 100644 --- a/src/staking/OperatorStatusRegistry.sol +++ b/src/staking/OperatorStatusRegistry.sol @@ -691,6 +691,12 @@ contract OperatorStatusRegistry is IOperatorStatusRegistry, Ownable2Step { require(msg.sender == tangleCore, "Only Tangle core"); require(operator != address(0), "Zero address"); require(_registeredOperators[serviceId].add(operator), "Already registered"); + // Reset all per-(serviceId, operator) heartbeat / metrics state on (re-)register. + // Without this, an operator who deregistered and re-registers carries stale + // `lastHeartbeat`, `consecutiveBeats`, `missedBeats`, `lastMetricsHash` from + // the previous incarnation, and `isHeartbeatCurrent` may return true before + // any new heartbeat lands. + delete operatorStates[serviceId][operator]; // Initialize to Offline so isOnline() returns false until first heartbeat, // and so _onlineOperators is correctly populated on first Offline→Healthy transition. operatorStates[serviceId][operator].status = StatusCode.Offline; diff --git a/test/Integration.t.sol b/test/Integration.t.sol index b8d6b618..f68af2ec 100644 --- a/test/Integration.t.sol +++ b/test/Integration.t.sol @@ -1113,7 +1113,7 @@ contract RFQTest is BaseTest { function _signQuote(Types.QuoteDetails memory details, uint256 privateKey) internal view returns (bytes memory) { bytes32 QUOTE_TYPEHASH = keccak256( - "QuoteDetails(uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" + "QuoteDetails(address requester,uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" ); bytes32 commitmentsHash = _hashSecurityCommitments(details.securityCommitments); bytes32 resourcesHash = _hashResourceCommitments(details.resourceCommitments); @@ -1131,6 +1131,7 @@ contract RFQTest is BaseTest { bytes32 structHash = keccak256( abi.encode( QUOTE_TYPEHASH, + details.requester, details.blueprintId, details.ttlBlocks, details.totalCost, diff --git a/test/exposure/ExposureEdgeCases.t.sol b/test/exposure/ExposureEdgeCases.t.sol deleted file mode 100644 index c68bc0c2..00000000 --- a/test/exposure/ExposureEdgeCases.t.sol +++ /dev/null @@ -1,711 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.26; - -import "forge-std/Test.sol"; -import { ExposureManager } from "../../src/exposure/ExposureManager.sol"; -import { ExposureTypes } from "../../src/exposure/ExposureTypes.sol"; -import { ExposureCalculator } from "../../src/exposure/ExposureCalculator.sol"; -import { Types } from "../../src/libraries/Types.sol"; -import { SlashingLib } from "../../src/libraries/SlashingLib.sol"; -import { IStaking } from "../../src/interfaces/IStaking.sol"; - -/// @notice Mock staking for testing -contract MockStakingEdge is IStaking { - mapping(address => bool) public operators; - mapping(address => uint256) public stakes; - mapping(address => uint256) public delegatedStakes; - - function setOperator(address operator, bool isOp) external { - operators[operator] = isOp; - } - - function setStake(address operator, uint256 amount) external { - stakes[operator] = amount; - } - - function setDelegatedStake(address operator, uint256 amount) external { - delegatedStakes[operator] = amount; - } - - function isOperator(address account) external view returns (bool) { - return operators[account]; - } - - function isOperatorActive(address) external pure returns (bool) { - return true; - } - - function getOperatorStake(address operator) external view returns (uint256) { - return stakes[operator]; - } - - function getOperatorSelfStake(address operator) external view returns (uint256) { - return stakes[operator]; - } - - function getOperatorDelegatedStake(address operator) external view returns (uint256) { - return delegatedStakes[operator]; - } - - function getOperatorDelegatedStakeForAsset(address operator, Types.Asset calldata) external view returns (uint256) { - return delegatedStakes[operator]; - } - - function getOperatorStakeForAsset(address operator, Types.Asset calldata) external view returns (uint256) { - return stakes[operator]; - } - - function getDelegation(address, address) external pure returns (uint256) { - return 0; - } - - function getTotalDelegation(address) external pure returns (uint256) { - return 0; - } - - function minOperatorStake() external pure returns (uint256) { - return 0; - } - - function meetsStakeRequirement(address, uint256) external pure returns (bool) { - return true; - } - - function slashForBlueprint(address, uint64, uint64, uint16 slashBps, bytes32) external pure returns (uint256) { - return slashBps; - } - - function slashForService( - address, - uint64, - uint64, - Types.AssetSecurityCommitment[] calldata, - uint16 slashBps, - bytes32 - ) - external - pure - returns (uint256) - { - return slashBps; - } - - function slash(address, uint64, uint16 slashBps, bytes32) external pure returns (uint256) { - return slashBps; - } - - function isSlasher(address) external pure returns (bool) { - return false; - } - function notifyRewardForBlueprint(address, uint64, uint64, uint256) external { } - function notifyReward(address, uint64, uint256) external { } - function addBlueprintForOperator(address, uint64) external override { } - function removeBlueprintForOperator(address, uint64) external override { } - - // M-9 FIX: Pending slash tracking (no-op for mock) - function incrementPendingSlash(address) external override { } - function decrementPendingSlash(address) external override { } - - function getPendingSlashCount(address) external pure override returns (uint64) { - return 0; - } -} - -/// @title ExposureEdgeCasesTest -/// @notice Comprehensive edge case and boundary testing for exposure system -contract ExposureEdgeCasesTest is Test { - ExposureManager public manager; - MockStakingEdge public staking; - - address public operator1; - address public operator2; - address public operator3; - - Types.Asset public nativeAsset; - Types.Asset public erc20Asset; - - function setUp() public { - operator1 = makeAddr("operator1"); - operator2 = makeAddr("operator2"); - operator3 = makeAddr("operator3"); - - staking = new MockStakingEdge(); - staking.setOperator(operator1, true); - staking.setOperator(operator2, true); - staking.setOperator(operator3, true); - - staking.setStake(operator1, 100 ether); - staking.setStake(operator2, 1000 ether); - staking.setStake(operator3, 1 wei); - - manager = new ExposureManager(address(staking)); - - nativeAsset = Types.Asset(Types.AssetKind.Native, address(0)); - erc20Asset = Types.Asset(Types.AssetKind.ERC20, makeAddr("token")); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // BOUNDARY VALUE TESTS (0, 1, 9999, 10000) - // ═══════════════════════════════════════════════════════════════════════════ - - function test_Exposure_BoundaryZero_RejectedByRequirement() public { - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](1); - requirements[0] = Types.AssetSecurityRequirement({ - asset: nativeAsset, - minExposureBps: 1, // Minimum is 0.01% - maxExposureBps: 10_000 - }); - - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](1); - commitments[0] = Types.AssetSecurityCommitment({ - asset: nativeAsset, - exposureBps: 0 // Zero exposure - }); - - (bool valid, ExposureTypes.CommitmentValidationResult memory result) = - manager.validateCommitments(operator1, requirements, commitments); - - assertFalse(valid); - assertEq(result.reason, "Commitment below minimum"); - } - - function test_Exposure_BoundaryOne_MinimumValid() public { - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](1); - requirements[0] = - Types.AssetSecurityRequirement({ asset: nativeAsset, minExposureBps: 1, maxExposureBps: 10_000 }); - - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](1); - commitments[0] = Types.AssetSecurityCommitment({ - asset: nativeAsset, - exposureBps: 1 // Minimum 0.01% - }); - - (bool valid,) = manager.validateCommitments(operator1, requirements, commitments); - assertTrue(valid); - } - - function test_Exposure_Boundary9999_JustUnderMax() public { - vm.prank(operator1); - manager.setAssetExposureLimit(nativeAsset, 10_000, 5000, true); - - (bool canAccept, uint16 limit) = manager.canAcceptExposure(operator1, nativeAsset, 9999); - assertTrue(canAccept); - assertEq(limit, 10_000); - } - - function test_Exposure_Boundary10000_FullExposure() public { - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](1); - requirements[0] = - Types.AssetSecurityRequirement({ asset: nativeAsset, minExposureBps: 1, maxExposureBps: 10_000 }); - - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](1); - commitments[0] = Types.AssetSecurityCommitment({ - asset: nativeAsset, - exposureBps: 10_000 // 100% - }); - - (bool valid,) = manager.validateCommitments(operator1, requirements, commitments); - assertTrue(valid); - } - - function test_Exposure_Boundary10001_ExceedsMax() public { - vm.prank(operator1); - vm.expectRevert(); - manager.setAssetExposureLimit(nativeAsset, 10_001, 5000, true); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // LARGE VALUE / OVERFLOW TESTS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_ExposedAmount_LargeStake_NoOverflow() public { - // Set up operator with max uint128 stake - address bigOperator = makeAddr("bigOperator"); - staking.setOperator(bigOperator, true); - staking.setStake(bigOperator, type(uint128).max); - - (uint256 delegated, uint256 exposed) = manager.calculateExposedAmount(bigOperator, nativeAsset, 10_000); - - assertEq(delegated, type(uint128).max); - assertEq(exposed, type(uint128).max); // 100% exposure - } - - function test_ExposedAmount_LargeStake_HalfExposure() public { - address bigOperator = makeAddr("bigOperator"); - staking.setOperator(bigOperator, true); - staking.setStake(bigOperator, type(uint128).max); - - (uint256 delegated, uint256 exposed) = manager.calculateExposedAmount(bigOperator, nativeAsset, 5000); - - assertEq(delegated, type(uint128).max); - assertEq(exposed, type(uint128).max / 2); // 50% exposure - } - - function test_CalculatorLib_LargeValues_NoOverflow() public pure { - uint256 largeAmount = type(uint128).max; - - // Should not overflow - uint256 exposed = ExposureCalculator.calculateExposedAmount(largeAmount, 10_000); - assertEq(exposed, largeAmount); - - exposed = ExposureCalculator.calculateExposedAmount(largeAmount, 5000); - assertEq(exposed, largeAmount / 2); - - exposed = ExposureCalculator.calculateExposedAmount(largeAmount, 1); - assertEq(exposed, largeAmount / 10_000); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // TINY STAKE / ROUNDING TESTS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_ExposedAmount_TinyStake_RoundsDown() public { - // operator3 has 1 wei stake - (uint256 delegated, uint256 exposed) = manager.calculateExposedAmount(operator3, nativeAsset, 5000); - - assertEq(delegated, 1); - assertEq(exposed, 0); // 1 * 5000 / 10000 = 0 (rounds down) - } - - function test_ExposedAmount_TinyStake_FullExposure() public { - (uint256 delegated, uint256 exposed) = manager.calculateExposedAmount(operator3, nativeAsset, 10_000); - - assertEq(delegated, 1); - assertEq(exposed, 1); // 100% of 1 wei = 1 wei - } - - function test_CalculatorLib_SmallValuesRounding() public pure { - // 1 wei with 1 bps (0.01%) = 0 (rounds down) - assertEq(ExposureCalculator.calculateExposedAmount(1, 1), 0); - - // 10000 wei with 1 bps = 1 wei - assertEq(ExposureCalculator.calculateExposedAmount(10_000, 1), 1); - - // 99 with 100 bps (1%) = 0 (rounds down) - assertEq(ExposureCalculator.calculateExposedAmount(99, 100), 0); - - // 100 with 100 bps (1%) = 1 - assertEq(ExposureCalculator.calculateExposedAmount(100, 100), 1); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // MULTI-OPERATOR SCENARIOS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_MultiOperator_DifferentLimits_Independent() public { - // Each operator sets different limits - vm.prank(operator1); - manager.setAssetExposureLimit(nativeAsset, 2500, 1000, true); // Max 25% - - vm.prank(operator2); - manager.setAssetExposureLimit(nativeAsset, 5000, 2500, true); // Max 50% - - vm.prank(operator3); - manager.setAssetExposureLimit(nativeAsset, 10_000, 5000, true); // Max 100% - - // Verify each operator's limit is independent - (bool canAccept1,) = manager.canAcceptExposure(operator1, nativeAsset, 3000); - (bool canAccept2,) = manager.canAcceptExposure(operator2, nativeAsset, 3000); - (bool canAccept3,) = manager.canAcceptExposure(operator3, nativeAsset, 3000); - - assertFalse(canAccept1); // 30% exceeds 25% limit - assertTrue(canAccept2); // 30% within 50% limit - assertTrue(canAccept3); // 30% within 100% limit - } - - function test_MultiOperator_SameAsset_DifferentExposures() public { - // All operators registered with different stakes - // Simulate weighted exposure calculation - - uint256[] memory delegations = new uint256[](3); - delegations[0] = 100 ether; // operator1 - delegations[1] = 1000 ether; // operator2 - delegations[2] = 50 ether; // operator3 - - uint16[] memory exposures = new uint16[](3); - exposures[0] = 5000; // 50% - exposures[1] = 2500; // 25% - exposures[2] = 10_000; // 100% - - uint16 weighted = ExposureCalculator.calculateWeightedExposure(delegations, exposures); - - // Expected: (100*50 + 1000*25 + 50*100) / 1150 = (5000 + 25000 + 5000) / 1150 = 30.43% - assertEq(weighted, 3043); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // MULTI-ASSET SCENARIOS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_MultiAsset_DifferentLimitsPerAsset() public { - Types.Asset memory asset2 = Types.Asset(Types.AssetKind.ERC20, makeAddr("token2")); - Types.Asset memory asset3 = Types.Asset(Types.AssetKind.ERC20, makeAddr("token3")); - - vm.startPrank(operator1); - manager.setAssetExposureLimit(nativeAsset, 5000, 2500, true); // Native: 50% - manager.setAssetExposureLimit(erc20Asset, 3000, 1500, true); // Token1: 30% - manager.setAssetExposureLimit(asset2, 10_000, 5000, true); // Token2: 100% - // asset3 has no limit set - vm.stopPrank(); - - (bool canAccept1,) = manager.canAcceptExposure(operator1, nativeAsset, 4000); - (bool canAccept2,) = manager.canAcceptExposure(operator1, erc20Asset, 4000); - (bool canAccept3,) = manager.canAcceptExposure(operator1, asset2, 4000); - (bool canAccept4,) = manager.canAcceptExposure(operator1, asset3, 4000); - - assertTrue(canAccept1); // 40% < 50% - assertFalse(canAccept2); // 40% > 30% - assertTrue(canAccept3); // 40% < 100% - assertTrue(canAccept4); // No limit, defaults to 100% - } - - function test_MultiAsset_BatchSet_AllApplied() public { - ExposureTypes.OperatorAssetExposureLimit[] memory limits = new ExposureTypes.OperatorAssetExposureLimit[](3); - - limits[0] = ExposureTypes.OperatorAssetExposureLimit({ - asset: nativeAsset, maxExposureBps: 5000, defaultExposureBps: 2500, enabled: true - }); - - limits[1] = ExposureTypes.OperatorAssetExposureLimit({ - asset: erc20Asset, maxExposureBps: 3000, defaultExposureBps: 1500, enabled: true - }); - - limits[2] = ExposureTypes.OperatorAssetExposureLimit({ - asset: Types.Asset(Types.AssetKind.ERC20, makeAddr("token2")), - maxExposureBps: 10_000, - defaultExposureBps: 5000, - enabled: true - }); - - vm.prank(operator1); - manager.batchSetAssetExposureLimits(limits); - - // Verify all were set - ExposureTypes.OperatorAssetExposureLimit memory l1 = manager.getAssetExposureLimit(operator1, nativeAsset); - ExposureTypes.OperatorAssetExposureLimit memory l2 = manager.getAssetExposureLimit(operator1, erc20Asset); - - assertEq(l1.maxExposureBps, 5000); - assertEq(l2.maxExposureBps, 3000); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // GLOBAL VS PER-ASSET LIMIT PRECEDENCE - // ═══════════════════════════════════════════════════════════════════════════ - - function test_GlobalLimit_AppliesWhenNoPerAsset() public { - vm.prank(operator1); - manager.setOperatorExposureConfig(3000, false); // 30% global - - // No per-asset limit set - (bool canAccept, uint16 limit) = manager.canAcceptExposure(operator1, nativeAsset, 2500); - - assertTrue(canAccept); - assertEq(limit, 3000); - } - - function test_PerAssetLimit_OverridesGlobal() public { - vm.startPrank(operator1); - manager.setOperatorExposureConfig(3000, false); // 30% global - manager.setAssetExposureLimit(nativeAsset, 5000, 2500, true); // 50% per-asset - vm.stopPrank(); - - (bool canAccept, uint16 limit) = manager.canAcceptExposure(operator1, nativeAsset, 4000); - - assertTrue(canAccept); // Would fail if using global 30% - assertEq(limit, 5000); - } - - function test_ExplicitApprovalRequired_NoLimit_StillAllowsIfNoGlobal() public { - vm.prank(operator1); - manager.setOperatorExposureConfig(0, true); // Require explicit approval - - // When requireExplicitApproval is true but no limits are set, - // the default behavior returns MAX_EXPOSURE_BPS (100%) - // The requireExplicitApproval flag affects validation at the service level - (bool canAccept, uint16 limit) = manager.canAcceptExposure(operator1, nativeAsset, 5000); - - // Without per-asset limit, defaults to max (100%) - assertTrue(canAccept); - assertEq(limit, 10_000); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // SLASHING INTEGRATION TESTS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_SlashingLib_EffectiveSlashBps_WithExposure() public pure { - uint16 slashBps = 10_000; - - // 50% exposure - uint16 effective = SlashingLib.calculateEffectiveSlashBps(slashBps, 5000); - assertEq(effective, 5000); - - // 25% exposure - effective = SlashingLib.calculateEffectiveSlashBps(slashBps, 2500); - assertEq(effective, 2500); - - // 100% exposure - effective = SlashingLib.calculateEffectiveSlashBps(slashBps, 10_000); - assertEq(effective, 10_000); - - // 1% exposure - effective = SlashingLib.calculateEffectiveSlashBps(slashBps, 100); - assertEq(effective, 100); - } - - function test_SlashingLib_EffectiveSlashBps_ZeroExposure() public pure { - uint16 effective = SlashingLib.calculateEffectiveSlashBps(10_000, 0); - assertEq(effective, 0); - } - - function test_SlashingLib_CapSlashBps() public pure { - // Slash 50% with 100% max = 50% - uint16 capped = SlashingLib.capSlashBps(5000, 10_000); - assertEq(capped, 5000); - - // Slash 120% with 100% max = 100% (capped) - capped = SlashingLib.capSlashBps(12_000, 10_000); - assertEq(capped, 10_000); - - // Slash 50% with 25% max = 25% (capped) - capped = SlashingLib.capSlashBps(5000, 2500); - assertEq(capped, 2500); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // REWARD DISTRIBUTION TESTS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_RewardShare_ProportionalToExposure() public pure { - // 3 operators with different exposures - uint256 totalReward = 100 ether; - uint256 totalExposed = 200 ether; // Sum of all exposed amounts - - // Operator1: 100 ether delegated, 50% exposure = 50 ether exposed - uint256 share1 = ExposureCalculator.calculateRewardShare(100 ether, 5000, totalReward, totalExposed); - assertEq(share1, 25 ether); // 50/200 * 100 = 25 ether - - // Operator2: 200 ether delegated, 50% exposure = 100 ether exposed - uint256 share2 = ExposureCalculator.calculateRewardShare(200 ether, 5000, totalReward, totalExposed); - assertEq(share2, 50 ether); // 100/200 * 100 = 50 ether - - // Operator3: 100 ether delegated, 50% exposure = 50 ether exposed - uint256 share3 = ExposureCalculator.calculateRewardShare(100 ether, 5000, totalReward, totalExposed); - assertEq(share3, 25 ether); // 50/200 * 100 = 25 ether - - // Total shares = 100 ether (all rewards distributed) - assertEq(share1 + share2 + share3, totalReward); - } - - function test_RewardShare_HigherExposure_HigherReward() public pure { - uint256 totalReward = 100 ether; - - // Same delegation, different exposure - uint256 delegation = 100 ether; - - // Low exposure operator - uint256 lowExposed = ExposureCalculator.calculateExposedAmount(delegation, 1000); // 10% - // High exposure operator - uint256 highExposed = ExposureCalculator.calculateExposedAmount(delegation, 5000); // 50% - - uint256 totalExposed = lowExposed + highExposed; // 10 + 50 = 60 ether - - uint256 lowShare = ExposureCalculator.calculateRewardShare(delegation, 1000, totalReward, totalExposed); - uint256 highShare = ExposureCalculator.calculateRewardShare(delegation, 5000, totalReward, totalExposed); - - // High exposure should get approximately 5x the reward (allow for small rounding) - assertApproxEqAbs(highShare, lowShare * 5, 10); // Allow 10 wei rounding error - assertGt(highShare, lowShare); // High exposure gets more - } - - // ═══════════════════════════════════════════════════════════════════════════ - // DISABLED ASSET SCENARIOS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_DisabledAsset_LimitStillApplies() public { - vm.prank(operator1); - manager.setAssetExposureLimit(nativeAsset, 5000, 2500, false); // Disabled - - ExposureTypes.OperatorAssetExposureLimit memory limit = manager.getAssetExposureLimit(operator1, nativeAsset); - - assertFalse(limit.enabled); - assertEq(limit.maxExposureBps, 5000); // Limit still stored - } - - // ═══════════════════════════════════════════════════════════════════════════ - // MOCK STAKING COVERAGE (unused helpers) - // ═══════════════════════════════════════════════════════════════════════════ - - function test_MockStakingEdge_HelperCoverage() public { - address tempOperator = makeAddr("tempOperator"); - staking.setOperator(tempOperator, true); - staking.setStake(tempOperator, 42 ether); - staking.setDelegatedStake(tempOperator, 84 ether); - - assertTrue(staking.isOperator(tempOperator)); - assertTrue(staking.isOperatorActive(tempOperator)); - assertEq(staking.getOperatorStake(tempOperator), 42 ether); - assertEq(staking.getOperatorSelfStake(tempOperator), 42 ether); - assertEq(staking.getOperatorDelegatedStake(tempOperator), 84 ether); - assertEq(staking.getDelegation(tempOperator, operator1), 0); - assertEq(staking.getTotalDelegation(tempOperator), 0); - assertEq(staking.minOperatorStake(), 0); - assertTrue(staking.meetsStakeRequirement(tempOperator, 1 ether)); - assertEq(staking.slashForBlueprint(tempOperator, 1, 2, 5000, keccak256("bp-slash")), 5000); - assertEq(staking.slash(tempOperator, 3, 4000, keccak256("plain-slash")), 4000); - assertFalse(staking.isSlasher(tempOperator)); - - // The reward notifiers are no-ops but should remain callable - staking.notifyRewardForBlueprint(tempOperator, 1, 1, 1 ether); - staking.notifyReward(tempOperator, 1, 1 ether); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // EMPTY / ZERO SCENARIOS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_EmptyRequirements_EmptyCommitments_Valid() public view { - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](0); - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](0); - - (bool valid,) = manager.validateCommitments(operator1, requirements, commitments); - assertTrue(valid); - } - - function test_WeightedExposure_AllZeroDelegations() public pure { - uint256[] memory delegations = new uint256[](3); - delegations[0] = 0; - delegations[1] = 0; - delegations[2] = 0; - - uint16[] memory exposures = new uint16[](3); - exposures[0] = 5000; - exposures[1] = 5000; - exposures[2] = 5000; - - uint16 weighted = ExposureCalculator.calculateWeightedExposure(delegations, exposures); - assertEq(weighted, 0); // Avoid div by zero, return 0 - } - - function test_TotalExposedValue_AllZero() public pure { - uint256[] memory delegations = new uint256[](3); - uint16[] memory exposures = new uint16[](3); - - uint256 total = ExposureCalculator.calculateTotalExposedValue(delegations, exposures); - assertEq(total, 0); - } -} - -/// @title ExposureFuzzTest -/// @notice Fuzz testing for exposure calculations -contract ExposureFuzzTest is Test { - function testFuzz_CalculateExposedAmount(uint256 delegation, uint16 exposureBps) public pure { - // Bound inputs to reasonable ranges - delegation = bound(delegation, 0, type(uint128).max); - exposureBps = uint16(bound(uint256(exposureBps), 0, 10_000)); - - uint256 exposed = ExposureCalculator.calculateExposedAmount(delegation, exposureBps); - - // Verify invariants - assertLe(exposed, delegation); // Exposed <= Delegated - if (exposureBps == 10_000) { - assertEq(exposed, delegation); // 100% exposure = full amount - } - if (exposureBps == 0) { - assertEq(exposed, 0); // 0% exposure = 0 - } - } - - function testFuzz_CalculateSlashAmount(uint256 delegation, uint16 exposureBps, uint16 slashBps) public pure { - delegation = bound(delegation, 0, type(uint128).max); - exposureBps = uint16(bound(uint256(exposureBps), 0, 10_000)); - slashBps = uint16(bound(uint256(slashBps), 0, 10_000)); - - uint256 slashAmount = ExposureCalculator.calculateSlashAmount(delegation, exposureBps, slashBps); - uint256 maxSlashable = ExposureCalculator.calculateMaxSlashable(delegation, exposureBps); - - // Slash amount should never exceed max slashable - assertLe(slashAmount, maxSlashable); - assertLe(slashAmount, delegation); - } - - function testFuzz_WeightedExposure_SingleElement(uint256 delegation, uint16 exposureBps) public pure { - delegation = bound(delegation, 1, type(uint128).max); - exposureBps = uint16(bound(uint256(exposureBps), 0, 10_000)); - - uint256[] memory delegations = new uint256[](1); - delegations[0] = delegation; - - uint16[] memory exposures = new uint16[](1); - exposures[0] = exposureBps; - - uint16 weighted = ExposureCalculator.calculateWeightedExposure(delegations, exposures); - - // With single element, weighted should equal the exposure - assertEq(weighted, exposureBps); - } - - function testFuzz_RewardShare_SumToTotal( - uint256 totalReward, - uint256 delegation1, - uint256 delegation2, - uint16 exposure1, - uint16 exposure2 - ) - public - pure - { - totalReward = bound(totalReward, 0, type(uint128).max); - delegation1 = bound(delegation1, 1, type(uint64).max); - delegation2 = bound(delegation2, 1, type(uint64).max); - exposure1 = uint16(bound(uint256(exposure1), 1, 10_000)); - exposure2 = uint16(bound(uint256(exposure2), 1, 10_000)); - - uint256 exposed1 = ExposureCalculator.calculateExposedAmount(delegation1, exposure1); - uint256 exposed2 = ExposureCalculator.calculateExposedAmount(delegation2, exposure2); - uint256 totalExposed = exposed1 + exposed2; - - if (totalExposed > 0) { - uint256 share1 = ExposureCalculator.calculateRewardShare(delegation1, exposure1, totalReward, totalExposed); - uint256 share2 = ExposureCalculator.calculateRewardShare(delegation2, exposure2, totalReward, totalExposed); - - // Sum of shares should approximately equal total (may have small rounding error) - assertLe(share1 + share2, totalReward); - // Allow for rounding error of at most 2 wei - assertGe(share1 + share2 + 2, totalReward); - } - } - - function testFuzz_SlashingLib_EffectiveSlashBps(uint16 slashBps, uint16 exposureBps) public pure { - slashBps = uint16(bound(uint256(slashBps), 0, 10_000)); - exposureBps = uint16(bound(uint256(exposureBps), 0, 10_000)); - - uint16 effective = SlashingLib.calculateEffectiveSlashBps(slashBps, exposureBps); - - assertLe(effective, slashBps); - if (exposureBps == 10_000) { - assertEq(effective, slashBps); - } - } - - function testFuzz_IsValidExposure(uint16 exposureBps) public pure { - bool valid = ExposureCalculator.isValidExposure(exposureBps); - - if (exposureBps >= 1 && exposureBps <= 10_000) { - assertTrue(valid); - } else { - assertFalse(valid); - } - } - - function testFuzz_ClampExposure(uint16 exposureBps) public pure { - uint16 clamped = ExposureCalculator.clampExposure(exposureBps); - - assertGe(clamped, 1); // Min - assertLe(clamped, 10_000); // Max - - if (exposureBps >= 1 && exposureBps <= 10_000) { - assertEq(clamped, exposureBps); // Unchanged if valid - } - } -} diff --git a/test/exposure/ExposureManager.t.sol b/test/exposure/ExposureManager.t.sol deleted file mode 100644 index 790092c0..00000000 --- a/test/exposure/ExposureManager.t.sol +++ /dev/null @@ -1,640 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.26; - -import "forge-std/Test.sol"; -import { ExposureManager } from "../../src/exposure/ExposureManager.sol"; -import { ExposureTypes } from "../../src/exposure/ExposureTypes.sol"; -import { ExposureCalculator } from "../../src/exposure/ExposureCalculator.sol"; -import { MockPriceOracle } from "./MockPriceOracle.sol"; -import { Types } from "../../src/libraries/Types.sol"; -import { IStaking } from "../../src/interfaces/IStaking.sol"; - -/// @notice Mock staking contract for testing -contract MockStaking is IStaking { - mapping(address => bool) public operators; - mapping(address => uint256) public stakes; - mapping(address => uint256) public delegatedStakes; - - function setOperator(address operator, bool isOp) external { - operators[operator] = isOp; - } - - function setStake(address operator, uint256 amount) external { - stakes[operator] = amount; - } - - function setDelegatedStake(address operator, uint256 amount) external { - delegatedStakes[operator] = amount; - } - - function isOperator(address account) external view returns (bool) { - return operators[account]; - } - - function isOperatorActive(address) external pure returns (bool) { - return true; - } - - function getOperatorStake(address operator) external view returns (uint256) { - return stakes[operator]; - } - - function getOperatorSelfStake(address operator) external view returns (uint256) { - return stakes[operator]; - } - - function getOperatorDelegatedStake(address operator) external view returns (uint256) { - return delegatedStakes[operator]; - } - - function getOperatorDelegatedStakeForAsset(address operator, Types.Asset calldata) external view returns (uint256) { - return delegatedStakes[operator]; - } - - function getOperatorStakeForAsset(address operator, Types.Asset calldata) external view returns (uint256) { - return stakes[operator]; - } - - function getDelegation(address, address) external pure returns (uint256) { - return 0; - } - - function getTotalDelegation(address) external pure returns (uint256) { - return 0; - } - - function minOperatorStake() external pure returns (uint256) { - return 0; - } - - function meetsStakeRequirement(address, uint256) external pure returns (bool) { - return true; - } - - function slashForBlueprint(address, uint64, uint64, uint16 slashBps, bytes32) external pure returns (uint256) { - return slashBps; - } - - function slashForService( - address, - uint64, - uint64, - Types.AssetSecurityCommitment[] calldata, - uint16 slashBps, - bytes32 - ) - external - pure - returns (uint256) - { - return slashBps; - } - - function slash(address, uint64, uint16 slashBps, bytes32) external pure returns (uint256) { - return slashBps; - } - - function isSlasher(address) external pure returns (bool) { - return false; - } - - function notifyRewardForBlueprint(address, uint64, uint64, uint256) external { } - - function notifyReward(address, uint64, uint256) external { } - - function addBlueprintForOperator(address, uint64) external override { } - function removeBlueprintForOperator(address, uint64) external override { } - - // M-9 FIX: Pending slash tracking (no-op for mock) - function incrementPendingSlash(address) external override { } - function decrementPendingSlash(address) external override { } - - function getPendingSlashCount(address) external pure override returns (uint64) { - return 0; - } -} - -/// @title ExposureManagerTest -/// @notice Tests for the ExposureManager contract -contract ExposureManagerTest is Test { - ExposureManager public manager; - MockStaking public staking; - - address public operator1; - address public operator2; - address public operator3; - - address public token1; - address public token2; - - Types.Asset public nativeAsset; - Types.Asset public erc20Asset1; - Types.Asset public erc20Asset2; - - function setUp() public { - // Create mock accounts - operator1 = makeAddr("operator1"); - operator2 = makeAddr("operator2"); - operator3 = makeAddr("operator3"); - - token1 = makeAddr("token1"); - token2 = makeAddr("token2"); - - // Deploy mock staking - staking = new MockStaking(); - - // Setup operators - staking.setOperator(operator1, true); - staking.setOperator(operator2, true); - staking.setOperator(operator3, true); - - // Setup stakes - staking.setStake(operator1, 100 ether); - staking.setStake(operator2, 200 ether); - staking.setStake(operator3, 50 ether); - - staking.setDelegatedStake(operator1, 50 ether); - staking.setDelegatedStake(operator2, 100 ether); - - // Deploy exposure manager - manager = new ExposureManager(address(staking)); - - // Setup assets - nativeAsset = Types.Asset(Types.AssetKind.Native, address(0)); - erc20Asset1 = Types.Asset(Types.AssetKind.ERC20, token1); - erc20Asset2 = Types.Asset(Types.AssetKind.ERC20, token2); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // OPERATOR CONFIGURATION TESTS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_SetAssetExposureLimit() public { - vm.prank(operator1); - manager.setAssetExposureLimit(nativeAsset, 5000, 2500, true); - - ExposureTypes.OperatorAssetExposureLimit memory limit = manager.getAssetExposureLimit(operator1, nativeAsset); - - assertEq(limit.maxExposureBps, 5000); - assertEq(limit.defaultExposureBps, 2500); - assertTrue(limit.enabled); - } - - function test_SetAssetExposureLimit_MultipleAssets() public { - vm.startPrank(operator1); - manager.setAssetExposureLimit(nativeAsset, 5000, 2500, true); - manager.setAssetExposureLimit(erc20Asset1, 3000, 1000, true); - manager.setAssetExposureLimit(erc20Asset2, 10_000, 5000, true); - vm.stopPrank(); - - ExposureTypes.OperatorAssetExposureLimit memory nativeLimit = - manager.getAssetExposureLimit(operator1, nativeAsset); - ExposureTypes.OperatorAssetExposureLimit memory erc20Limit1 = - manager.getAssetExposureLimit(operator1, erc20Asset1); - ExposureTypes.OperatorAssetExposureLimit memory erc20Limit2 = - manager.getAssetExposureLimit(operator1, erc20Asset2); - - assertEq(nativeLimit.maxExposureBps, 5000); - assertEq(erc20Limit1.maxExposureBps, 3000); - assertEq(erc20Limit2.maxExposureBps, 10_000); - } - - function test_SetAssetExposureLimit_InvalidMaxExceeds100Percent() public { - vm.prank(operator1); - vm.expectRevert(); - manager.setAssetExposureLimit(nativeAsset, 10_001, 5000, true); - } - - function test_SetAssetExposureLimit_InvalidDefaultExceedsMax() public { - vm.prank(operator1); - vm.expectRevert(); - manager.setAssetExposureLimit(nativeAsset, 5000, 6000, true); - } - - function test_BatchSetAssetExposureLimits() public { - ExposureTypes.OperatorAssetExposureLimit[] memory limits = new ExposureTypes.OperatorAssetExposureLimit[](2); - - limits[0] = ExposureTypes.OperatorAssetExposureLimit({ - asset: nativeAsset, maxExposureBps: 5000, defaultExposureBps: 2500, enabled: true - }); - - limits[1] = ExposureTypes.OperatorAssetExposureLimit({ - asset: erc20Asset1, maxExposureBps: 3000, defaultExposureBps: 1000, enabled: true - }); - - vm.prank(operator1); - manager.batchSetAssetExposureLimits(limits); - - ExposureTypes.OperatorAssetExposureLimit memory nativeLimit = - manager.getAssetExposureLimit(operator1, nativeAsset); - ExposureTypes.OperatorAssetExposureLimit memory erc20Limit = - manager.getAssetExposureLimit(operator1, erc20Asset1); - - assertEq(nativeLimit.maxExposureBps, 5000); - assertEq(erc20Limit.maxExposureBps, 3000); - } - - function test_SetOperatorExposureConfig() public { - vm.prank(operator1); - manager.setOperatorExposureConfig(7500, true); - - ExposureTypes.OperatorExposureConfig memory config = manager.getOperatorExposureConfig(operator1); - - assertEq(config.globalMaxExposureBps, 7500); - assertTrue(config.requireExplicitApproval); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // COMMITMENT VALIDATION TESTS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_ValidateCommitments_Success() public { - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](1); - requirements[0] = - Types.AssetSecurityRequirement({ asset: nativeAsset, minExposureBps: 1000, maxExposureBps: 5000 }); - - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](1); - commitments[0] = Types.AssetSecurityCommitment({ asset: nativeAsset, exposureBps: 2500 }); - - (bool valid, ExposureTypes.CommitmentValidationResult memory result) = - manager.validateCommitments(operator1, requirements, commitments); - - assertTrue(valid); - assertTrue(result.valid); - } - - function test_ValidateCommitments_BelowMinimum() public { - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](1); - requirements[0] = - Types.AssetSecurityRequirement({ asset: nativeAsset, minExposureBps: 3000, maxExposureBps: 5000 }); - - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](1); - commitments[0] = Types.AssetSecurityCommitment({ - asset: nativeAsset, - exposureBps: 2000 // Below minimum - }); - - (bool valid, ExposureTypes.CommitmentValidationResult memory result) = - manager.validateCommitments(operator1, requirements, commitments); - - assertFalse(valid); - assertEq(result.reason, "Commitment below minimum"); - } - - function test_ValidateCommitments_AboveMaximum() public { - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](1); - requirements[0] = - Types.AssetSecurityRequirement({ asset: nativeAsset, minExposureBps: 1000, maxExposureBps: 3000 }); - - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](1); - commitments[0] = Types.AssetSecurityCommitment({ - asset: nativeAsset, - exposureBps: 4000 // Above maximum - }); - - (bool valid, ExposureTypes.CommitmentValidationResult memory result) = - manager.validateCommitments(operator1, requirements, commitments); - - assertFalse(valid); - assertEq(result.reason, "Commitment above maximum"); - } - - function test_ValidateCommitments_ExceedsOperatorLimit() public { - // Set operator's own limit - vm.prank(operator1); - manager.setAssetExposureLimit(nativeAsset, 2000, 1000, true); - - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](1); - requirements[0] = Types.AssetSecurityRequirement({ - asset: nativeAsset, - minExposureBps: 1000, - maxExposureBps: 5000 // Service allows up to 50% - }); - - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](1); - commitments[0] = Types.AssetSecurityCommitment({ - asset: nativeAsset, - exposureBps: 3000 // Within service bounds but exceeds operator limit - }); - - (bool valid, ExposureTypes.CommitmentValidationResult memory result) = - manager.validateCommitments(operator1, requirements, commitments); - - assertFalse(valid); - assertEq(result.reason, "Exceeds operator limit"); - } - - function test_ValidateCommitments_MissingCommitment() public { - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](2); - requirements[0] = - Types.AssetSecurityRequirement({ asset: nativeAsset, minExposureBps: 1000, maxExposureBps: 5000 }); - requirements[1] = - Types.AssetSecurityRequirement({ asset: erc20Asset1, minExposureBps: 1000, maxExposureBps: 5000 }); - - // Only provide commitment for native asset - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](1); - commitments[0] = Types.AssetSecurityCommitment({ asset: nativeAsset, exposureBps: 2500 }); - - (bool valid, ExposureTypes.CommitmentValidationResult memory result) = - manager.validateCommitments(operator1, requirements, commitments); - - assertFalse(valid); - assertEq(result.reason, "Missing commitment for required asset"); - } - - function test_ValidateCommitments_UnexpectedCommitment() public { - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](1); - requirements[0] = - Types.AssetSecurityRequirement({ asset: nativeAsset, minExposureBps: 1000, maxExposureBps: 5000 }); - - // Provide commitments for both native and erc20 (unexpected) - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](2); - commitments[0] = Types.AssetSecurityCommitment({ asset: nativeAsset, exposureBps: 2500 }); - commitments[1] = Types.AssetSecurityCommitment({ asset: erc20Asset1, exposureBps: 2500 }); - - (bool valid, ExposureTypes.CommitmentValidationResult memory result) = - manager.validateCommitments(operator1, requirements, commitments); - - assertFalse(valid); - assertEq(result.reason, "Unexpected asset commitment"); - } - - function test_ValidateCommitments_NotOperator() public { - address notOperator = makeAddr("notOperator"); - - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](1); - requirements[0] = - Types.AssetSecurityRequirement({ asset: nativeAsset, minExposureBps: 1000, maxExposureBps: 5000 }); - - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](1); - commitments[0] = Types.AssetSecurityCommitment({ asset: nativeAsset, exposureBps: 2500 }); - - (bool valid, ExposureTypes.CommitmentValidationResult memory result) = - manager.validateCommitments(notOperator, requirements, commitments); - - assertFalse(valid); - assertEq(result.reason, "Not an operator"); - } - - function test_ValidateCommitments_NoDelegation() public { - // Set up an operator with no stake - address noStakeOperator = makeAddr("noStakeOperator"); - staking.setOperator(noStakeOperator, true); - staking.setStake(noStakeOperator, 0); - - Types.AssetSecurityRequirement[] memory requirements = new Types.AssetSecurityRequirement[](1); - requirements[0] = - Types.AssetSecurityRequirement({ asset: nativeAsset, minExposureBps: 1000, maxExposureBps: 5000 }); - - Types.AssetSecurityCommitment[] memory commitments = new Types.AssetSecurityCommitment[](1); - commitments[0] = Types.AssetSecurityCommitment({ asset: nativeAsset, exposureBps: 2500 }); - - (bool valid, ExposureTypes.CommitmentValidationResult memory result) = - manager.validateCommitments(noStakeOperator, requirements, commitments); - - assertFalse(valid); - assertEq(result.reason, "No delegation for asset"); - } - - // ═══════════════════════════════════════════════════════════════════════════ - // CAN ACCEPT EXPOSURE TESTS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_CanAcceptExposure_NoLimitSet() public view { - (bool canAccept, uint16 effectiveLimit) = manager.canAcceptExposure(operator1, nativeAsset, 5000); - - assertTrue(canAccept); - assertEq(effectiveLimit, 10_000); // Default 100% - } - - function test_CanAcceptExposure_WithinLimit() public { - vm.prank(operator1); - manager.setAssetExposureLimit(nativeAsset, 5000, 2500, true); - - (bool canAccept, uint16 effectiveLimit) = manager.canAcceptExposure(operator1, nativeAsset, 4000); - - assertTrue(canAccept); - assertEq(effectiveLimit, 5000); - } - - function test_CanAcceptExposure_ExceedsLimit() public { - vm.prank(operator1); - manager.setAssetExposureLimit(nativeAsset, 5000, 2500, true); - - (bool canAccept, uint16 effectiveLimit) = manager.canAcceptExposure(operator1, nativeAsset, 6000); - - assertFalse(canAccept); - assertEq(effectiveLimit, 5000); - } - - function test_CanAcceptExposure_UsesGlobalLimit() public { - vm.prank(operator1); - manager.setOperatorExposureConfig(3000, false); - - (bool canAccept, uint16 effectiveLimit) = manager.canAcceptExposure(operator1, nativeAsset, 2500); - - assertTrue(canAccept); - assertEq(effectiveLimit, 3000); - } - - function test_CanAcceptExposure_PerAssetOverridesGlobal() public { - vm.startPrank(operator1); - manager.setOperatorExposureConfig(3000, false); - manager.setAssetExposureLimit(nativeAsset, 5000, 2500, true); - vm.stopPrank(); - - (bool canAccept, uint16 effectiveLimit) = manager.canAcceptExposure(operator1, nativeAsset, 4000); - - assertTrue(canAccept); - assertEq(effectiveLimit, 5000); // Uses per-asset, not global - } - - // ═══════════════════════════════════════════════════════════════════════════ - // EXPOSURE CALCULATION TESTS - // ═══════════════════════════════════════════════════════════════════════════ - - function test_CalculateExposedAmount() public view { - (uint256 delegated, uint256 exposed) = manager.calculateExposedAmount(operator1, nativeAsset, 5000); - - assertEq(delegated, 100 ether); // Operator1's stake - assertEq(exposed, 50 ether); // 50% of 100 ether - } - - function test_CalculateExposedAmount_FullExposure() public view { - (uint256 delegated, uint256 exposed) = manager.calculateExposedAmount(operator1, nativeAsset, 10_000); - - assertEq(delegated, 100 ether); - assertEq(exposed, 100 ether); // 100% - } - - function test_CalculateExposedAmount_MinimalExposure() public view { - (uint256 delegated, uint256 exposed) = manager.calculateExposedAmount(operator1, nativeAsset, 1); - - assertEq(delegated, 100 ether); - assertEq(exposed, 0.01 ether); // 0.01% - } -} - -/// @title ExposureCalculatorTest -/// @notice Tests for the ExposureCalculator library -contract ExposureCalculatorTest is Test { - function test_CalculateExposedAmount() public pure { - uint256 exposed = ExposureCalculator.calculateExposedAmount(100 ether, 5000); - assertEq(exposed, 50 ether); - } - - function test_CalculateExposedAmount_FullExposure() public pure { - uint256 exposed = ExposureCalculator.calculateExposedAmount(100 ether, 10_000); - assertEq(exposed, 100 ether); - } - - function test_CalculateExposedAmount_Zero() public pure { - uint256 exposed = ExposureCalculator.calculateExposedAmount(100 ether, 0); - assertEq(exposed, 0); - } - - function test_CalculateWeightedExposure() public pure { - uint256[] memory delegations = new uint256[](3); - delegations[0] = 100 ether; - delegations[1] = 200 ether; - delegations[2] = 100 ether; - - uint16[] memory exposures = new uint16[](3); - exposures[0] = 5000; // 50% - exposures[1] = 2500; // 25% - exposures[2] = 7500; // 75% - - // Weighted = (100*50 + 200*25 + 100*75) / 400 = (5000 + 5000 + 7500) / 400 = 43.75% - uint16 weighted = ExposureCalculator.calculateWeightedExposure(delegations, exposures); - assertEq(weighted, 4375); - } - - function test_CalculateWeightedExposure_Empty() public pure { - uint256[] memory delegations = new uint256[](0); - uint16[] memory exposures = new uint16[](0); - - uint16 weighted = ExposureCalculator.calculateWeightedExposure(delegations, exposures); - assertEq(weighted, 0); - } - - function test_CalculateSlashAmount() public pure { - // 100 ETH delegated, 50% exposure, 10% slash - uint256 slashAmount = ExposureCalculator.calculateSlashAmount(100 ether, 5000, 1000); - assertEq(slashAmount, 5 ether); // 10% of 50 ETH exposed = 5 ETH - } - - function test_CalculateSlashAmount_FullSlash() public pure { - // 100 ETH delegated, 25% exposure, 100% slash of exposed - uint256 slashAmount = ExposureCalculator.calculateSlashAmount(100 ether, 2500, 10_000); - assertEq(slashAmount, 25 ether); // 100% of 25 ETH exposed = 25 ETH - } - - function test_CalculateMaxSlashable() public pure { - uint256 maxSlash = ExposureCalculator.calculateMaxSlashable(100 ether, 3000); - assertEq(maxSlash, 30 ether); // 30% of 100 ETH - } - - function test_CalculateRewardShare() public pure { - // Operator has 50 ETH exposed out of total 200 ETH exposed - // Should get 25% of total rewards - uint256 share = ExposureCalculator.calculateRewardShare( - 100 ether, // delegated - 5000, // 50% exposure - 100 ether, // total reward - 200 ether // total exposed value - ); - assertEq(share, 25 ether); // 50 ETH / 200 ETH * 100 ETH reward - } - - function test_CalculateRewardShare_NoTotalExposure() public pure { - uint256 share = ExposureCalculator.calculateRewardShare(100 ether, 5000, 100 ether, 0); - assertEq(share, 0); - } - - function test_CalculateUSDWeightedExposure() public { - address[] memory tokens = new address[](2); - tokens[0] = address(0xAAA); - tokens[1] = address(0xBBB); - - uint256[] memory delegations = new uint256[](2); - delegations[0] = 10 ether; - delegations[1] = 5 ether; - - uint16[] memory exposures = new uint16[](2); - exposures[0] = 5000; - exposures[1] = 1000; - - MockPriceOracle oracle = new MockPriceOracle(); - oracle.setPrice(tokens[0], 2e18); // $2 per unit - oracle.setPrice(tokens[1], 1e18); // $1 per unit - - (uint16 weighted, uint256 totalUsd) = - ExposureCalculator.calculateUSDWeightedExposure(tokens, delegations, exposures, oracle); - - // USD values: token0 => 20, token1 => 5 - // Weighted = (50% * 20 + 10% * 5) / 25 = 42% (rounded down) - assertEq(weighted, 4200); - assertEq(totalUsd, 25e18); - } - - function test_CalculateUSDWeightedExposure_NoDelegations() public { - address[] memory tokens = new address[](0); - uint256[] memory delegations = new uint256[](0); - uint16[] memory exposures = new uint16[](0); - MockPriceOracle oracle = new MockPriceOracle(); - (uint16 weighted, uint256 totalUsd) = - ExposureCalculator.calculateUSDWeightedExposure(tokens, delegations, exposures, oracle); - assertEq(weighted, 0); - assertEq(totalUsd, 0); - } - - function test_CalculateTotalExposedValue() public pure { - uint256[] memory delegations = new uint256[](3); - delegations[0] = 100 ether; - delegations[1] = 200 ether; - delegations[2] = 50 ether; - - uint16[] memory exposures = new uint16[](3); - exposures[0] = 5000; // 50% - exposures[1] = 2500; // 25% - exposures[2] = 10_000; // 100% - - uint256 total = ExposureCalculator.calculateTotalExposedValue(delegations, exposures); - // 50 + 50 + 50 = 150 ETH - assertEq(total, 150 ether); - } - - function test_IsValidExposure() public pure { - assertTrue(ExposureCalculator.isValidExposure(1)); // MIN - assertTrue(ExposureCalculator.isValidExposure(5000)); // 50% - assertTrue(ExposureCalculator.isValidExposure(10_000)); // MAX - assertFalse(ExposureCalculator.isValidExposure(0)); // Below MIN - } - - function test_IsWithinBounds() public pure { - assertTrue(ExposureCalculator.isWithinBounds(5000, 1000, 8000)); - assertTrue(ExposureCalculator.isWithinBounds(1000, 1000, 8000)); // At min - assertTrue(ExposureCalculator.isWithinBounds(8000, 1000, 8000)); // At max - assertFalse(ExposureCalculator.isWithinBounds(500, 1000, 8000)); // Below min - assertFalse(ExposureCalculator.isWithinBounds(9000, 1000, 8000)); // Above max - } - - function test_ClampExposure() public pure { - assertEq(ExposureCalculator.clampExposure(0), 1); // Clamp up to MIN - assertEq(ExposureCalculator.clampExposure(5000), 5000); // No change - assertEq(ExposureCalculator.clampExposure(15_000), 10_000); // Clamp down to MAX - } - - function test_BuildCalculatedExposure() public pure { - Types.Asset memory asset = Types.Asset(Types.AssetKind.Native, address(0)); - - ExposureTypes.CalculatedExposure memory exposure = - ExposureCalculator.buildCalculatedExposure(address(0x123), asset, 100 ether, 5000, 1); - - assertEq(exposure.operator, address(0x123)); - assertEq(exposure.delegatedAmount, 100 ether); - assertEq(exposure.exposureBps, 5000); - assertEq(exposure.exposedAmount, 50 ether); - assertEq(exposure.serviceId, 1); - } -} diff --git a/test/exposure/MockPriceOracle.sol b/test/mocks/MockPriceOracle.sol similarity index 100% rename from test/exposure/MockPriceOracle.sol rename to test/mocks/MockPriceOracle.sol diff --git a/test/rewards/ServiceFeeDistributor.t.sol b/test/rewards/ServiceFeeDistributor.t.sol index 6a12c68c..a4e97a30 100644 --- a/test/rewards/ServiceFeeDistributor.t.sol +++ b/test/rewards/ServiceFeeDistributor.t.sol @@ -6,7 +6,7 @@ import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy import { BaseTest } from "../BaseTest.sol"; import { Types } from "../../src/libraries/Types.sol"; import { MockERC20 } from "../mocks/MockERC20.sol"; -import { MockPriceOracle } from "../exposure/MockPriceOracle.sol"; +import { MockPriceOracle } from "../mocks/MockPriceOracle.sol"; import { ServiceFeeDistributor } from "../../src/rewards/ServiceFeeDistributor.sol"; import { Errors } from "../../src/libraries/Errors.sol"; import { DelegationErrors } from "../../src/staking/DelegationErrors.sol"; diff --git a/test/rewards/ServiceFeeDistributorStreaming.t.sol b/test/rewards/ServiceFeeDistributorStreaming.t.sol index 9235144f..12a5a919 100644 --- a/test/rewards/ServiceFeeDistributorStreaming.t.sol +++ b/test/rewards/ServiceFeeDistributorStreaming.t.sol @@ -6,7 +6,7 @@ import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy import { BaseTest } from "../BaseTest.sol"; import { Types } from "../../src/libraries/Types.sol"; import { MockERC20 } from "../mocks/MockERC20.sol"; -import { MockPriceOracle } from "../exposure/MockPriceOracle.sol"; +import { MockPriceOracle } from "../mocks/MockPriceOracle.sol"; import { ServiceFeeDistributor } from "../../src/rewards/ServiceFeeDistributor.sol"; import { StreamingPaymentManager } from "../../src/rewards/StreamingPaymentManager.sol"; import { Errors } from "../../src/libraries/Errors.sol"; diff --git a/test/security/AuditFixesTest.t.sol b/test/security/AuditFixesTest.t.sol new file mode 100644 index 00000000..6470a9e4 --- /dev/null +++ b/test/security/AuditFixesTest.t.sol @@ -0,0 +1,143 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.26; + +import { BaseTest } from "../BaseTest.sol"; +import { Types } from "../../src/libraries/Types.sol"; +import { Errors } from "../../src/libraries/Errors.sol"; +import { ITangleServices } from "../../src/interfaces/ITangleServices.sol"; +import { ITangleSlashing } from "../../src/interfaces/ITangleSlashing.sol"; +import { ProtocolConfig } from "../../src/config/ProtocolConfig.sol"; + +/// @title AuditFixesTest +/// @notice Regression tests pinning behaviors fixed during the multi-subsystem audit. +/// Each test names the audit finding it backs up. If any of these reverts +/// silently in the future, the corresponding fix has rotted. +contract AuditFixesTest is BaseTest { + uint64 internal blueprintId; + + function setUp() public override { + super.setUp(); + vm.prank(developer); + blueprintId = tangle.createBlueprint(_blueprintDefinition("ipfs://audit", address(0))); + + _registerOperator(operator1, 5 ether); + _registerForBlueprint(operator1, blueprintId); + _registerOperator(operator2, 5 ether); + _registerForBlueprint(operator2, blueprintId); + } + + // ─────────────────────────────────────────────────────────────────────── + // svc-lc H-1: `expireServiceRequest` is reachable via the proxy. + // The `aa511c2` fix added the function to ITangleServices and the impl + // already existed, but the selector was never registered on + // TangleServicesFacet so the call routed through the unknown-selector + // fallback. This test would have failed with `UnknownSelector`. + // ─────────────────────────────────────────────────────────────────────── + function test_expireServiceRequest_reachableViaProxy() public { + address[] memory ops = new address[](1); + ops[0] = operator1; + vm.prank(user1); + uint64 requestId = tangle.requestService( + blueprintId, ops, "", new address[](0), 0, address(0), 0, Types.ConfidentialityPolicy.Any + ); + + // Push past the grace window and call the freshly-routed selector. + vm.warp(block.timestamp + ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD + 1); + ITangleServices(address(tangle)).expireServiceRequest(requestId); + + // Once expired, late approvals must revert (svc-lc M-1). + vm.expectRevert(); + vm.prank(operator1); + tangle.approveService(_approve(requestId)); + } + + // ─────────────────────────────────────────────────────────────────────── + // svc-lc M-1: approveService rejects requests past the grace window so an + // operator can't quietly activate a request the requester thought was + // cleanable via expireServiceRequest. + // ─────────────────────────────────────────────────────────────────────── + function test_approveService_revertsAfterGracePeriod() public { + address[] memory ops = new address[](1); + ops[0] = operator1; + vm.prank(user1); + uint64 requestId = tangle.requestService( + blueprintId, ops, "", new address[](0), 0, address(0), 0, Types.ConfidentialityPolicy.Any + ); + + vm.warp(block.timestamp + ProtocolConfig.REQUEST_EXPIRY_GRACE_PERIOD + 1); + vm.expectRevert(); + vm.prank(operator1); + tangle.approveService(_approve(requestId)); + } + + // ─────────────────────────────────────────────────────────────────────── + // svc-lc M-2: duplicate operator entries in a request are rejected at + // creation time. Without this, `req.operatorCount` exceeds the unique + // approver count and the request can never reach activation. + // ─────────────────────────────────────────────────────────────────────── + function test_requestService_duplicateOperators_reverts() public { + address[] memory ops = new address[](2); + ops[0] = operator1; + ops[1] = operator1; // duplicate + + vm.expectRevert(); + vm.prank(user1); + tangle.requestService( + blueprintId, ops, "", new address[](0), 0, address(0), 0, Types.ConfidentialityPolicy.Any + ); + } + + // ─────────────────────────────────────────────────────────────────────── + // svc-lc H-3: dynamic-membership service entrypoints must reject when the + // service has been terminated. Without these gates, a stale operator can + // schedule/execute exits and fire OperatorLeftService for a dead service, + // double-decrementing operator counts and confusing indexers. + // ─────────────────────────────────────────────────────────────────────── + function test_exitEntrypoints_revertOnTerminatedService() public { + address[] memory ops = new address[](1); + ops[0] = operator1; + vm.prank(user1); + uint64 requestId = tangle.requestService( + blueprintId, ops, "", new address[](0), 0, address(0), 0, Types.ConfidentialityPolicy.Any + ); + vm.prank(operator1); + tangle.approveService(_approve(requestId)); + uint64 serviceId = tangle.serviceCount() - 1; + + // Terminate the service. The status check on each exit entrypoint runs + // before any membership / authorisation gate, so even non-Dynamic + // services that would otherwise revert at a later gate must revert at + // the status check now. + vm.prank(user1); + tangle.terminateService(serviceId); + + vm.expectRevert(abi.encodeWithSelector(Errors.ServiceNotActive.selector, serviceId)); + vm.prank(operator1); + tangle.scheduleExit(serviceId); + + vm.expectRevert(abi.encodeWithSelector(Errors.ServiceNotActive.selector, serviceId)); + vm.prank(operator1); + tangle.leaveService(serviceId); + } + + // ─────────────────────────────────────────────────────────────────────── + // slash B-3: proposeSlash rejects bytes32(0) evidence so off-chain monitors + // keying off a non-zero evidence hash never see a zero-evidence slash. + // ─────────────────────────────────────────────────────────────────────── + function test_proposeSlash_revertsOnZeroEvidence() public { + // Stand up a minimal active service. + address[] memory ops = new address[](1); + ops[0] = operator1; + vm.prank(user1); + uint64 requestId = tangle.requestService( + blueprintId, ops, "", new address[](0), 0, address(0), 0, Types.ConfidentialityPolicy.Any + ); + vm.prank(operator1); + tangle.approveService(_approve(requestId)); + uint64 serviceId = tangle.serviceCount() - 1; + + vm.expectRevert(); + vm.prank(user1); + ITangleSlashing(address(tangle)).proposeSlash(serviceId, operator1, 100, bytes32(0)); + } +} diff --git a/test/tangle/ConfidentialityProtocol.t.sol b/test/tangle/ConfidentialityProtocol.t.sol index 44bf6410..fd996af3 100644 --- a/test/tangle/ConfidentialityProtocol.t.sol +++ b/test/tangle/ConfidentialityProtocol.t.sol @@ -131,7 +131,7 @@ contract ConfidentialityProtocolTest is BaseTest { function _signQuote(Types.QuoteDetails memory details, uint256 privateKey) internal view returns (bytes memory) { bytes32 quoteTypehash = keccak256( - "QuoteDetails(uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" + "QuoteDetails(address requester,uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" ); bytes32 domainSeparator = keccak256( abi.encode( @@ -145,6 +145,7 @@ contract ConfidentialityProtocolTest is BaseTest { bytes32 structHash = keccak256( abi.encode( quoteTypehash, + details.requester, details.blueprintId, details.ttlBlocks, details.totalCost, diff --git a/test/tangle/PerAssetExposureIntegration.t.sol b/test/tangle/PerAssetExposureIntegration.t.sol index 2b8fd93c..6e6026f3 100644 --- a/test/tangle/PerAssetExposureIntegration.t.sol +++ b/test/tangle/PerAssetExposureIntegration.t.sol @@ -6,7 +6,7 @@ import { ERC1967Proxy } from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy import { BaseTest } from "../BaseTest.sol"; import { Types } from "../../src/libraries/Types.sol"; import { MockERC20 } from "../mocks/MockERC20.sol"; -import { MockPriceOracle } from "../exposure/MockPriceOracle.sol"; +import { MockPriceOracle } from "../mocks/MockPriceOracle.sol"; import { ServiceFeeDistributor } from "../../src/rewards/ServiceFeeDistributor.sol"; import { SlashingLib } from "../../src/libraries/SlashingLib.sol"; import { IPriceOracle } from "../../src/oracles/interfaces/IPriceOracle.sol"; diff --git a/test/tangle/QuoteEdgeCases.t.sol b/test/tangle/QuoteEdgeCases.t.sol index 572aae38..306b9b06 100644 --- a/test/tangle/QuoteEdgeCases.t.sol +++ b/test/tangle/QuoteEdgeCases.t.sol @@ -459,8 +459,9 @@ contract QuoteEdgeCasesTest is BaseTest { bytes32 structHash = keccak256( abi.encode( keccak256( - "QuoteDetails(uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" + "QuoteDetails(address requester,uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" ), + details.requester, details.blueprintId, details.ttlBlocks, details.totalCost, diff --git a/test/tangle/QuoteExtension.t.sol b/test/tangle/QuoteExtension.t.sol index 48bceac1..620fc800 100644 --- a/test/tangle/QuoteExtension.t.sol +++ b/test/tangle/QuoteExtension.t.sol @@ -458,8 +458,9 @@ contract QuoteExtensionTest is BaseTest { bytes32 structHash = keccak256( abi.encode( keccak256( - "QuoteDetails(uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" + "QuoteDetails(address requester,uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" ), + details.requester, details.blueprintId, details.ttlBlocks, details.totalCost, diff --git a/test/tangle/QuotePaymentSplit.t.sol b/test/tangle/QuotePaymentSplit.t.sol index cd65fb1f..7799b83b 100644 --- a/test/tangle/QuotePaymentSplit.t.sol +++ b/test/tangle/QuotePaymentSplit.t.sol @@ -69,7 +69,7 @@ contract RevertingMetricsRecorder is IMetricsRecorder { contract QuotePaymentSplitTest is BaseTest { uint256 internal constant OPERATOR_PK = 0xA11CE; bytes32 private constant QUOTE_TYPEHASH = keccak256( - "QuoteDetails(uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" + "QuoteDetails(address requester,uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" ); RecordingMetrics internal metrics; @@ -175,6 +175,7 @@ contract QuotePaymentSplitTest is BaseTest { bytes32 structHash = keccak256( abi.encode( QUOTE_TYPEHASH, + details.requester, details.blueprintId, details.ttlBlocks, details.totalCost, diff --git a/test/tangle/QuoteVerification.t.sol b/test/tangle/QuoteVerification.t.sol index ade26294..40e0e53d 100644 --- a/test/tangle/QuoteVerification.t.sol +++ b/test/tangle/QuoteVerification.t.sol @@ -578,7 +578,7 @@ contract QuoteVerificationTest is BaseTest { returns (bytes memory) { bytes32 QUOTE_TYPEHASH = keccak256( - "QuoteDetails(uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" + "QuoteDetails(address requester,uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" ); bytes32 commitmentsHash = _hashSecurityCommitments(details.securityCommitments); bytes32 resourcesHash = _hashResourceCommitments(details.resourceCommitments); @@ -596,6 +596,7 @@ contract QuoteVerificationTest is BaseTest { bytes32 structHash = keccak256( abi.encode( QUOTE_TYPEHASH, + details.requester, details.blueprintId, details.ttlBlocks, details.totalCost, diff --git a/test/tangle/ResourceCommitments.t.sol b/test/tangle/ResourceCommitments.t.sol index fbb727f0..b3054bb9 100644 --- a/test/tangle/ResourceCommitments.t.sol +++ b/test/tangle/ResourceCommitments.t.sol @@ -225,7 +225,7 @@ contract ResourceCommitmentsTest is BaseTest { bytes32 resourcesHash = SignatureLib.hashResourceCommitments(details.resourceCommitments); bytes32 QUOTE_TYPEHASH = keccak256( - "QuoteDetails(uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" + "QuoteDetails(address requester,uint64 blueprintId,uint64 ttlBlocks,uint256 totalCost,uint64 timestamp,uint64 expiry,uint8 confidentiality,AssetSecurityCommitment[] securityCommitments,ResourceCommitment[] resourceCommitments)AssetSecurityCommitment(Asset asset,uint16 exposureBps)Asset(uint8 kind,address token)ResourceCommitment(uint8 kind,uint64 count)" ); bytes32 domainSeparator = keccak256( @@ -241,6 +241,7 @@ contract ResourceCommitmentsTest is BaseTest { bytes32 structHash = keccak256( abi.encode( QUOTE_TYPEHASH, + details.requester, details.blueprintId, details.ttlBlocks, details.totalCost, diff --git a/test/tangle/SlashingEdgeCases.t.sol b/test/tangle/SlashingEdgeCases.t.sol index ac6052f7..e3bdfbfa 100644 --- a/test/tangle/SlashingEdgeCases.t.sol +++ b/test/tangle/SlashingEdgeCases.t.sol @@ -532,7 +532,9 @@ contract SlashingEdgeCasesTest is BaseTest { uint256 treasuryBefore = treasury.balance; // Auto-resolution after the snapshotted disputeResolutionDeadline (14 days). - vm.warp(block.timestamp + 14 days + 1); + // The Disputed branch of `isExecutable` now also applies the 15-second + // TIMESTAMP_BUFFER for symmetry with Pending; warp past it. + vm.warp(block.timestamp + 14 days + 16); tangle.executeSlash(slashId); assertEq(treasury.balance, treasuryBefore + DISPUTE_BOND, "bond forfeit to treasury");