0x6080604052670de0b6b3a76400006000556000600155600060025560006003556000600455600160055560016006556000600755600060095573ff3780e04a5b186ed2857af5479f7c63e9a6f4b8600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561009957600080fd5b5033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550615c2d80620000eb6000396000f3006080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630649df31146100bc578063188f9b5b146100d3578063254ca6921461019f578063268c23a3146101e057806328a34c89146102215780634a8485ff1461025a57806355d58a1b1461029d57806369c212f61461038a5780638ba7cc9a146104f8578063b1954e9514610579578063def908fc146105ba578063f8a8fd6d146105e7575b005b3480156100c857600080fd5b506100d1610620565b005b61019d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610715565b005b3480156101ab57600080fd5b506101de600480360381019080803590602001909291908035906020019092919080359060200190929190505050611ac7565b005b3480156101ec57600080fd5b5061021f600480360381019080803590602001909291908035906020019092919080359060200190929190505050612413565b005b34801561022d57600080fd5b5061023661303d565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561026657600080fd5b5061029b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613056565b005b3480156102a957600080fd5b50610388600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019092919080359060200190929190505050613767565b005b34801561039657600080fd5b506103cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506144f0565b604051808d81526020018c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561044b578082015181840152602081019050610430565b50505050905090810190601f1680156104785780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156104b1578082015181840152602081019050610496565b50505050905090810190601f1680156104de5780820380516001836020036101000a031916815260200191505b509e50505050505050505050505050505060405180910390f35b34801561050457600080fd5b5061055f600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061480b565b604051808215151515815260200191505060405180910390f35b34801561058557600080fd5b506105b8600480360381019080803590602001909291908035906020019092919080359060200190929190505050614b53565b005b3480156105c657600080fd5b506105e560048036038101908080359060200190929190505050615030565b005b3480156105f357600080fd5b506105fc615094565b60405180848152602001838152602001828152602001935050505060405180910390f35b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561070b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f6e6c794f776e6572206d6574686f64732063616c6c6564206279206e6f6e2d81526020017f6f776e65722e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600981905550565b6000806000806000610725615a5c565b61072d615ab8565b6000339b50349a508a97506107418961480b565b15156107c5576107508961480b565b15156107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f436f6465206d757374206578697400000000000000000000000000000000000081525060200191505060405180910390fd5b5b6000546001028b10806107dc5750600054600f028b115b806109285750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166387c5d5cc8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835284818151815260200191508051906020019080838360005b83811015610890578082015181840152602081019050610875565b50505050905090810190601f1680156108bd5780820380516001836020036101000a031916815260200191505b508381038252600081526020016020019350505050602060405180830381600087803b1580156108ec57600080fd5b505af1158015610900573d6000803e3d6000fd5b505050506040513d602081101561091657600080fd5b81019080805190602001909291905050505b15610b0a576000546001028b101580156109475750600054600f028b11155b8015610a955750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166387c5d5cc8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808060200180602001838103835284818151815260200191508051906020019080838360005b838110156109fc5780820151818401526020810190506109e1565b50505050905090810190601f168015610a295780820380516001836020036101000a031916815260200191505b508381038252600081526020016020019350505050602060405180830381600087803b158015610a5857600080fd5b505af1158015610a6c573d6000803e3d6000fd5b505050506040513d6020811015610a8257600080fd5b8101908080519060200190929190505050155b1515610b09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6265747765656e203120616e642031350000000000000000000000000000000081525060200191505060405180910390fd5b5b600a60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002096508660110160009054906101000a900460ff168015610b6e57506002876010015414155b15610c1b57600054600f0288886002015489600b015401011115610c1a57600054600f0288886002015489600b0154010111151515610c15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f63616e206e6f74206265796f6e6420313520657468000000000000000000000081525060200191505060405180910390fd5b611ab9565b5b8a6003540160038190555060016004540160048190555060009550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631564ed9a8c6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610cc757600080fd5b505af1158015610cdb573d6000803e3d6000fd5b505050506040513d6020811015610cf157600080fd5b81019080805190602001909291905050509450600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632b66c516896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610d9557600080fd5b505af1158015610da9573d6000803e3d6000fd5b505050506040513d6020811015610dbf57600080fd5b8101908080519060200190929190505050935060016005541415610f3d57600097508a60025401600281905550610100604051908101604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020014281526020018b81526020018a8152602001600181526020016001815260200160008152509250600d839080600181540180825580915050906001820390600052602060002090600802016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003019080519060200190610ee7929190615b5c565b506080820151816004019080519060200190610f04929190615b5c565b5060a0820151816005015560c0820151816006015560e08201518160070155505050610f2f8b6150b0565b610f388b615120565b61108b565b8a6001540160018190555060019550610100604051908101604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020014281526020018b81526020018a815260200160008152602001600181526020016000815250925060009a50600d839080600181540180825580915050906001820390600052602060002090600802016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301908051906020019061104b929190615b5c565b506080820151816004019080519060200190611068929190615b5c565b5060a0820151816005015560c0820151816006015560e082015181600701555050505b600a60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061024060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d82018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561123e5780601f106112135761010080835404028352916020019161123e565b820191906000526020600020905b81548152906001019060200180831161122157829003601f168201915b50505050508152602001600e82018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112e05780601f106112b5576101008083540402835291602001916112e0565b820191906000526020600020905b8154815290600101906020018083116112c357829003601f168201915b50505050508152602001600f8201548152602001601082015481526020016011820160009054906101000a900460ff1615151515815250509150816102200151801561133157506001826102000151145b156116ae578a8260400151018260400181815250508a826060015101826060018181525050878261016001510182610160018181525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631564ed9a83604001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156113fd57600080fd5b505af1158015611411573d6000803e3d6000fd5b505050506040513d602081101561142757600080fd5b81019080805190602001909291905050509450600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632b66c5168361016001518460200151856040015101016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156114dc57600080fd5b505af11580156114f0573d6000803e3d6000fd5b505050506040513d602081101561150657600080fd5b810190808051906020019092919050505093508482610120018181525050838261018001818152505081600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d019080519060200190611650929190615b5c565b506101c082015181600e01908051906020019061166e929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff02191690831515021790555090505061194a565b85156116b957600094505b816102200151156116d557816101a001519950816101c0015198505b610240604051908101604052808d73ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018c81526020018c815260200160008152602001600081526020016000815260200160008152602001600081526020018681526020014281526020018981526020018581526020018b81526020018a8152602001600181526020016001815260200160011515815250915081600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d019080519060200190611890929190615b5c565b506101c082015181600e0190805190602001906118ae929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff0219169083151502179055509050508b600c6000600754815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600754016007819055505b600b8a6040518082805190602001908083835b602083101515611982578051825260208201915060208101905060208303925061195d565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ab8578b600b8b6040518082805190602001908083835b602083101515611a465780518252602082019150602081019050602083039250611a21565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b505050505050505050505050565b600080611ad2615ab8565b6000806000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f6e6c794f776e6572206d6574686f64732063616c6c6564206279206e6f6e2d81526020017f6f776e65722e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8895505b878611151561240857600c600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415156123fb57600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061024060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d82018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dee5780601f10611dc357610100808354040283529160200191611dee565b820191906000526020600020905b815481529060010190602001808311611dd157829003601f168201915b50505050508152602001600e82018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e905780601f10611e6557610100808354040283529160200191611e90565b820191906000526020600020905b815481529060010190602001808311611e7357829003601f168201915b50505050508152602001600f8201548152602001601082015481526020016011820160009054906101000a900460ff1615151515815250509350600184610200015114156123fa578361010001518460e00151019250600a600054811515611ef457fe5b04831015156123f9576103e8600054811515611f0c57fe5b04830392506000915060009050611f2283615190565b809250819350505081156120d457611f3e846000015182615241565b60008460e001818152505060008461010001818152505083600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d019080519060200190612076929190615b5c565b506101c082015181600e019080519060200190612094929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff0219169083151502179055509050506123f8565b83600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d0190805190602001906121f5929190615b5c565b506101c082015181600e019080519060200190612213929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff02191690831515021790555090505060008311156123f757612265846000015182615241565b60008460e001818152505060008461010001818152505083600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d01908051906020019061239d929190615b5c565b506101c082015181600e0190805190602001906123bb929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff0219169083151502179055509050505b5b5b5b5b8580600101965050611bc6565b505050505050505050565b600061241d615a5c565b6000612427615ab8565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612514576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f6e6c794f776e6572206d6574686f64732063616c6c6564206279206e6f6e2d81526020017f6f776e65722e000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8794505b8685101561303357600d8581548110151561252f57fe5b906000526020600020906008020161010060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561264d5780601f106126225761010080835404028352916020019161264d565b820191906000526020600020905b81548152906001019060200180831161263057829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126ef5780601f106126c4576101008083540402835291602001916126ef565b820191906000526020600020905b8154815290600101906020018083116126d257829003601f168201915b5050505050815260200160058201548152602001600682015481526020016007820154815250509350600b84606001516040518082805190602001908083835b602083101515612754578051825260208201915060208101905060208303925061272f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061024060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d82018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561295d5780601f106129325761010080835404028352916020019161295d565b820191906000526020600020905b81548152906001019060200180831161294057829003601f168201915b50505050508152602001600e82018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156129ff5780601f106129d4576101008083540402835291602001916129ff565b820191906000526020600020905b8154815290600101906020018083116129e257829003601f168201915b50505050508152602001600f8201548152602001601082015481526020016011820160009054906101000a900460ff161515151581525050915060018460a00151148015612a51575060018460c00151145b8015612a6557506206978084604001510142105b8015612a75575060058460e00151105b15612d405760018460e0015101600d86815481101515612a9157fe5b906000526020600020906008020160070181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637306a3818361012001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015612b3c57600080fd5b505af1158015612b50573d6000803e3d6000fd5b505050506040513d6020811015612b6657600080fd5b810190808051906020019092919050505090506103e884602001518202811515612b8c57fe5b0482610100015101826101000181815250506103e884602001518202811515612bb157fe5b048260c00151018260c001818152505081600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d019080519060200190612ce2929190615b5c565b506101c082015181600e019080519060200190612d00929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff021916908315150217905550905050613026565b60018460a00151148015612d58575060018460c00151145b8015612d7d57506206978084604001510142101580612d7c575060058460e0015110155b5b15613025576002600d86815481101515612d9357fe5b90600052602060002090600802016006018190555083602001518260400151038260400181815250508360200151826020015101826020018181525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631564ed9a83604001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015612e6557600080fd5b505af1158015612e79573d6000803e3d6000fd5b505050506040513d6020811015612e8f57600080fd5b81019080805190602001909291905050508261012001818152505081600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d019080519060200190612fcb929190615b5c565b506101c082015181600e019080519060200190612fe9929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff0219169083151502179055509050505b5b8480600101955050612518565b5050505050505050565b6000806000600354600454600554925092509250909192565b6000613060615ab8565b60008060008094508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561310b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f6163636f756e74206469666672656e740000000000000000000000000000000081525060200191505060405180910390fd5b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061024060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d82018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156132be5780601f10613293576101008083540402835291602001916132be565b820191906000526020600020905b8154815290600101906020018083116132a157829003601f168201915b50505050508152602001600e82018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156133605780601f1061333557610100808354040283529160200191613360565b820191906000526020600020905b81548152906001019060200180831161334357829003601f168201915b50505050508152602001600f8201548152602001601082015481526020016011820160009054906101000a900460ff16151515158152505093508360200151925060009150600090506133b283615190565b80925081935050508084608001510184608001818152505080846020015103846020018181525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631564ed9a85604001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561346f57600080fd5b505af1158015613483573d6000803e3d6000fd5b505050506040513d602081101561349957600080fd5b810190808051906020019092919050505084610120018181525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632b66c51685602001518660400151016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561354f57600080fd5b505af1158015613563573d6000803e3d6000fd5b505050506040513d602081101561357957600080fd5b81019080805190602001909291905050508461018001818152505083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d0190805190602001906136b5929190615b5c565b506101c082015181600e0190805190602001906136d3929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff021916908315150217905550905050600081111561375f578573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561375d573d6000803e3d6000fd5b505b505050505050565b600080613772615a5c565b61377a615ab8565b6000806009541415156137f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7468697320616374696f6e2077617320636c6f7365640000000000000000000081525060200191505060405180910390fd5b6000548a02995060005487029650600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631564ed9a8b6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561389457600080fd5b505af11580156138a8573d6000803e3d6000fd5b505050506040513d60208110156138be57600080fd5b81019080805190602001909291905050509450600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632b66c516888c016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561396457600080fd5b505af1158015613978573d6000803e3d6000fd5b505050506040513d602081101561398e57600080fd5b8101908080519060200190929190505050935060016005541480156139b3575060008a115b15613af257610100604051908101604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020014281526020018a81526020018981526020016001815260200160018152602001878152509250600d839080600181540180825580915050906001820390600052602060002090600802016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003019080519060200190613ab2929190615b5c565b506080820151816004019080519060200190613acf929190615b5c565b5060a0820151816005015560c0820151816006015560e082015181600701555050505b600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061024060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d82018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613ca55780601f10613c7a57610100808354040283529160200191613ca5565b820191906000526020600020905b815481529060010190602001808311613c8857829003601f168201915b50505050508152602001600e82018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613d475780601f10613d1c57610100808354040283529160200191613d47565b820191906000526020600020905b815481529060010190602001808311613d2a57829003601f168201915b50505050508152602001600f8201548152602001601082015481526020016011820160009054906101000a900460ff1615151515815250509150816102200151156140fe578682602001510182602001818152505089826040015101826040018181525050898a83606001510101826060018181525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631564ed9a83604001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613e5357600080fd5b505af1158015613e67573d6000803e3d6000fd5b505050506040513d6020811015613e7d57600080fd5b810190808051906020019092919050505082610120018181525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632b66c5168361016001518460200151856040015101016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613f3a57600080fd5b505af1158015613f4e573d6000803e3d6000fd5b505050506040513d6020811015613f6457600080fd5b81019080805190602001909291905050508261018001818152505081600a60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d0190805190602001906140a0929190615b5c565b506101c082015181600e0190805190602001906140be929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff021916908315150217905550905050614375565b610240604051908101604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018b81526020018b890181526020016000815260200160008152602001600081526020016000815260200160008152602001868152602001428152602001600081526020018581526020018a8152602001898152602001600181526020016001815260200160011515815250915081600a60008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d0190805190602001906142bb929190615b5c565b506101c082015181600e0190805190602001906142d9929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff0219169083151502179055509050508a600c6000600754815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600754016007819055505b600b896040518082805190602001908083835b6020831015156143ad5780518252602082019150602081019050602083039250614388565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156144e3578a600b8a6040518082805190602001908083835b602083101515614471578051825260208201915060208101905060208303925061444c565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050505050505050505050565b6000806000806000806000806000606080600061450b615ab8565b600a60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061024060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d82018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156146be5780601f10614693576101008083540402835291602001916146be565b820191906000526020600020905b8154815290600101906020018083116146a157829003601f168201915b50505050508152602001600e82018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156147605780601f1061473557610100808354040283529160200191614760565b820191906000526020600020905b81548152906001019060200180831161474357829003601f168201915b50505050508152602001600f8201548152602001601082015481526020016011820160009054906101000a900460ff1615151515815250509050806101600151816020015182604001518360a001518460c001518561018001518661020001518760e00151886101000151896101a001518a6101c001518b61012001518292508191509c509c509c509c509c509c509c509c509c509c509c509c505091939597999b5091939597999b565b600080614816615ab8565b600b846040518082805190602001908083835b60208310151561484e5780518252602082019150602081019050602083039250614829565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061024060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d82018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614a575780601f10614a2c57610100808354040283529160200191614a57565b820191906000526020600020905b815481529060010190602001808311614a3a57829003601f168201915b50505050508152602001600e82018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614af95780601f10614ace57610100808354040283529160200191614af9565b820191906000526020600020905b815481529060010190602001808311614adc57829003601f168201915b50505050508152602001600f8201548152602001601082015481526020016011820160009054906101000a900460ff161515151581525050905080610220015115614b475760019250614b4c565b600092505b5050919050565b600080614b5e615ab8565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526000815260200160200191505060405180910390fd5b8693505b858411151561502757600c600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561501a57600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061024060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d82018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614e2c5780601f10614e0157610100808354040283529160200191614e2c565b820191906000526020600020905b815481529060010190602001808311614e0f57829003601f168201915b50505050508152602001600e82018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614ece5780601f10614ea357610100808354040283529160200191614ece565b820191906000526020600020905b815481529060010190602001808311614eb157829003601f168201915b50505050508152602001600f8201548152602001601082015481526020016011820160009054906101000a900460ff16151515158152505091506001826102000151148015614f265750600054600102826040015110155b1561501957600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637306a3818361012001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015614fc157600080fd5b505af1158015614fd5573d6000803e3d6000fd5b505050506040513d6020811015614feb57600080fd5b81019080805190602001909291905050509050615014826101c001516001846040015184615297565b505050505b5b8380600101945050614c04565b50505050505050565b600073b6334ec4c7d77174d7d6405eb10d2f23db94dd9790508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561508f573d6000803e3d6000fd5b505050565b6000806000600d80549050600754600954925092509250909192565b600073602c1da5aa34a49e2a6c0bdf31db0408a22deba890508073ffffffffffffffffffffffffffffffffffffffff166108fc6019848115156150ef57fe5b049081150290604051600060405180830381858888f1935050505015801561511b573d6000803e3d6000fd5b505050565b600073c44731df937c14ffa5776dca7f43a6bccf62f42890508073ffffffffffffffffffffffffffffffffffffffff166108fc60648481151561515f57fe5b049081150290604051600060405180830381858888f1935050505015801561518b573d6000803e3d6000fd5b505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff16311115615231573073ffffffffffffffffffffffffffffffffffffffff1631831015156152255760003073ffffffffffffffffffffffffffffffffffffffff163111156152165760003073ffffffffffffffffffffffffffffffffffffffff16319150915061523c565b6000808090509150915061523c565b6001839150915061523c565b600080809050915091505b915091565b6000808391508290508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015615290573d6000803e3d6000fd5b5050505050565b60606000806000606060006152aa615ab8565b60008060006040805190810160405280600481526020017f6e756c6c000000000000000000000000000000000000000000000000000000008152509550600b8e6040518082805190602001908083835b60208310151561531f57805182526020820191506020810190506020830392506152fa565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061024060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d82018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156155285780601f106154fd57610100808354040283529160200191615528565b820191906000526020600020905b81548152906001019060200180831161550b57829003601f168201915b50505050508152602001600e82018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156155ca5780601f1061559f576101008083540402835291602001916155ca565b820191906000526020600020905b8154815290600101906020018083116155ad57829003601f168201915b50505050508152602001600f8201548152602001601082015481526020016011820160009054906101000a900460ff16151515158152505093508361022001518015615617575060198d11155b15615a3357836101c00151955060018461020001511415615a1757600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663326710628561018001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156156c857600080fd5b505af11580156156dc573d6000803e3d6000fd5b505050506040513d60208110156156f257600080fd5b81019080805190602001909291905050509250600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c1ee5708561018001518f6040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b1580156157a357600080fd5b505af11580156157b7573d6000803e3d6000fd5b505050506040513d60208110156157cd57600080fd5b81019080805190602001909291905050509150600090508360200151846101600151856040015101018c111515615806578b905061581b565b83602001518461016001518560400151010190505b600082141515615a16576064600a6103e884868f8602020281151561583c57fe5b0481151561584657fe5b0481151561585057fe5b048460e00151018460e00181815250506064600a6103e884868f8602020281151561587757fe5b0481151561588157fe5b0481151561588b57fe5b048460a00151018460a001818152505083600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d0190805190602001906159bc929190615b5c565b506101c082015181600e0190805190602001906159da929190615b5c565b506101e082015181600f015561020082015181601001556102208201518160110160006101000a81548160ff0219169083151502179055509050505b5b615a268660018f018e8e615297565b9950995099509950615a4b565b85600080600082925081915080905099509950995099505b505050505050945094509450949050565b61010060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160608152602001606081526020016000815260200160008152602001600081525090565b61024060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001606081526020016060815260200160008152602001600081526020016000151581525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615b9d57805160ff1916838001178555615bcb565b82800160010185558215615bcb579182015b82811115615bca578251825591602001919060010190615baf565b5b509050615bd89190615bdc565b5090565b615bfe91905b80821115615bfa576000816000905550600101615be2565b5090565b905600a165627a7a7230582035c41d30f3fc28237e9d0419ccb9a1c17df88a99c2f5e2eaa0c08332f8c5cbae0029