Files
Fuma Nama 3c3524c0d8 refactor(fhe): unify API - reveal() replaces getDecryptResult()
- Update to unified FHE decryption API
- Add foundry.toml for testing
- Update dependencies to @luxfi/contracts
2025-12-31 21:10:37 -08:00

1 line
67 KiB
JSON

{"abi":[{"type":"constructor","inputs":[{"name":"q","type":"string","internalType":"string"},{"name":"optList","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"decryptTally","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decryptedTally","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"getDecryptedTally","inputs":[],"outputs":[{"name":"","type":"uint32[]","internalType":"uint32[]"}],"stateMutability":"view"},{"type":"function","name":"init","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"options","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"query","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tallyDecryptionComplete","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"vote","inputs":[{"name":"encOption","type":"tuple","internalType":"struct Euint8","components":[{"name":"ctHash","type":"uint256","internalType":"uint256"},{"name":"securityZone","type":"uint8","internalType":"uint8"},{"name":"utype","type":"uint8","internalType":"uint8"},{"name":"signature","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"error","name":"InvalidEncryptedInput","inputs":[{"name":"got","type":"uint8","internalType":"uint8"},{"name":"expected","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"SecurityZoneOutOfBounds","inputs":[{"name":"value","type":"int32","internalType":"int32"}]}],"bytecode":{"object":"0x608060405263ffffffff60035f6101000a81548163ffffffff021916908363ffffffff1602179055506005600360046101000a81548160ff021916908360ff16021790555034801561004f575f5ffd5b50604051612219380380612219833981810160405281019061007191906103f5565b600360049054906101000a900460ff1660ff16815111156100c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100be906104c5565b60405180910390fd5b815f90816100d591906106f3565b5080600190805190602001906100ec9291906100f4565b5050506107c2565b828054828255905f5260205f2090810192821561013a579160200282015b8281111561013957825182908161012991906106f3565b5091602001919060010190610112565b5b509050610147919061014b565b5090565b5b8082111561016a575f8181610161919061016e565b5060010161014c565b5090565b50805461017a9061051a565b5f825580601f1061018b57506101a8565b601f0160209004905f5260205f20908101906101a791906101ab565b5b50565b5b808211156101c2575f815f9055506001016101ac565b5090565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610225826101df565b810181811067ffffffffffffffff82111715610244576102436101ef565b5b80604052505050565b5f6102566101c6565b9050610262828261021c565b919050565b5f67ffffffffffffffff821115610281576102806101ef565b5b61028a826101df565b9050602081019050919050565b8281835e5f83830152505050565b5f6102b76102b284610267565b61024d565b9050828152602081018484840111156102d3576102d26101db565b5b6102de848285610297565b509392505050565b5f82601f8301126102fa576102f96101d7565b5b815161030a8482602086016102a5565b91505092915050565b5f67ffffffffffffffff82111561032d5761032c6101ef565b5b602082029050602081019050919050565b5f5ffd5b5f61035461034f84610313565b61024d565b905080838252602082019050602084028301858111156103775761037661033e565b5b835b818110156103be57805167ffffffffffffffff81111561039c5761039b6101d7565b5b8086016103a989826102e6565b85526020850194505050602081019050610379565b5050509392505050565b5f82601f8301126103dc576103db6101d7565b5b81516103ec848260208601610342565b91505092915050565b5f5f6040838503121561040b5761040a6101cf565b5b5f83015167ffffffffffffffff811115610428576104276101d3565b5b610434858286016102e6565b925050602083015167ffffffffffffffff811115610455576104546101d3565b5b610461858286016103c8565b9150509250929050565b5f82825260208201905092915050565b7f746f6f206d616e79206f7074696f6e73210000000000000000000000000000005f82015250565b5f6104af60118361046b565b91506104ba8261047b565b602082019050919050565b5f6020820190508181035f8301526104dc816104a3565b9050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061053157607f821691505b602082108103610544576105436104ed565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261056b565b6105b0868361056b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6105f46105ef6105ea846105c8565b6105d1565b6105c8565b9050919050565b5f819050919050565b61060d836105da565b610621610619826105fb565b848454610577565b825550505050565b5f5f905090565b610638610629565b610643818484610604565b505050565b5b818110156106665761065b5f82610630565b600181019050610649565b5050565b601f8211156106ab5761067c8161054a565b6106858461055c565b81016020851015610694578190505b6106a86106a08561055c565b830182610648565b50505b505050565b5f82821c905092915050565b5f6106cb5f19846008026106b0565b1980831691505092915050565b5f6106e383836106bc565b9150826002028217905092915050565b6106fc826104e3565b67ffffffffffffffff811115610715576107146101ef565b5b61071f825461051a565b61072a82828561066a565b5f60209050601f83116001811461075b575f8415610749578287015190505b61075385826106d8565b8655506107ba565b601f1984166107698661054a565b5f5b828110156107905784890151825560018201915060208501945060208101905061076b565b868310156107ad57848901516107a9601f8916826106bc565b8355505b6001600288020188555050505b505050505050565b611a4a806107cf5f395ff3fe608060405234801561000f575f5ffd5b5060043610610086575f3560e01c806397202db61161005957806397202db614610126578063a8b82db314610130578063bc11cb3f1461014e578063e1c7392a1461016a57610086565b8063247db9ad1461008a5780632c46b205146100ba578063409e2205146100d85780638857480014610108575b5f5ffd5b6100a4600480360381019061009f91906110ba565b610174565b6040516100b19190611103565b60405180910390f35b6100c26101ab565b6040516100cf919061118c565b60405180910390f35b6100f260048036038101906100ed91906110ba565b610236565b6040516100ff919061118c565b60405180910390f35b6101106102dc565b60405161011d91906111c6565b60405180910390f35b61012e6102ee565b005b6101386103f4565b6040516101459190611296565b60405180910390f35b610168600480360381019061016391906112d8565b6104c3565b005b6101726105e3565b005b60068181548110610183575f80fd5b905f5260205f209060089182820401919006600402915054906101000a900463ffffffff1681565b5f80546101b79061134c565b80601f01602080910402602001604051908101604052809291908181526020018280546101e39061134c565b801561022e5780601f106102055761010080835404028352916020019161022e565b820191905f5260205f20905b81548152906001019060200180831161021157829003601f168201915b505050505081565b60018181548110610245575f80fd5b905f5260205f20015f91509050805461025d9061134c565b80601f01602080910402602001604051908101604052809291908181526020018280546102899061134c565b80156102d45780601f106102ab576101008083540402835291602001916102d4565b820191905f5260205f20905b8154815290600101906020018083116102b757829003601f168201915b505050505081565b60075f9054906101000a900460ff1681565b60065f6102fb919061100b565b5f5f90505b6002805490508160ff1610156103435761033060055f8360ff1660ff1681526020019081526020015f2054610663565b808061033b906113b5565b915050610300565b505f5f90505b6002805490508160ff1610156103d757600661037b60055f8460ff1660ff1681526020019081526020015f2054610689565b908060018154018082558091505060019003905f5260205f2090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff16021790555080806103cf906113b5565b915050610349565b50600160075f6101000a81548160ff021916908315150217905550565b606060075f9054906101000a900460ff16610444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611427565b60405180910390fd5b60068054806020026020016040519081016040528092919081815260200182805480156104b957602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161047c5790505b5050505050905090565b5f6104d6826104d190611634565b61069a565b905061051e60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461070d565b1561058a5761058960045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461058460035f9054906101000a900463ffffffff1663ffffffff1661071e565b610730565b5b8060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506105df816105da600161071e565b610730565b5050565b5f5f90505b6001805490508160ff161015610660576106015f61071e565b60055f8360ff1660ff1681526020019081526020015f2081905550600261062a8260ff166107dd565b908060018154018082558091505060019003905f5260205f20015f90919091909150558080610658906113b5565b9150506105e8565b50565b61066c816107ef565b61067c576106795f61071e565b90505b61068581610800565b5050565b5f61069382610885565b9050919050565b5f5f600290508060ff16836040015160ff16146106f4578260400151816040517f67cf30710000000000000000000000000000000000000000000000000000000081526004016106eb929190611655565b60405180910390fd5b61070561070084610919565b61095b565b915050919050565b5f610717826109f2565b9050919050565b5f610729825f610a03565b9050919050565b5f5f90505b6002805490508160ff1610156107d8575f61076f8460028460ff16815481106107615761076061167c565b5b905f5260205f200154610a1d565b90505f61078582856107805f61071e565b610a66565b90506107a860055f8560ff1660ff1681526020019081526020015f205482610ac8565b60055f8560ff1660ff1681526020019081526020015f2081905550505080806107d0906113b5565b915050610735565b505050565b5f6107e8825f610b11565b9050919050565b5f6107f982610b2b565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16630828982783336040518363ffffffff1660e01b81526004016108509291906116f7565b5f604051808303815f87803b158015610867575f5ffd5b505af1158015610879573d5f5f3e3d5ffd5b50505050819050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff1663f6bc7f3f836040518263ffffffff1660e01b81526004016108d3919061171e565b602060405180830381865afa1580156108ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610912919061174b565b9050919050565b610921611030565b6040518060800160405280835f01518152602001836020015160ff168152602001600260ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b81526004016109ab929190611846565b6020604051808303815f875af11580156109c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109eb919061174b565b9050919050565b5f6109fc82610b2b565b9050919050565b5f5f610a1184600485610b37565b90508091505092915050565b5f610a27836109f2565b610a3757610a345f6107dd565b92505b610a40826109f2565b610a5057610a4d5f6107dd565b91505b610a5e600284846018610c32565b905092915050565b5f610a7084610d21565b610a8057610a7d5f610d32565b93505b610a89836107ef565b610a9957610a965f61071e565b92505b610aa2826107ef565b610ab257610aaf5f61071e565b91505b610abf6004858585610d44565b90509392505050565b5f610ad2836107ef565b610ae257610adf5f61071e565b92505b610aeb826107ef565b610afb57610af85f61071e565b91505b610b09600484846008610c32565b905092915050565b5f5f610b1f84600285610b37565b90508091505092915050565b5f5f8214159050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff811115610b8557610b84611449565b5b604051908082528060200260200182016040528015610bb35781602001602082028036833780820191505090505b50610bca898960ff16610bc58a610e35565b610e8c565b6040518563ffffffff1660e01b8152600401610be9949392919061198f565b6020604051808303815f875af1158015610c05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c29919061174b565b90509392505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd8684610c6f8888610f48565b5f67ffffffffffffffff811115610c8957610c88611449565b5b604051908082528060200260200182016040528015610cb75781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401610cd7949392919061198f565b6020604051808303815f875af1158015610cf3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d17919061174b565b9050949350505050565b5f610d2b82610b2b565b9050919050565b5f610d3d825f610fe2565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd866004610d83888888610e8c565b5f67ffffffffffffffff811115610d9d57610d9c611449565b5b604051908082528060200260200182016040528015610dcb5781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401610deb949392919061198f565b6020604051808303815f875af1158015610e07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2b919061174b565b9050949350505050565b5f5f8260030b1215610e7e57816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401610e7591906119fb565b60405180910390fd5b8163ffffffff169050919050565b60605f600367ffffffffffffffff811115610eaa57610ea9611449565b5b604051908082528060200260200182016040528015610ed85781602001602082028036833780820191505090505b50905084815f81518110610eef57610eee61167c565b5b6020026020010181815250508381600181518110610f1057610f0f61167c565b5b6020026020010181815250508281600281518110610f3157610f3061167c565b5b602002602001018181525050809150509392505050565b60605f600267ffffffffffffffff811115610f6657610f65611449565b5b604051908082528060200260200182016040528015610f945781602001602082028036833780820191505090505b50905083815f81518110610fab57610faa61167c565b5b6020026020010181815250508281600181518110610fcc57610fcb61167c565b5b6020026020010181815250508091505092915050565b5f5f5f90508315610ff257600190505b5f610ffe825f86610b37565b9050809250505092915050565b5080545f825560070160089004905f5260205f209081019061102d919061105b565b50565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5b80821115611072575f815f90555060010161105c565b5090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b61109981611087565b81146110a3575f5ffd5b50565b5f813590506110b481611090565b92915050565b5f602082840312156110cf576110ce61107f565b5b5f6110dc848285016110a6565b91505092915050565b5f63ffffffff82169050919050565b6110fd816110e5565b82525050565b5f6020820190506111165f8301846110f4565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61115e8261111c565b6111688185611126565b9350611178818560208601611136565b61118181611144565b840191505092915050565b5f6020820190508181035f8301526111a48184611154565b905092915050565b5f8115159050919050565b6111c0816111ac565b82525050565b5f6020820190506111d95f8301846111b7565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611211816110e5565b82525050565b5f6112228383611208565b60208301905092915050565b5f602082019050919050565b5f611244826111df565b61124e81856111e9565b9350611259836111f9565b805f5b838110156112895781516112708882611217565b975061127b8361122e565b92505060018101905061125c565b5085935050505092915050565b5f6020820190508181035f8301526112ae818461123a565b905092915050565b5f5ffd5b5f608082840312156112cf576112ce6112b6565b5b81905092915050565b5f602082840312156112ed576112ec61107f565b5b5f82013567ffffffffffffffff81111561130a57611309611083565b5b611316848285016112ba565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061136357607f821691505b6020821081036113765761137561131f565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff82169050919050565b5f6113bf826113a9565b915060ff82036113d2576113d161137c565b5b600182019050919050565b7f44656372797074696f6e206e6f7420636f6d706c6574650000000000000000005f82015250565b5f611411601783611126565b915061141c826113dd565b602082019050919050565b5f6020820190508181035f83015261143e81611405565b9050919050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61147f82611144565b810181811067ffffffffffffffff8211171561149e5761149d611449565b5b80604052505050565b5f6114b0611076565b90506114bc8282611476565b919050565b5f5ffd5b6114ce816113a9565b81146114d8575f5ffd5b50565b5f813590506114e9816114c5565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff82111561151157611510611449565b5b61151a82611144565b9050602081019050919050565b828183375f83830152505050565b5f611547611542846114f7565b6114a7565b905082815260208101848484011115611563576115626114f3565b5b61156e848285611527565b509392505050565b5f82601f83011261158a576115896114ef565b5b813561159a848260208601611535565b91505092915050565b5f608082840312156115b8576115b7611445565b5b6115c260806114a7565b90505f6115d1848285016110a6565b5f8301525060206115e4848285016114db565b60208301525060406115f8848285016114db565b604083015250606082013567ffffffffffffffff81111561161c5761161b6114c1565b5b61162884828501611576565b60608301525092915050565b5f61163f36836115a3565b9050919050565b61164f816113a9565b82525050565b5f6040820190506116685f830185611646565b6116756020830184611646565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116b281611087565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116e1826116b8565b9050919050565b6116f1816116d7565b82525050565b5f60408201905061170a5f8301856116a9565b61171760208301846116e8565b9392505050565b5f6020820190506117315f8301846116a9565b92915050565b5f8151905061174581611090565b92915050565b5f602082840312156117605761175f61107f565b5b5f61176d84828501611737565b91505092915050565b61177f81611087565b82525050565b61178e816113a9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f6117b882611794565b6117c2818561179e565b93506117d2818560208601611136565b6117db81611144565b840191505092915050565b5f608083015f8301516117fb5f860182611776565b50602083015161180e6020860182611785565b5060408301516118216040860182611785565b506060830151848203606086015261183982826117ae565b9150508091505092915050565b5f6040820190508181035f83015261185e81856117e6565b905061186d60208301846116e8565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081106118b2576118b1611874565b5b50565b5f8190506118c2826118a1565b919050565b5f6118d1826118b5565b9050919050565b6118e1816118c7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61191b8383611776565b60208301905092915050565b5f602082019050919050565b5f61193d826118e7565b61194781856118f1565b935061195283611901565b805f5b838110156119825781516119698882611910565b975061197483611927565b925050600181019050611955565b5085935050505092915050565b5f6080820190506119a25f830187611646565b6119af60208301866118d8565b81810360408301526119c18185611933565b905081810360608301526119d58184611933565b905095945050505050565b5f8160030b9050919050565b6119f5816119e0565b82525050565b5f602082019050611a0e5f8301846119ec565b9291505056fea26469706673582212206ced6f9f361465e766a9b2f84b3041820e6b74f6bc620046b16cb5071a68fba664736f6c634300081b0033","sourceMap":"157:2406:1:-:0;;;288:11;271:28;;;;;;;;;;;;;;;;;;;;325:1;305:21;;;;;;;;;;;;;;;;;;;;536:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;626:11;;;;;;;;;;;608:29;;:7;:14;:29;;600:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;678:1;670:5;:9;;;;;;:::i;:::-;;699:7;689;:17;;;;;;;;;;;;:::i;:::-;;536:177;;157:2406;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:7:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:139::-;1699:6;1694:3;1689;1683:23;1740:1;1731:6;1726:3;1722:16;1715:27;1610:139;;;:::o;1755:434::-;1844:5;1869:66;1885:49;1927:6;1885:49;:::i;:::-;1869:66;:::i;:::-;1860:75;;1958:6;1951:5;1944:21;1996:4;1989:5;1985:16;2034:3;2025:6;2020:3;2016:16;2013:25;2010:112;;;2041:79;;:::i;:::-;2010:112;2131:52;2176:6;2171:3;2166;2131:52;:::i;:::-;1850:339;1755:434;;;;;:::o;2209:355::-;2276:5;2325:3;2318:4;2310:6;2306:17;2302:27;2292:122;;2333:79;;:::i;:::-;2292:122;2443:6;2437:13;2468:90;2554:3;2546:6;2539:4;2531:6;2527:17;2468:90;:::i;:::-;2459:99;;2282:282;2209:355;;;;:::o;2570:321::-;2657:4;2747:18;2739:6;2736:30;2733:56;;;2769:18;;:::i;:::-;2733:56;2819:4;2811:6;2807:17;2799:25;;2879:4;2873;2869:15;2861:23;;2570:321;;;:::o;2897:117::-;3006:1;3003;2996:12;3036:960;3153:5;3178:91;3194:74;3261:6;3194:74;:::i;:::-;3178:91;:::i;:::-;3169:100;;3289:5;3318:6;3311:5;3304:21;3352:4;3345:5;3341:16;3334:23;;3405:4;3397:6;3393:17;3385:6;3381:30;3434:3;3426:6;3423:15;3420:122;;;3453:79;;:::i;:::-;3420:122;3568:6;3551:439;3585:6;3580:3;3577:15;3551:439;;;3667:3;3661:10;3703:18;3690:11;3687:35;3684:122;;;3725:79;;:::i;:::-;3684:122;3849:11;3841:6;3837:24;3887:58;3941:3;3929:10;3887:58;:::i;:::-;3882:3;3875:71;3975:4;3970:3;3966:14;3959:21;;3627:363;;3611:4;3606:3;3602:14;3595:21;;3551:439;;;3555:21;3159:837;;3036:960;;;;;:::o;4018:405::-;4110:5;4159:3;4152:4;4144:6;4140:17;4136:27;4126:122;;4167:79;;:::i;:::-;4126:122;4277:6;4271:13;4302:115;4413:3;4405:6;4398:4;4390:6;4386:17;4302:115;:::i;:::-;4293:124;;4116:307;4018:405;;;;:::o;4429:903::-;4553:6;4561;4610:2;4598:9;4589:7;4585:23;4581:32;4578:119;;;4616:79;;:::i;:::-;4578:119;4757:1;4746:9;4742:17;4736:24;4787:18;4779:6;4776:30;4773:117;;;4809:79;;:::i;:::-;4773:117;4914:74;4980:7;4971:6;4960:9;4956:22;4914:74;:::i;:::-;4904:84;;4707:291;5058:2;5047:9;5043:18;5037:25;5089:18;5081:6;5078:30;5075:117;;;5111:79;;:::i;:::-;5075:117;5216:99;5307:7;5298:6;5287:9;5283:22;5216:99;:::i;:::-;5206:109;;5008:317;4429:903;;;;;:::o;5338:169::-;5422:11;5456:6;5451:3;5444:19;5496:4;5491:3;5487:14;5472:29;;5338:169;;;;:::o;5513:167::-;5653:19;5649:1;5641:6;5637:14;5630:43;5513:167;:::o;5686:366::-;5828:3;5849:67;5913:2;5908:3;5849:67;:::i;:::-;5842:74;;5925:93;6014:3;5925:93;:::i;:::-;6043:2;6038:3;6034:12;6027:19;;5686:366;;;:::o;6058:419::-;6224:4;6262:2;6251:9;6247:18;6239:26;;6311:9;6305:4;6301:20;6297:1;6286:9;6282:17;6275:47;6339:131;6465:4;6339:131;:::i;:::-;6331:139;;6058:419;;;:::o;6483:99::-;6535:6;6569:5;6563:12;6553:22;;6483:99;;;:::o;6588:180::-;6636:77;6633:1;6626:88;6733:4;6730:1;6723:15;6757:4;6754:1;6747:15;6774:320;6818:6;6855:1;6849:4;6845:12;6835:22;;6902:1;6896:4;6892:12;6923:18;6913:81;;6979:4;6971:6;6967:17;6957:27;;6913:81;7041:2;7033:6;7030:14;7010:18;7007:38;7004:84;;7060:18;;:::i;:::-;7004:84;6825:269;6774:320;;;:::o;7100:141::-;7149:4;7172:3;7164:11;;7195:3;7192:1;7185:14;7229:4;7226:1;7216:18;7208:26;;7100:141;;;:::o;7247:93::-;7284:6;7331:2;7326;7319:5;7315:14;7311:23;7301:33;;7247:93;;;:::o;7346:107::-;7390:8;7440:5;7434:4;7430:16;7409:37;;7346:107;;;;:::o;7459:393::-;7528:6;7578:1;7566:10;7562:18;7601:97;7631:66;7620:9;7601:97;:::i;:::-;7719:39;7749:8;7738:9;7719:39;:::i;:::-;7707:51;;7791:4;7787:9;7780:5;7776:21;7767:30;;7840:4;7830:8;7826:19;7819:5;7816:30;7806:40;;7535:317;;7459:393;;;;;:::o;7858:77::-;7895:7;7924:5;7913:16;;7858:77;;;:::o;7941:60::-;7969:3;7990:5;7983:12;;7941:60;;;:::o;8007:142::-;8057:9;8090:53;8108:34;8117:24;8135:5;8117:24;:::i;:::-;8108:34;:::i;:::-;8090:53;:::i;:::-;8077:66;;8007:142;;;:::o;8155:75::-;8198:3;8219:5;8212:12;;8155:75;;;:::o;8236:269::-;8346:39;8377:7;8346:39;:::i;:::-;8407:91;8456:41;8480:16;8456:41;:::i;:::-;8448:6;8441:4;8435:11;8407:91;:::i;:::-;8401:4;8394:105;8312:193;8236:269;;;:::o;8511:73::-;8556:3;8577:1;8570:8;;8511:73;:::o;8590:189::-;8667:32;;:::i;:::-;8708:65;8766:6;8758;8752:4;8708:65;:::i;:::-;8643:136;8590:189;;:::o;8785:186::-;8845:120;8862:3;8855:5;8852:14;8845:120;;;8916:39;8953:1;8946:5;8916:39;:::i;:::-;8889:1;8882:5;8878:13;8869:22;;8845:120;;;8785:186;;:::o;8977:543::-;9078:2;9073:3;9070:11;9067:446;;;9112:38;9144:5;9112:38;:::i;:::-;9196:29;9214:10;9196:29;:::i;:::-;9186:8;9182:44;9379:2;9367:10;9364:18;9361:49;;;9400:8;9385:23;;9361:49;9423:80;9479:22;9497:3;9479:22;:::i;:::-;9469:8;9465:37;9452:11;9423:80;:::i;:::-;9082:431;;9067:446;8977:543;;;:::o;9526:117::-;9580:8;9630:5;9624:4;9620:16;9599:37;;9526:117;;;;:::o;9649:169::-;9693:6;9726:51;9774:1;9770:6;9762:5;9759:1;9755:13;9726:51;:::i;:::-;9722:56;9807:4;9801;9797:15;9787:25;;9700:118;9649:169;;;;:::o;9823:295::-;9899:4;10045:29;10070:3;10064:4;10045:29;:::i;:::-;10037:37;;10107:3;10104:1;10100:11;10094:4;10091:21;10083:29;;9823:295;;;;:::o;10123:1395::-;10240:37;10273:3;10240:37;:::i;:::-;10342:18;10334:6;10331:30;10328:56;;;10364:18;;:::i;:::-;10328:56;10408:38;10440:4;10434:11;10408:38;:::i;:::-;10493:67;10553:6;10545;10539:4;10493:67;:::i;:::-;10587:1;10611:4;10598:17;;10643:2;10635:6;10632:14;10660:1;10655:618;;;;11317:1;11334:6;11331:77;;;11383:9;11378:3;11374:19;11368:26;11359:35;;11331:77;11434:67;11494:6;11487:5;11434:67;:::i;:::-;11428:4;11421:81;11290:222;10625:887;;10655:618;10707:4;10703:9;10695:6;10691:22;10741:37;10773:4;10741:37;:::i;:::-;10800:1;10814:208;10828:7;10825:1;10822:14;10814:208;;;10907:9;10902:3;10898:19;10892:26;10884:6;10877:42;10958:1;10950:6;10946:14;10936:24;;11005:2;10994:9;10990:18;10977:31;;10851:4;10848:1;10844:12;10839:17;;10814:208;;;11050:6;11041:7;11038:19;11035:179;;;11108:9;11103:3;11099:19;11093:26;11151:48;11193:4;11185:6;11181:17;11170:9;11151:48;:::i;:::-;11143:6;11136:64;11058:156;11035:179;11260:1;11256;11248:6;11244:14;11240:22;11234:4;11227:36;10662:611;;;10625:887;;10215:1303;;;10123:1395;;:::o;157:2406:1:-;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b5060043610610086575f3560e01c806397202db61161005957806397202db614610126578063a8b82db314610130578063bc11cb3f1461014e578063e1c7392a1461016a57610086565b8063247db9ad1461008a5780632c46b205146100ba578063409e2205146100d85780638857480014610108575b5f5ffd5b6100a4600480360381019061009f91906110ba565b610174565b6040516100b19190611103565b60405180910390f35b6100c26101ab565b6040516100cf919061118c565b60405180910390f35b6100f260048036038101906100ed91906110ba565b610236565b6040516100ff919061118c565b60405180910390f35b6101106102dc565b60405161011d91906111c6565b60405180910390f35b61012e6102ee565b005b6101386103f4565b6040516101459190611296565b60405180910390f35b610168600480360381019061016391906112d8565b6104c3565b005b6101726105e3565b005b60068181548110610183575f80fd5b905f5260205f209060089182820401919006600402915054906101000a900463ffffffff1681565b5f80546101b79061134c565b80601f01602080910402602001604051908101604052809291908181526020018280546101e39061134c565b801561022e5780601f106102055761010080835404028352916020019161022e565b820191905f5260205f20905b81548152906001019060200180831161021157829003601f168201915b505050505081565b60018181548110610245575f80fd5b905f5260205f20015f91509050805461025d9061134c565b80601f01602080910402602001604051908101604052809291908181526020018280546102899061134c565b80156102d45780601f106102ab576101008083540402835291602001916102d4565b820191905f5260205f20905b8154815290600101906020018083116102b757829003601f168201915b505050505081565b60075f9054906101000a900460ff1681565b60065f6102fb919061100b565b5f5f90505b6002805490508160ff1610156103435761033060055f8360ff1660ff1681526020019081526020015f2054610663565b808061033b906113b5565b915050610300565b505f5f90505b6002805490508160ff1610156103d757600661037b60055f8460ff1660ff1681526020019081526020015f2054610689565b908060018154018082558091505060019003905f5260205f2090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff16021790555080806103cf906113b5565b915050610349565b50600160075f6101000a81548160ff021916908315150217905550565b606060075f9054906101000a900460ff16610444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043b90611427565b60405180910390fd5b60068054806020026020016040519081016040528092919081815260200182805480156104b957602002820191905f5260205f20905f905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161047c5790505b5050505050905090565b5f6104d6826104d190611634565b61069a565b905061051e60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461070d565b1561058a5761058960045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461058460035f9054906101000a900463ffffffff1663ffffffff1661071e565b610730565b5b8060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506105df816105da600161071e565b610730565b5050565b5f5f90505b6001805490508160ff161015610660576106015f61071e565b60055f8360ff1660ff1681526020019081526020015f2081905550600261062a8260ff166107dd565b908060018154018082558091505060019003905f5260205f20015f90919091909150558080610658906113b5565b9150506105e8565b50565b61066c816107ef565b61067c576106795f61071e565b90505b61068581610800565b5050565b5f61069382610885565b9050919050565b5f5f600290508060ff16836040015160ff16146106f4578260400151816040517f67cf30710000000000000000000000000000000000000000000000000000000081526004016106eb929190611655565b60405180910390fd5b61070561070084610919565b61095b565b915050919050565b5f610717826109f2565b9050919050565b5f610729825f610a03565b9050919050565b5f5f90505b6002805490508160ff1610156107d8575f61076f8460028460ff16815481106107615761076061167c565b5b905f5260205f200154610a1d565b90505f61078582856107805f61071e565b610a66565b90506107a860055f8560ff1660ff1681526020019081526020015f205482610ac8565b60055f8560ff1660ff1681526020019081526020015f2081905550505080806107d0906113b5565b915050610735565b505050565b5f6107e8825f610b11565b9050919050565b5f6107f982610b2b565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16630828982783336040518363ffffffff1660e01b81526004016108509291906116f7565b5f604051808303815f87803b158015610867575f5ffd5b505af1158015610879573d5f5f3e3d5ffd5b50505050819050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff1663f6bc7f3f836040518263ffffffff1660e01b81526004016108d3919061171e565b602060405180830381865afa1580156108ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610912919061174b565b9050919050565b610921611030565b6040518060800160405280835f01518152602001836020015160ff168152602001600260ff16815260200183606001518152509050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff166327f9c76283336040518363ffffffff1660e01b81526004016109ab929190611846565b6020604051808303815f875af11580156109c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109eb919061174b565b9050919050565b5f6109fc82610b2b565b9050919050565b5f5f610a1184600485610b37565b90508091505092915050565b5f610a27836109f2565b610a3757610a345f6107dd565b92505b610a40826109f2565b610a5057610a4d5f6107dd565b91505b610a5e600284846018610c32565b905092915050565b5f610a7084610d21565b610a8057610a7d5f610d32565b93505b610a89836107ef565b610a9957610a965f61071e565b92505b610aa2826107ef565b610ab257610aaf5f61071e565b91505b610abf6004858585610d44565b90509392505050565b5f610ad2836107ef565b610ae257610adf5f61071e565b92505b610aeb826107ef565b610afb57610af85f61071e565b91505b610b09600484846008610c32565b905092915050565b5f5f610b1f84600285610b37565b90508091505092915050565b5f5f8214159050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd84601a5f67ffffffffffffffff811115610b8557610b84611449565b5b604051908082528060200260200182016040528015610bb35781602001602082028036833780820191505090505b50610bca898960ff16610bc58a610e35565b610e8c565b6040518563ffffffff1660e01b8152600401610be9949392919061198f565b6020604051808303815f875af1158015610c05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c29919061174b565b90509392505050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd8684610c6f8888610f48565b5f67ffffffffffffffff811115610c8957610c88611449565b5b604051908082528060200260200182016040528015610cb75781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401610cd7949392919061198f565b6020604051808303815f875af1158015610cf3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d17919061174b565b9050949350505050565b5f610d2b82610b2b565b9050919050565b5f610d3d825f610fe2565b9050919050565b5f73020000000000000000000000000000000000008073ffffffffffffffffffffffffffffffffffffffff16631888debd866004610d83888888610e8c565b5f67ffffffffffffffff811115610d9d57610d9c611449565b5b604051908082528060200260200182016040528015610dcb5781602001602082028036833780820191505090505b506040518563ffffffff1660e01b8152600401610deb949392919061198f565b6020604051808303815f875af1158015610e07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2b919061174b565b9050949350505050565b5f5f8260030b1215610e7e57816040517f8f568bf8000000000000000000000000000000000000000000000000000000008152600401610e7591906119fb565b60405180910390fd5b8163ffffffff169050919050565b60605f600367ffffffffffffffff811115610eaa57610ea9611449565b5b604051908082528060200260200182016040528015610ed85781602001602082028036833780820191505090505b50905084815f81518110610eef57610eee61167c565b5b6020026020010181815250508381600181518110610f1057610f0f61167c565b5b6020026020010181815250508281600281518110610f3157610f3061167c565b5b602002602001018181525050809150509392505050565b60605f600267ffffffffffffffff811115610f6657610f65611449565b5b604051908082528060200260200182016040528015610f945781602001602082028036833780820191505090505b50905083815f81518110610fab57610faa61167c565b5b6020026020010181815250508281600181518110610fcc57610fcb61167c565b5b6020026020010181815250508091505092915050565b5f5f5f90508315610ff257600190505b5f610ffe825f86610b37565b9050809250505092915050565b5080545f825560070160089004905f5260205f209081019061102d919061105b565b50565b60405180608001604052805f81526020015f60ff1681526020015f60ff168152602001606081525090565b5b80821115611072575f815f90555060010161105c565b5090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b61109981611087565b81146110a3575f5ffd5b50565b5f813590506110b481611090565b92915050565b5f602082840312156110cf576110ce61107f565b5b5f6110dc848285016110a6565b91505092915050565b5f63ffffffff82169050919050565b6110fd816110e5565b82525050565b5f6020820190506111165f8301846110f4565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61115e8261111c565b6111688185611126565b9350611178818560208601611136565b61118181611144565b840191505092915050565b5f6020820190508181035f8301526111a48184611154565b905092915050565b5f8115159050919050565b6111c0816111ac565b82525050565b5f6020820190506111d95f8301846111b7565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611211816110e5565b82525050565b5f6112228383611208565b60208301905092915050565b5f602082019050919050565b5f611244826111df565b61124e81856111e9565b9350611259836111f9565b805f5b838110156112895781516112708882611217565b975061127b8361122e565b92505060018101905061125c565b5085935050505092915050565b5f6020820190508181035f8301526112ae818461123a565b905092915050565b5f5ffd5b5f608082840312156112cf576112ce6112b6565b5b81905092915050565b5f602082840312156112ed576112ec61107f565b5b5f82013567ffffffffffffffff81111561130a57611309611083565b5b611316848285016112ba565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061136357607f821691505b6020821081036113765761137561131f565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff82169050919050565b5f6113bf826113a9565b915060ff82036113d2576113d161137c565b5b600182019050919050565b7f44656372797074696f6e206e6f7420636f6d706c6574650000000000000000005f82015250565b5f611411601783611126565b915061141c826113dd565b602082019050919050565b5f6020820190508181035f83015261143e81611405565b9050919050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61147f82611144565b810181811067ffffffffffffffff8211171561149e5761149d611449565b5b80604052505050565b5f6114b0611076565b90506114bc8282611476565b919050565b5f5ffd5b6114ce816113a9565b81146114d8575f5ffd5b50565b5f813590506114e9816114c5565b92915050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff82111561151157611510611449565b5b61151a82611144565b9050602081019050919050565b828183375f83830152505050565b5f611547611542846114f7565b6114a7565b905082815260208101848484011115611563576115626114f3565b5b61156e848285611527565b509392505050565b5f82601f83011261158a576115896114ef565b5b813561159a848260208601611535565b91505092915050565b5f608082840312156115b8576115b7611445565b5b6115c260806114a7565b90505f6115d1848285016110a6565b5f8301525060206115e4848285016114db565b60208301525060406115f8848285016114db565b604083015250606082013567ffffffffffffffff81111561161c5761161b6114c1565b5b61162884828501611576565b60608301525092915050565b5f61163f36836115a3565b9050919050565b61164f816113a9565b82525050565b5f6040820190506116685f830185611646565b6116756020830184611646565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116b281611087565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116e1826116b8565b9050919050565b6116f1816116d7565b82525050565b5f60408201905061170a5f8301856116a9565b61171760208301846116e8565b9392505050565b5f6020820190506117315f8301846116a9565b92915050565b5f8151905061174581611090565b92915050565b5f602082840312156117605761175f61107f565b5b5f61176d84828501611737565b91505092915050565b61177f81611087565b82525050565b61178e816113a9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f6117b882611794565b6117c2818561179e565b93506117d2818560208601611136565b6117db81611144565b840191505092915050565b5f608083015f8301516117fb5f860182611776565b50602083015161180e6020860182611785565b5060408301516118216040860182611785565b506060830151848203606086015261183982826117ae565b9150508091505092915050565b5f6040820190508181035f83015261185e81856117e6565b905061186d60208301846116e8565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081106118b2576118b1611874565b5b50565b5f8190506118c2826118a1565b919050565b5f6118d1826118b5565b9050919050565b6118e1816118c7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61191b8383611776565b60208301905092915050565b5f602082019050919050565b5f61193d826118e7565b61194781856118f1565b935061195283611901565b805f5b838110156119825781516119698882611910565b975061197483611927565b925050600181019050611955565b5085935050505092915050565b5f6080820190506119a25f830187611646565b6119af60208301866118d8565b81810360408301526119c18185611933565b905081810360608301526119d58184611933565b905095945050505050565b5f8160030b9050919050565b6119f5816119e0565b82525050565b5f602082019050611a0e5f8301846119ec565b9291505056fea26469706673582212206ced6f9f361465e766a9b2f84b3041820e6b74f6bc620046b16cb5071a68fba664736f6c634300081b0033","sourceMap":"157:2406:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;458:30;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;181:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;207:23;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;494:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1571:417;;;:::i;:::-;;2065:174;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;905:605;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;719:180;;;:::i;:::-;;458:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;181:19::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;207:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;494:35::-;;;;;;;;;;;;;:::o;1571:417::-;1619:14;;1612:21;;;;:::i;:::-;1691:7;1701:1;1691:11;;1686:92;1708:10;:17;;;;1704:1;:21;;;1686:92;;;1746:21;1758:5;:8;1764:1;1758:8;;;;;;;;;;;;;;;;1746:11;:21::i;:::-;1727:3;;;;;:::i;:::-;;;;1686:92;;;;1825:7;1835:1;1825:11;;1820:122;1842:10;:17;;;;1838:1;:21;;;1820:122;;;1880:14;1900:30;1921:5;:8;1927:1;1921:8;;;;;;;;;;;;;;;;1900:20;:30::i;:::-;1880:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1861:3;;;;;:::i;:::-;;;;1820:122;;;;1977:4;1951:23;;:30;;;;;;;;;;;;;;;;;;1571:417::o;2065:174::-;2115:15;2150:23;;;;;;;;;;;2142:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;2218:14;2211:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2065:174;:::o;905:605::-;963:13;979:23;992:9;979:23;;;:::i;:::-;:12;:23::i;:::-;963:39;;1262:36;1280:5;:17;1286:10;1280:17;;;;;;;;;;;;;;;;1262;:36::i;:::-;1258:163;;;1314:53;1325:5;:17;1331:10;1325:17;;;;;;;;;;;;;;;;1344:22;1358:7;;;;;;;;;;;1344:22;;:13;:22::i;:::-;1314:10;:53::i;:::-;1258:163;1451:6;1431:5;:17;1437:10;1431:17;;;;;;;;;;;;;;;:26;;;;1467:36;1478:6;1486:16;1500:1;1486:13;:16::i;:::-;1467:10;:36::i;:::-;953:557;905:605;:::o;719:180::-;757:7;767:1;757:11;;752:141;774:7;:14;;;;770:1;:18;;;752:141;;;820:16;834:1;820:13;:16::i;:::-;809:5;:8;815:1;809:8;;;;;;;;;;;;;;;:27;;;;850:10;866:15;879:1;866:15;;:12;:15::i;:::-;850:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;790:3;;;;;:::i;:::-;;;;752:141;;;;719:180::o;82858:193:2:-;82915:15;82923:6;82915:7;:15::i;:::-;82910:68;;82955:12;82965:1;82955:9;:12::i;:::-;82946:21;;82910:68;83001:42;83035:6;83001:18;:42::i;:::-;82988:56;82858:193;:::o;88187:156::-;88252:6;88284:51;88327:6;88284:27;:51::i;:::-;88270:66;;88187:156;;;:::o;114161:329::-;114218:6;114236:19;7678:1:6;114236:39:2;;114304:13;114289:28;;:5;:11;;;:28;;;114285:115;;114362:5;:11;;;114375:13;114340:49;;;;;;;;;;;;:::i;:::-;;;;;;;;114285:115;114430:52;114453:28;114475:5;114453:21;:28::i;:::-;114430:22;:52::i;:::-;114411:72;;;114161:329;;;:::o;2960:84::-;3016:4;3031:10;3039:1;3031:7;:10::i;:::-;3024:17;;2960:84;;;:::o;127894:104::-;127946:7;127972:19;127982:5;127989:1;127972:9;:19::i;:::-;127965:26;;127894:104;;;:::o;2245:316:1:-;2320:7;2330:1;2320:11;;2315:240;2337:10;:17;;;;2333:1;:21;;;2315:240;;;2375:13;2391:29;2398:6;2406:10;2417:1;2406:13;;;;;;;;;;:::i;:::-;;;;;;;;;;2391:6;:29::i;:::-;2375:45;;2434:13;2450:45;2461:7;2470:6;2478:16;2492:1;2478:13;:16::i;:::-;2450:10;:45::i;:::-;2434:61;;2520:24;2528:5;:8;2534:1;2528:8;;;;;;;;;;;;;;;;2538:5;2520:7;:24::i;:::-;2509:5;:8;2515:1;2509:8;;;;;;;;;;;;;;;:35;;;;2361:194;;2356:3;;;;;:::i;:::-;;;;2315:240;;;;2245:316;;:::o;126418:101:2:-;126469:6;126494:18;126503:5;126510:1;126494:8;:18::i;:::-;126487:25;;126418:101;;;:::o;2075:110::-;2125:4;2140:42;2179:1;2140:23;:42::i;:::-;2133:49;;2075:110;;;:::o;3094:168:4:-;3144:7;745:42:5;3163:51:4;;;3215:5;3222:10;3163:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3250:5;3243:12;;3094:168;;;:::o;3410:154::-;3474:7;745:42:5;3500:50:4;;;3551:5;3500:57;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3493:64;;3410:154;;;:::o;10079:294:6:-;10148:21;;:::i;:::-;10188:178;;;;;;;;10225:5;:12;;;10188:178;;;;10265:5;:18;;;10188:178;;;;;;7678:1;10188:178;;;;;;10340:5;:15;;;10188:178;;;10181:185;;10079:294;;;:::o;5059:165:4:-;5127:7;745:42:5;5153:45:4;;;5199:5;5206:10;5153:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5146:71;;5059:165;;;:::o;1847:108:2:-;1896:4;1911:41;1949:1;1911:23;:41::i;:::-;1904:48;;1847:108;;;:::o;128225:210::-;128297:7;128316:10;128329:66;128355:5;7770:1:6;128382:12:2;128329:25;:66::i;:::-;128316:79;;128425:2;128405:23;;;128225:210;;;;:::o;52681:329::-;52735:5;52757:12;52765:3;52757:7;:12::i;:::-;52752:61;;52791:11;52800:1;52791:8;:11::i;:::-;52785:17;;52752:61;52827:12;52835:3;52827:7;:12::i;:::-;52822:61;;52861:11;52870:1;52861:8;:11::i;:::-;52855:17;;52822:61;52911:91;7678:1:6;52962:3:2;52982;52988:13;52911:17;:91::i;:::-;52893:110;;52681:329;;;;:::o;98634:468::-;98714:7;98738:15;98746:6;98738:7;:15::i;:::-;98733:70;;98778:14;98786:5;98778:7;:14::i;:::-;98769:23;;98733:70;98817:15;98825:6;98817:7;:15::i;:::-;98812:68;;98857:12;98867:1;98857:9;:12::i;:::-;98848:21;;98812:68;98894:15;98902:6;98894:7;:15::i;:::-;98889:68;;98934:12;98944:1;98934:9;:12::i;:::-;98925:21;;98889:68;98987:107;7770:1:6;99038:6:2;99062;99086;98987:17;:107::i;:::-;98967:128;;98634:468;;;;;:::o;5596:342::-;5653:7;5677:12;5685:3;5677:7;:12::i;:::-;5672:62;;5711:12;5721:1;5711:9;:12::i;:::-;5705:18;;5672:62;5748:12;5756:3;5748:7;:12::i;:::-;5743:62;;5782:12;5792:1;5782:9;:12::i;:::-;5776:18;;5743:62;5835:95;7770:1:6;5888:3:2;5909;5915:14;5835:17;:95::i;:::-;5815:116;;5596:342;;;;:::o;126745:206::-;126816:6;126834:10;126847:65;126873:5;7678:1:6;126899:12:2;126847:25;:65::i;:::-;126834:78;;126941:2;126922:22;;;126745:206;;;;:::o;1020:99:3:-;1080:4;1111:1;1103:4;:9;;1096:16;;1020:99;;;:::o;743:372:4:-;834:7;745:42:5;860:44:4;;;918:6;938:25;991:1;977:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1007:91;1037:5;1044:6;1007:91;;1052:45;1084:12;1052:31;:45::i;:::-;1007:29;:91::i;:::-;860:248;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;853:255;;743:372;;;;;:::o;2614:319::-;2715:7;745:42:5;2741:44:4;;;2799:10;2823;2847:39;2877:3;2882;2847:29;:39::i;:::-;2914:1;2900:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2741:185;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2734:192;;2614:319;;;;;;:::o;1736:106:2:-;1784:4;1799:40;1836:1;1799:23;:40::i;:::-;1792:47;;1736:106;;;:::o;125538:95::-;125585:5;125609:17;125617:5;125624:1;125609:7;:17::i;:::-;125602:24;;125538:95;;;:::o;1956:343:4:-;2058:7;745:42:5;2084:44:4;;;2142:10;2166:17;2197:55;2227:7;2236:6;2244:7;2197:29;:55::i;:::-;2280:1;2266:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:208;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2077:215;;1956:343;;;;;;:::o;629:208:3:-;696:7;727:1;719:5;:9;;;715:77;;;775:5;751:30;;;;;;;;;;;:::i;:::-;;;;;;;;715:77;823:5;808:22;;801:29;;629:208;;;:::o;1745:284::-;1845:16;1873:23;1913:1;1899:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:42;;1937:6;1925;1932:1;1925:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1965:6;1953;1960:1;1953:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1993:6;1981;1988:1;1981:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;2016:6;2009:13;;;1745:284;;;;;:::o;1440:240::-;1524:16;1552:23;1592:1;1578:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:42;;1616:6;1604;1611:1;1604:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1644:6;1632;1639:1;1632:9;;;;;;;;:::i;:::-;;;;;;;:18;;;;;1667:6;1660:13;;;1440:240;;;;:::o;125941:277:2:-;126008:5;126025:12;126040:1;126025:16;;126055:5;126051:44;;;126083:1;126076:8;;126051:44;126104:10;126117:63;126143:4;8001:1:6;126167:12:2;126117:25;:63::i;:::-;126104:76;;126208:2;126190:21;;;;125941:277;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:7:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:93::-;1061:7;1101:10;1094:5;1090:22;1079:33;;1025:93;;;:::o;1124:115::-;1209:23;1226:5;1209:23;:::i;:::-;1204:3;1197:36;1124:115;;:::o;1245:218::-;1336:4;1374:2;1363:9;1359:18;1351:26;;1387:69;1453:1;1442:9;1438:17;1429:6;1387:69;:::i;:::-;1245:218;;;;:::o;1469:99::-;1521:6;1555:5;1549:12;1539:22;;1469:99;;;:::o;1574:169::-;1658:11;1692:6;1687:3;1680:19;1732:4;1727:3;1723:14;1708:29;;1574:169;;;;:::o;1749:139::-;1838:6;1833:3;1828;1822:23;1879:1;1870:6;1865:3;1861:16;1854:27;1749:139;;;:::o;1894:102::-;1935:6;1986:2;1982:7;1977:2;1970:5;1966:14;1962:28;1952:38;;1894:102;;;:::o;2002:377::-;2090:3;2118:39;2151:5;2118:39;:::i;:::-;2173:71;2237:6;2232:3;2173:71;:::i;:::-;2166:78;;2253:65;2311:6;2306:3;2299:4;2292:5;2288:16;2253:65;:::i;:::-;2343:29;2365:6;2343:29;:::i;:::-;2338:3;2334:39;2327:46;;2094:285;2002:377;;;;:::o;2385:313::-;2498:4;2536:2;2525:9;2521:18;2513:26;;2585:9;2579:4;2575:20;2571:1;2560:9;2556:17;2549:47;2613:78;2686:4;2677:6;2613:78;:::i;:::-;2605:86;;2385:313;;;;:::o;2704:90::-;2738:7;2781:5;2774:13;2767:21;2756:32;;2704:90;;;:::o;2800:109::-;2881:21;2896:5;2881:21;:::i;:::-;2876:3;2869:34;2800:109;;:::o;2915:210::-;3002:4;3040:2;3029:9;3025:18;3017:26;;3053:65;3115:1;3104:9;3100:17;3091:6;3053:65;:::i;:::-;2915:210;;;;:::o;3131:113::-;3197:6;3231:5;3225:12;3215:22;;3131:113;;;:::o;3250:183::-;3348:11;3382:6;3377:3;3370:19;3422:4;3417:3;3413:14;3398:29;;3250:183;;;;:::o;3439:131::-;3505:4;3528:3;3520:11;;3558:4;3553:3;3549:14;3541:22;;3439:131;;;:::o;3576:105::-;3651:23;3668:5;3651:23;:::i;:::-;3646:3;3639:36;3576:105;;:::o;3687:175::-;3754:10;3775:44;3815:3;3807:6;3775:44;:::i;:::-;3851:4;3846:3;3842:14;3828:28;;3687:175;;;;:::o;3868:112::-;3937:4;3969;3964:3;3960:14;3952:22;;3868:112;;;:::o;4014:724::-;4131:3;4160:53;4207:5;4160:53;:::i;:::-;4229:85;4307:6;4302:3;4229:85;:::i;:::-;4222:92;;4338:55;4387:5;4338:55;:::i;:::-;4416:7;4447:1;4432:281;4457:6;4454:1;4451:13;4432:281;;;4533:6;4527:13;4560:61;4617:3;4602:13;4560:61;:::i;:::-;4553:68;;4644:59;4696:6;4644:59;:::i;:::-;4634:69;;4492:221;4479:1;4476;4472:9;4467:14;;4432:281;;;4436:14;4729:3;4722:10;;4136:602;;;4014:724;;;;:::o;4744:369::-;4885:4;4923:2;4912:9;4908:18;4900:26;;4972:9;4966:4;4962:20;4958:1;4947:9;4943:17;4936:47;5000:106;5101:4;5092:6;5000:106;:::i;:::-;4992:114;;4744:369;;;;:::o;5119:117::-;5228:1;5225;5218:12;5263:232;5336:5;5377:3;5368:6;5363:3;5359:16;5355:26;5352:113;;;5384:79;;:::i;:::-;5352:113;5483:6;5474:15;;5263:232;;;;:::o;5501:543::-;5587:6;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5790:1;5779:9;5775:17;5762:31;5820:18;5812:6;5809:30;5806:117;;;5842:79;;:::i;:::-;5806:117;5947:80;6019:7;6010:6;5999:9;5995:22;5947:80;:::i;:::-;5937:90;;5733:304;5501:543;;;;:::o;6050:180::-;6098:77;6095:1;6088:88;6195:4;6192:1;6185:15;6219:4;6216:1;6209:15;6236:320;6280:6;6317:1;6311:4;6307:12;6297:22;;6364:1;6358:4;6354:12;6385:18;6375:81;;6441:4;6433:6;6429:17;6419:27;;6375:81;6503:2;6495:6;6492:14;6472:18;6469:38;6466:84;;6522:18;;:::i;:::-;6466:84;6287:269;6236:320;;;:::o;6562:180::-;6610:77;6607:1;6600:88;6707:4;6704:1;6697:15;6731:4;6728:1;6721:15;6748:86;6783:7;6823:4;6816:5;6812:16;6801:27;;6748:86;;;:::o;6840:167::-;6877:3;6900:22;6916:5;6900:22;:::i;:::-;6891:31;;6944:4;6937:5;6934:15;6931:41;;6952:18;;:::i;:::-;6931:41;6999:1;6992:5;6988:13;6981:20;;6840:167;;;:::o;7013:173::-;7153:25;7149:1;7141:6;7137:14;7130:49;7013:173;:::o;7192:366::-;7334:3;7355:67;7419:2;7414:3;7355:67;:::i;:::-;7348:74;;7431:93;7520:3;7431:93;:::i;:::-;7549:2;7544:3;7540:12;7533:19;;7192:366;;;:::o;7564:419::-;7730:4;7768:2;7757:9;7753:18;7745:26;;7817:9;7811:4;7807:20;7803:1;7792:9;7788:17;7781:47;7845:131;7971:4;7845:131;:::i;:::-;7837:139;;7564:419;;;:::o;7989:117::-;8098:1;8095;8088:12;8112:180;8160:77;8157:1;8150:88;8257:4;8254:1;8247:15;8281:4;8278:1;8271:15;8298:281;8381:27;8403:4;8381:27;:::i;:::-;8373:6;8369:40;8511:6;8499:10;8496:22;8475:18;8463:10;8460:34;8457:62;8454:88;;;8522:18;;:::i;:::-;8454:88;8562:10;8558:2;8551:22;8341:238;8298:281;;:::o;8585:129::-;8619:6;8646:20;;:::i;:::-;8636:30;;8675:33;8703:4;8695:6;8675:33;:::i;:::-;8585:129;;;:::o;8720:117::-;8829:1;8826;8819:12;8843:118;8914:22;8930:5;8914:22;:::i;:::-;8907:5;8904:33;8894:61;;8951:1;8948;8941:12;8894:61;8843:118;:::o;8967:135::-;9011:5;9049:6;9036:20;9027:29;;9065:31;9090:5;9065:31;:::i;:::-;8967:135;;;;:::o;9108:117::-;9217:1;9214;9207:12;9231:117;9340:1;9337;9330:12;9354:307;9415:4;9505:18;9497:6;9494:30;9491:56;;;9527:18;;:::i;:::-;9491:56;9565:29;9587:6;9565:29;:::i;:::-;9557:37;;9649:4;9643;9639:15;9631:23;;9354:307;;;:::o;9667:148::-;9765:6;9760:3;9755;9742:30;9806:1;9797:6;9792:3;9788:16;9781:27;9667:148;;;:::o;9821:423::-;9898:5;9923:65;9939:48;9980:6;9939:48;:::i;:::-;9923:65;:::i;:::-;9914:74;;10011:6;10004:5;9997:21;10049:4;10042:5;10038:16;10087:3;10078:6;10073:3;10069:16;10066:25;10063:112;;;10094:79;;:::i;:::-;10063:112;10184:54;10231:6;10226:3;10221;10184:54;:::i;:::-;9904:340;9821:423;;;;;:::o;10263:338::-;10318:5;10367:3;10360:4;10352:6;10348:17;10344:27;10334:122;;10375:79;;:::i;:::-;10334:122;10492:6;10479:20;10517:78;10591:3;10583:6;10576:4;10568:6;10564:17;10517:78;:::i;:::-;10508:87;;10324:277;10263:338;;;;:::o;10628:1077::-;10702:5;10746:4;10734:9;10729:3;10725:19;10721:30;10718:117;;;10754:79;;:::i;:::-;10718:117;10853:21;10869:4;10853:21;:::i;:::-;10844:30;;10935:1;10975:49;11020:3;11011:6;11000:9;10996:22;10975:49;:::i;:::-;10968:4;10961:5;10957:16;10950:75;10884:152;11103:2;11144:47;11187:3;11178:6;11167:9;11163:22;11144:47;:::i;:::-;11137:4;11130:5;11126:16;11119:73;11046:157;11263:2;11304:47;11347:3;11338:6;11327:9;11323:22;11304:47;:::i;:::-;11297:4;11290:5;11286:16;11279:73;11213:150;11455:2;11444:9;11440:18;11427:32;11486:18;11478:6;11475:30;11472:117;;;11508:79;;:::i;:::-;11472:117;11628:58;11682:3;11673:6;11662:9;11658:22;11628:58;:::i;:::-;11621:4;11614:5;11610:16;11603:84;11373:325;10628:1077;;;;:::o;11711:211::-;11813:9;11847:68;11900:14;11893:5;11847:68;:::i;:::-;11834:81;;11711:211;;;:::o;11928:112::-;12011:22;12027:5;12011:22;:::i;:::-;12006:3;11999:35;11928:112;;:::o;12046:316::-;12159:4;12197:2;12186:9;12182:18;12174:26;;12210:67;12274:1;12263:9;12259:17;12250:6;12210:67;:::i;:::-;12287:68;12351:2;12340:9;12336:18;12327:6;12287:68;:::i;:::-;12046:316;;;;;:::o;12368:180::-;12416:77;12413:1;12406:88;12513:4;12510:1;12503:15;12537:4;12534:1;12527:15;12554:118;12641:24;12659:5;12641:24;:::i;:::-;12636:3;12629:37;12554:118;;:::o;12678:126::-;12715:7;12755:42;12748:5;12744:54;12733:65;;12678:126;;;:::o;12810:96::-;12847:7;12876:24;12894:5;12876:24;:::i;:::-;12865:35;;12810:96;;;:::o;12912:118::-;12999:24;13017:5;12999:24;:::i;:::-;12994:3;12987:37;12912:118;;:::o;13036:332::-;13157:4;13195:2;13184:9;13180:18;13172:26;;13208:71;13276:1;13265:9;13261:17;13252:6;13208:71;:::i;:::-;13289:72;13357:2;13346:9;13342:18;13333:6;13289:72;:::i;:::-;13036:332;;;;;:::o;13374:222::-;13467:4;13505:2;13494:9;13490:18;13482:26;;13518:71;13586:1;13575:9;13571:17;13562:6;13518:71;:::i;:::-;13374:222;;;;:::o;13602:143::-;13659:5;13690:6;13684:13;13675:22;;13706:33;13733:5;13706:33;:::i;:::-;13602:143;;;;:::o;13751:351::-;13821:6;13870:2;13858:9;13849:7;13845:23;13841:32;13838:119;;;13876:79;;:::i;:::-;13838:119;13996:1;14021:64;14077:7;14068:6;14057:9;14053:22;14021:64;:::i;:::-;14011:74;;13967:128;13751:351;;;;:::o;14108:108::-;14185:24;14203:5;14185:24;:::i;:::-;14180:3;14173:37;14108:108;;:::o;14222:102::-;14295:22;14311:5;14295:22;:::i;:::-;14290:3;14283:35;14222:102;;:::o;14330:98::-;14381:6;14415:5;14409:12;14399:22;;14330:98;;;:::o;14434:158::-;14507:11;14541:6;14536:3;14529:19;14581:4;14576:3;14572:14;14557:29;;14434:158;;;;:::o;14598:353::-;14674:3;14702:38;14734:5;14702:38;:::i;:::-;14756:60;14809:6;14804:3;14756:60;:::i;:::-;14749:67;;14825:65;14883:6;14878:3;14871:4;14864:5;14860:16;14825:65;:::i;:::-;14915:29;14937:6;14915:29;:::i;:::-;14910:3;14906:39;14899:46;;14678:273;14598:353;;;;:::o;15011:976::-;15146:3;15182:4;15177:3;15173:14;15271:4;15264:5;15260:16;15254:23;15290:63;15347:4;15342:3;15338:14;15324:12;15290:63;:::i;:::-;15197:166;15453:4;15446:5;15442:16;15436:23;15472:59;15525:4;15520:3;15516:14;15502:12;15472:59;:::i;:::-;15373:168;15624:4;15617:5;15613:16;15607:23;15643:59;15696:4;15691:3;15687:14;15673:12;15643:59;:::i;:::-;15551:161;15799:4;15792:5;15788:16;15782:23;15852:3;15846:4;15842:14;15835:4;15830:3;15826:14;15819:38;15878:71;15944:4;15930:12;15878:71;:::i;:::-;15870:79;;15722:238;15977:4;15970:11;;15151:836;15011:976;;;;:::o;15993:515::-;16180:4;16218:2;16207:9;16203:18;16195:26;;16267:9;16261:4;16257:20;16253:1;16242:9;16238:17;16231:47;16295:124;16414:4;16405:6;16295:124;:::i;:::-;16287:132;;16429:72;16497:2;16486:9;16482:18;16473:6;16429:72;:::i;:::-;15993:515;;;;;:::o;16514:180::-;16562:77;16559:1;16552:88;16659:4;16656:1;16649:15;16683:4;16680:1;16673:15;16700:122;16789:2;16782:5;16779:13;16769:47;;16796:18;;:::i;:::-;16769:47;16700:122;:::o;16828:143::-;16881:7;16910:5;16899:16;;16916:49;16959:5;16916:49;:::i;:::-;16828:143;;;:::o;16977:::-;17041:9;17074:40;17108:5;17074:40;:::i;:::-;17061:53;;16977:143;;;:::o;17126:159::-;17227:51;17272:5;17227:51;:::i;:::-;17222:3;17215:64;17126:159;;:::o;17291:114::-;17358:6;17392:5;17386:12;17376:22;;17291:114;;;:::o;17411:184::-;17510:11;17544:6;17539:3;17532:19;17584:4;17579:3;17575:14;17560:29;;17411:184;;;;:::o;17601:132::-;17668:4;17691:3;17683:11;;17721:4;17716:3;17712:14;17704:22;;17601:132;;;:::o;17739:179::-;17808:10;17829:46;17871:3;17863:6;17829:46;:::i;:::-;17907:4;17902:3;17898:14;17884:28;;17739:179;;;;:::o;17924:113::-;17994:4;18026;18021:3;18017:14;18009:22;;17924:113;;;:::o;18073:732::-;18192:3;18221:54;18269:5;18221:54;:::i;:::-;18291:86;18370:6;18365:3;18291:86;:::i;:::-;18284:93;;18401:56;18451:5;18401:56;:::i;:::-;18480:7;18511:1;18496:284;18521:6;18518:1;18515:13;18496:284;;;18597:6;18591:13;18624:63;18683:3;18668:13;18624:63;:::i;:::-;18617:70;;18710:60;18763:6;18710:60;:::i;:::-;18700:70;;18556:224;18543:1;18540;18536:9;18531:14;;18496:284;;;18500:14;18796:3;18789:10;;18197:608;;;18073:732;;;;:::o;18811:875::-;19098:4;19136:3;19125:9;19121:19;19113:27;;19150:67;19214:1;19203:9;19199:17;19190:6;19150:67;:::i;:::-;19227:86;19309:2;19298:9;19294:18;19285:6;19227:86;:::i;:::-;19360:9;19354:4;19350:20;19345:2;19334:9;19330:18;19323:48;19388:108;19491:4;19482:6;19388:108;:::i;:::-;19380:116;;19543:9;19537:4;19533:20;19528:2;19517:9;19513:18;19506:48;19571:108;19674:4;19665:6;19571:108;:::i;:::-;19563:116;;18811:875;;;;;;;:::o;19692:90::-;19727:7;19770:5;19767:1;19756:20;19745:31;;19692:90;;;:::o;19788:112::-;19871:22;19887:5;19871:22;:::i;:::-;19866:3;19859:35;19788:112;;:::o;19906:214::-;19995:4;20033:2;20022:9;20018:18;20010:26;;20046:67;20110:1;20099:9;20095:17;20086:6;20046:67;:::i;:::-;19906:214;;;;:::o","linkReferences":{}},"methodIdentifiers":{"decryptTally()":"97202db6","decryptedTally(uint256)":"247db9ad","getDecryptedTally()":"a8b82db3","init()":"e1c7392a","options(uint256)":"409e2205","query()":"2c46b205","tallyDecryptionComplete()":"88574800","vote((uint256,uint8,uint8,bytes))":"bc11cb3f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"q\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"optList\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"got\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"expected\",\"type\":\"uint8\"}],\"name\":\"InvalidEncryptedInput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"value\",\"type\":\"int32\"}],\"name\":\"SecurityZoneOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"decryptTally\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"decryptedTally\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDecryptedTally\",\"outputs\":[{\"internalType\":\"uint32[]\",\"name\":\"\",\"type\":\"uint32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"options\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"query\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tallyDecryptionComplete\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"ctHash\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"securityZone\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"utype\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Euint8\",\"name\":\"encOption\",\"type\":\"tuple\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"decryptTally()\":{\"notice\":\"Decrypt all tally values synchronously\"},\"getDecryptedTally()\":{\"notice\":\"Get the decrypted tally (after decryption is complete)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FHVoting.sol\":\"FHVoting\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":@luxfi/contracts/=node_modules/@luxfi/contracts/\",\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"]},\"sources\":{\"contracts/FHVoting.sol\":{\"keccak256\":\"0x6d66678aad72fb137036ddd77ea37cde899670a70794d9145558e9f3b7f046b4\",\"license\":\"BSD-3-Clause-Clear\",\"urls\":[\"bzz-raw://4e1d3803547eb54d883701811244a551d44434626b8fb398c7e915167166c290\",\"dweb:/ipfs/QmYrUSoyrn8o2b7ye3JFQ2NnsSEgJPdPBBY2EUpurK6pYs\"]},\"node_modules/@luxfi/contracts/fhe/FHE.sol\":{\"keccak256\":\"0xa23998a8d39f62962df308163685e1efd5120e2204b74e20188e6144123d5424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c031db6aa4df5d66a45f07a789eece0675d8c8ecf87f34cdf6f1641cd750a6e9\",\"dweb:/ipfs/QmWJvZjkPAo8VrPpFQGCvvt4yqiX3tRLBFteYHj2qMtTqn\"]},\"node_modules/@luxfi/contracts/fhe/FHECommon.sol\":{\"keccak256\":\"0xb6e8e21a662629948f1b7ed86b847876f2f91059f35747a704a3ef0cd8d29c01\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76a878fa2af0597bdd79c85eb13736c6cc31137cb3da5f70d2512dc29b61d37\",\"dweb:/ipfs/QmXaaPiZkcDbZhqoW87mXuHgsvuXZfwxkrx48WMUBjhVFY\"]},\"node_modules/@luxfi/contracts/fhe/FHENetwork.sol\":{\"keccak256\":\"0x942a1bdad358f6e410e9713069e03876ee17434ae262fc725d6ccc978fdff337\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://888d85d302d90b4b0ad8ca529c27b0fec8aabcb46aedc4b314bc506a1b80682f\",\"dweb:/ipfs/QmTMWn1dF96KxZyNrpDUFDjafFqN2x9eDhcSpAWUqJhwbF\"]},\"node_modules/@luxfi/contracts/fhe/FHETypes.sol\":{\"keccak256\":\"0xc011b88033bd7ea040641926afd5a6df60180bb180d5fd46f835f127223cd445\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://838082044b5750417ba392770fd03b22c1709db6da79ce1572fecbab5503e264\",\"dweb:/ipfs/QmZGoP3XFmXxEaB5xh2nbBNst46ZmfuMWfpDVaZTeHZbhn\"]},\"node_modules/@luxfi/contracts/fhe/IFHE.sol\":{\"keccak256\":\"0x399d058a146a945053860ed404ca6b864b97e75ab253e14bd9b43c3a1a73bbb4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a7ae39b1701425c3946d12021818fb6474ad1de01c9af9c36a1b7df021264cc\",\"dweb:/ipfs/Qmc6qnbLTZQuAoxeyy7iWtCGynQVA3bqyEL4qsbtrfqP3y\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"q","type":"string"},{"internalType":"string[]","name":"optList","type":"string[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"got","type":"uint8"},{"internalType":"uint8","name":"expected","type":"uint8"}],"type":"error","name":"InvalidEncryptedInput"},{"inputs":[{"internalType":"int32","name":"value","type":"int32"}],"type":"error","name":"SecurityZoneOutOfBounds"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"decryptTally"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"decryptedTally","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getDecryptedTally","outputs":[{"internalType":"uint32[]","name":"","type":"uint32[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"init"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"options","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"query","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tallyDecryptionComplete","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct Euint8","name":"encOption","type":"tuple","components":[{"internalType":"uint256","name":"ctHash","type":"uint256"},{"internalType":"uint8","name":"securityZone","type":"uint8"},{"internalType":"uint8","name":"utype","type":"uint8"},{"internalType":"bytes","name":"signature","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"vote"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"decryptTally()":{"notice":"Decrypt all tally values synchronously"},"getDecryptedTally()":{"notice":"Get the decrypted tally (after decryption is complete)"}},"version":1}},"settings":{"remappings":["@luxfi/contracts/=node_modules/@luxfi/contracts/","@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/","eth-gas-reporter/=node_modules/eth-gas-reporter/","hardhat-deploy/=node_modules/hardhat-deploy/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":false,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/FHVoting.sol":"FHVoting"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/FHVoting.sol":{"keccak256":"0x6d66678aad72fb137036ddd77ea37cde899670a70794d9145558e9f3b7f046b4","urls":["bzz-raw://4e1d3803547eb54d883701811244a551d44434626b8fb398c7e915167166c290","dweb:/ipfs/QmYrUSoyrn8o2b7ye3JFQ2NnsSEgJPdPBBY2EUpurK6pYs"],"license":"BSD-3-Clause-Clear"},"node_modules/@luxfi/contracts/fhe/FHE.sol":{"keccak256":"0xa23998a8d39f62962df308163685e1efd5120e2204b74e20188e6144123d5424","urls":["bzz-raw://c031db6aa4df5d66a45f07a789eece0675d8c8ecf87f34cdf6f1641cd750a6e9","dweb:/ipfs/QmWJvZjkPAo8VrPpFQGCvvt4yqiX3tRLBFteYHj2qMtTqn"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHECommon.sol":{"keccak256":"0xb6e8e21a662629948f1b7ed86b847876f2f91059f35747a704a3ef0cd8d29c01","urls":["bzz-raw://d76a878fa2af0597bdd79c85eb13736c6cc31137cb3da5f70d2512dc29b61d37","dweb:/ipfs/QmXaaPiZkcDbZhqoW87mXuHgsvuXZfwxkrx48WMUBjhVFY"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHENetwork.sol":{"keccak256":"0x942a1bdad358f6e410e9713069e03876ee17434ae262fc725d6ccc978fdff337","urls":["bzz-raw://888d85d302d90b4b0ad8ca529c27b0fec8aabcb46aedc4b314bc506a1b80682f","dweb:/ipfs/QmTMWn1dF96KxZyNrpDUFDjafFqN2x9eDhcSpAWUqJhwbF"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/FHETypes.sol":{"keccak256":"0xc011b88033bd7ea040641926afd5a6df60180bb180d5fd46f835f127223cd445","urls":["bzz-raw://838082044b5750417ba392770fd03b22c1709db6da79ce1572fecbab5503e264","dweb:/ipfs/QmZGoP3XFmXxEaB5xh2nbBNst46ZmfuMWfpDVaZTeHZbhn"],"license":"MIT"},"node_modules/@luxfi/contracts/fhe/IFHE.sol":{"keccak256":"0x399d058a146a945053860ed404ca6b864b97e75ab253e14bd9b43c3a1a73bbb4","urls":["bzz-raw://8a7ae39b1701425c3946d12021818fb6474ad1de01c9af9c36a1b7df021264cc","dweb:/ipfs/Qmc6qnbLTZQuAoxeyy7iWtCGynQVA3bqyEL4qsbtrfqP3y"],"license":"MIT"}},"version":1},"id":1}