60806040523480156200001157600080fd5b50604051620062c3380380620062c3833981018060405260808110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b828101905060208101848111156200006757600080fd5b81518560018202830111640100000000821117156200008557600080fd5b50509291906020018051640100000000811115620000a257600080fd5b82810190506020810184811115620000b957600080fd5b8151856001820283011164010000000082111715620000d757600080fd5b50509291906020018051640100000000811115620000f457600080fd5b828101905060208101848111156200010b57600080fd5b81518560208202830111640100000000821117156200012957600080fd5b5050929190602001805190602001909291905050508383838260029080519060200190620001599291906200146c565b508160039080519060200190620001729291906200146c565b5080600490805190602001906200018b929190620014f3565b5060008090505b6004805490508110156200024057600160056000600484815481101515620001b657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000192565b50731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e000000000000000000000000000000000000000000815250600b0190506040518091039020306040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200036257600080fd5b505af115801562000377573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f4552433230546f6b656e00000000000000000000000000000000000000000000815250600a0190506040518091039020306040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200049c57600080fd5b505af1158015620004b1573d6000803e3d6000fd5b50505050505050620004ea620004d562000848640100000000026401000000009004565b62000850640100000000026401000000009004565b6000600a60006101000a81548160ff021916908315150217905550620005376200052262000848640100000000026401000000009004565b620008ba640100000000026401000000009004565b620005ca6200055462000848640100000000026401000000009004565b6200056d62000848640100000000026401000000009004565b836040805190810160405280600981526020017f496e6974206d696e740000000000000000000000000000000000000000000000815250602060405190810160405280600081525062000924640100000000026401000000009004565b731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e73526563697069656e74000000000000000000000081525060150190506040518091039020306040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015620006eb57600080fd5b505af115801562000700573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d3060405180807f455243373737546f6b656e7353656e646572000000000000000000000000000081525060120190506040518091039020306040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200082557600080fd5b505af11580156200083a573d6000803e3d6000fd5b5050505050505050620015f0565b600033905090565b62000874816009620009d464010000000002620038a2179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b620008de81600b620009d464010000000002620038a2179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600a60009054906101000a900460ff16151515620009aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b620009cd858585858562000ac3640100000000026200397f176401000000009004565b5050505050565b620009ef828262000e0b640100000000026401000000009004565b15151562000a65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151562000b69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b62000b8e8360015462000f2f64010000000002620049e2179091906401000000009004565b60018190555062000bf5836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000f2f64010000000002620049e2179091906401000000009004565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000c5985600086868686600162000fba640100000000026401000000009004565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101562000cf757808201518184015260208101905062000cda565b50505050905090810190601f16801562000d255780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101562000d6057808201518184015260208101905062000d43565b50505050905090810190601f16801562000d8e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151562000ed8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080828401905083811015151562000fb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156200109557600080fd5b505afa158015620010aa573d6000803e3d6000fd5b505050506040513d6020811015620010c157600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151562001315578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015620012395780820151818401526020810190506200121c565b50505050905090810190601f168015620012675780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015620012a257808201518184015260208101905062001285565b50505050905090810190601f168015620012d05780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015620012f657600080fd5b505af11580156200130b573d6000803e3d6000fd5b5050505062001415565b81156200141457620013518673ffffffffffffffffffffffffffffffffffffffff166200141f64010000000002620035b0176401000000009004565b15151562001413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b8152602001807f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637481526020017f20686173206e6f20696d706c656d656e7420666f7220455243373737546f6b6581526020017f6e73526563697069656e7400000000000000000000000000000000000000000081525060600191505060405180910390fd5b5b5b5050505050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4706001029050833f915060006001028214158015620014635750808214155b92505050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620014af57805160ff1916838001178555620014e0565b82800160010185558215620014e0579182015b82811115620014df578251825591602001919060010190620014c2565b5b509050620014ef919062001582565b5090565b8280548282559060005260206000209081019282156200156f579160200282015b828111156200156e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062001514565b5b5090506200157e9190620015aa565b5090565b620015a791905b80821115620015a357600081600090555060010162001589565b5090565b90565b620015ed91905b80821115620015e957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620015b1565b5090565b90565b614cc380620016006000396000f3fe60806040526004361061017f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806223de29146101ed57806306e485381461033257806306fdde031461039e578063095ea7b31461042e57806318160ddd146104a157806323b872dd146104cc578063313ce5671461055f5780633f4ba83a1461059057806346fbf68e146105a7578063556f0dc7146106105780635c975abb1461063b57806362ad1b831461066a5780636ef8d66d1461078f57806370a08231146107a657806375ab97821461080b57806382dc1ec4146109505780638456cb59146109a157806394d008ef146109b8578063959b8c3f14610a6857806395d89b4114610ab9578063983b2d5614610b495780639865027514610b9a5780639bd9bbc614610bb1578063a9059cbb14610c61578063aa271e1a14610cd4578063d95b637114610d3d578063dd62ed3e14610dc6578063fad8b32a14610e4b578063fc673c4f14610e9c578063fe9d930314610fa1575b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f742070617961626c6520636f6e747261637400000000000000000000000081525060200191505060405180910390fd5b3480156101f957600080fd5b50610330600480360360c081101561021057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561029757600080fd5b8201836020820111156102a957600080fd5b803590602001918460018302840111640100000000831117156102cb57600080fd5b9091929391929390803590602001906401000000008111156102ec57600080fd5b8201836020820111156102fe57600080fd5b8035906020019184600183028401116401000000008311171561032057600080fd5b9091929391929390505050611031565b005b34801561033e57600080fd5b5061034761109f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038a57808201518184015260208101905061036f565b505050509050019250505060405180910390f35b3480156103aa57600080fd5b506103b361112d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f35780820151818401526020810190506103d8565b50505050905090810190601f1680156104205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043a57600080fd5b506104876004803603604081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111cf565b604051808215151515815260200191505060405180910390f35b3480156104ad57600080fd5b506104b66111f2565b6040518082815260200191505060405180910390f35b3480156104d857600080fd5b50610545600480360360608110156104ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111fc565b604051808215151515815260200191505060405180910390f35b34801561056b57600080fd5b5061057461152e565b604051808260ff1660ff16815260200191505060405180910390f35b34801561059c57600080fd5b506105a5611537565b005b3480156105b357600080fd5b506105f6600480360360208110156105ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ec565b604051808215151515815260200191505060405180910390f35b34801561061c57600080fd5b50610625611709565b6040518082815260200191505060405180910390f35b34801561064757600080fd5b50610650611712565b604051808215151515815260200191505060405180910390f35b34801561067657600080fd5b5061078d600480360360a081101561068d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106f457600080fd5b82018360208201111561070657600080fd5b8035906020019184600183028401116401000000008311171561072857600080fd5b90919293919293908035906020019064010000000081111561074957600080fd5b82018360208201111561075b57600080fd5b8035906020019184600183028401116401000000008311171561077d57600080fd5b9091929391929390505050611729565b005b34801561079b57600080fd5b506107a461187c565b005b3480156107b257600080fd5b506107f5600480360360208110156107c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061188e565b6040518082815260200191505060405180910390f35b34801561081757600080fd5b5061094e600480360360c081101561082e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156108b557600080fd5b8201836020820111156108c757600080fd5b803590602001918460018302840111640100000000831117156108e957600080fd5b90919293919293908035906020019064010000000081111561090a57600080fd5b82018360208201111561091c57600080fd5b8035906020019184600183028401116401000000008311171561093e57600080fd5b90919293919293905050506118d6565b005b34801561095c57600080fd5b5061099f6004803603602081101561097357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611944565b005b3480156109ad57600080fd5b506109b66119fa565b005b3480156109c457600080fd5b50610a66600480360360608110156109db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610a2257600080fd5b820183602082011115610a3457600080fd5b80359060200191846001830284011164010000000083111715610a5657600080fd5b9091929391929390505050611bb0565b005b348015610a7457600080fd5b50610ab760048036036020811015610a8b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cc8565b005b348015610ac557600080fd5b50610ace611cd4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b0e578082015181840152602081019050610af3565b50505050905090810190601f168015610b3b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b5557600080fd5b50610b9860048036036020811015610b6c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d76565b005b348015610ba657600080fd5b50610baf611e2c565b005b348015610bbd57600080fd5b50610c5f60048036036060811015610bd457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610c1b57600080fd5b820183602082011115610c2d57600080fd5b80359060200191846001830284011164010000000083111715610c4f57600080fd5b9091929391929390505050611e3e565b005b348015610c6d57600080fd5b50610cba60048036036040811015610c8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611eb6565b604051808215151515815260200191505060405180910390f35b348015610ce057600080fd5b50610d2360048036036020811015610cf757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612025565b604051808215151515815260200191505060405180910390f35b348015610d4957600080fd5b50610dac60048036036040811015610d6057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612042565b604051808215151515815260200191505060405180910390f35b348015610dd257600080fd5b50610e3560048036036040811015610de957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f3565b6040518082815260200191505060405180910390f35b348015610e5757600080fd5b50610e9a60048036036020811015610e6e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061227a565b005b348015610ea857600080fd5b50610f9f60048036036080811015610ebf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610f0657600080fd5b820183602082011115610f1857600080fd5b80359060200191846001830284011164010000000083111715610f3a57600080fd5b909192939192939080359060200190640100000000811115610f5b57600080fd5b820183602082011115610f6d57600080fd5b80359060200191846001830284011164010000000083111715610f8f57600080fd5b9091929391929390505050612286565b005b348015610fad57600080fd5b5061102f60048036036040811015610fc457600080fd5b810190808035906020019092919080359060200190640100000000811115610feb57600080fd5b820183602082011115610ffd57600080fd5b8035906020019184600183028401116401000000008311171561101f57600080fd5b90919293919293905050506123d5565b005b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f546f6b656e732063616e6e6f742062652061636365707465640000000000000081525060200191505060405180910390fd5b6060600480548060200260200160405190810160405280929190818152602001828054801561112357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116110d9575b5050505050905090565b606060028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111c55780601f1061119a576101008083540402835291602001916111c5565b820191906000526020600020905b8154815290600101906020018083116111a857829003601f168201915b5050505050905090565b6000806111da612449565b90506111e7818585612451565b600191505092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4552433737373a207472616e7366657220746f20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611393576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4552433737373a207472616e736665722066726f6d20746865207a65726f206181526020017f646472657373000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600061139d612449565b90506113cd81868686602060405190810160405280600081525060206040519081016040528060008152506124e6565b6113fb818686866020604051908101604052806000815250602060405190810160405280600081525061283a565b6114f285826114ed86606060405190810160405280602981526020017f4552433737373a207472616e7366657220616d6f756e7420657863656564732081526020017f616c6c6f77616e63650000000000000000000000000000000000000000000000815250600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d59092919063ffffffff16565b612451565b61152281868686602060405190810160405280600081525060206040519081016040528060008152506000612997565b60019150509392505050565b60006012905090565b611547611542612449565b6116ec565b15156115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f506175736572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f207468652050617573657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b600a60009054906101000a900460ff161515611665576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600a60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6116a9612449565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000611702826009612dd790919063ffffffff16565b9050919050565b60006001905090565b6000600a60009054906101000a900460ff16905090565b61173a611734612449565b88612042565b15156117d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f81526020017f7220666f7220686f6c646572000000000000000000000000000000000000000081525060400191505060405180910390fd5b6118736117df612449565b88888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001612efa565b50505050505050565b61188c611887612449565b612f97565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6b656e732063616e6e6f742062652073656e64656400000000000000000081525060200191505060405180910390fd5b61195461194f612449565b6116ec565b15156119ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f506175736572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f207468652050617573657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b6119f781612ff1565b50565b611a0a611a05612449565b6116ec565b1515611aa4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f506175736572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f207468652050617573657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b600a60009054906101000a900460ff16151515611b29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611b6d612449565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b611bc0611bbb612449565b612025565b1515611c5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b611cc2611c65612449565b858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050602060405190810160405280600081525061304b565b50505050565b611cd1816130e4565b50565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d6c5780601f10611d4157610100808354040283529160200191611d6c565b820191906000526020600020905b815481529060010190602001808311611d4f57829003601f168201915b5050505050905090565b611d86611d81612449565b612025565b1515611e20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766581526020017f20746865204d696e74657220726f6c650000000000000000000000000000000081525060400191505060405180910390fd5b611e2981613175565b50565b611e3c611e37612449565b6131cf565b565b611eb0611e49612449565b611e51612449565b868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060206040519081016040528060008152506001612efa565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611f82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4552433737373a207472616e7366657220746f20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000611f8c612449565b9050611fbc81828686602060405190810160405280600081525060206040519081016040528060008152506124e6565b611fea818286866020604051908101604052806000815250602060405190810160405280600081525061283a565b61201a81828686602060405190810160405280600081525060206040519081016040528060008152506000612997565b600191505092915050565b600061203b82600b612dd790919063ffffffff16565b9050919050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061215a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121595750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b806121eb5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61228381613229565b50565b612297612291612449565b87612042565b1515612331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f81526020017f7220666f7220686f6c646572000000000000000000000000000000000000000081525060400191505060405180910390fd5b6123cd61233c612449565b878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506132ba565b505050505050565b6124446123e0612449565b6123e8612449565b8585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060206040519081016040528060008152506132ba565b505050565b600033905090565b600a60009054906101000a900460ff161515156124d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6124e1838383613353565b505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b1580156125c057600080fd5b505afa1580156125d4573d6000803e3d6000fd5b505050506040513d60208110156125ea57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515612831578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612760578082015181840152602081019050612745565b50505050905090810190601f16801561278d5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156127c65780820151818401526020810190506127ab565b50505050905090810190601f1680156127f35780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561281857600080fd5b505af115801561282c573d6000803e3d6000fd5b505050505b50505050505050565b600a60009054906101000a900460ff161515156128bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6128cd868686868686613509565b505050505050565b60008383111582901515612984576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561294957808201518184015260208101905061292e565b50505050905090810190601f1680156129765780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6001026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015612a7157600080fd5b505afa158015612a85573d6000803e3d6000fd5b505050506040513d6020811015612a9b57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515612ce5578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015612c10578082015181840152602081019050612bf5565b50505050905090810190601f168015612c3d5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015612c76578082015181840152602081019050612c5b565b50505050905090810190601f168015612ca35780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015612cc857600080fd5b505af1158015612cdc573d6000803e3d6000fd5b50505050612dcd565b8115612dcc57612d0a8673ffffffffffffffffffffffffffffffffffffffff166135b0565b151515612dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604b8152602001807f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637481526020017f20686173206e6f20696d706c656d656e7420666f7220455243373737546f6b6581526020017f6e73526563697069656e7400000000000000000000000000000000000000000081525060600191505060405180910390fd5b5b5b5050505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612ea3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600a60009054906101000a900460ff16151515612f7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b612f8e878787878787876135fc565b50505050505050565b612fab8160096137a090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b6130058160096138a290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600a60009054906101000a900460ff161515156130d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6130dd858585858561397f565b5050505050565b600a60009054906101000a900460ff16151515613169576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61317281613c8f565b50565b61318981600b6138a290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b6131e381600b6137a090919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b600a60009054906101000a900460ff161515156132ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6132b781613f4b565b50565b600a60009054906101000a900460ff1615151561333f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b61334c8585858585614207565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561341e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f4552433737373a20617070726f766520746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061351484614599565b9050600061358982606060405190810160405280602281526020017f4552433737373a2066656520616d6f756e7420657863656564732062616c616e81526020017f6365000000000000000000000000000000000000000000000000000000000000815250876128d59092919063ffffffff16565b90506135988888848787614207565b6135a688888884888861469b565b5050505050505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4706001029050833f9150600060010282141580156135f35750808214155b92505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141515156136c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4552433737373a2073656e642066726f6d20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561376c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a2073656e6420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b61377a8787878787876124e6565b61378887878787878761283a565b61379787878787878787612997565b50505050505050565b6137aa8282612dd7565b1515613844576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c81526020017f650000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6138ac8282612dd7565b151515613921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613a24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433737373a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613a39836001546149e290919063ffffffff16565b600181905550613a90836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546149e290919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ae3856000868686866001612997565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015613b7f578082015181840152602081019050613b64565b50505050905090810190601f168015613bac5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015613be5578082015181840152602081019050613bca565b50505050905090810190601f168015613c125780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b8073ffffffffffffffffffffffffffffffffffffffff16613cae612449565b73ffffffffffffffffffffffffffffffffffffffff1614151515613d60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f4552433737373a20617574686f72697a696e672073656c66206173206f70657281526020017f61746f720000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e4a5760076000613dbe612449565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055613ee7565b600160066000613e58612449565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613eef612449565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b613f53612449565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561401c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4552433737373a207265766f6b696e672073656c66206173206f70657261746f81526020017f720000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561410f5760016007600061407c612449565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506141a3565b6006600061411b612449565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b6141ab612449565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156142d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f4552433737373a206275726e2066726f6d20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6142e1858560008686866124e6565b61439083606060405190810160405280602381526020017f4552433737373a206275726e20616d6f756e7420657863656564732062616c6181526020017f6e636500000000000000000000000000000000000000000000000000000000008152506000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d59092919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143e783600154614a6c90919063ffffffff16565b6001819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561448957808201518184015260208101905061446e565b50505050905090810190601f1680156144b65780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156144ef5780820151818401526020810190506144d4565b50505050905090810190601f16801561451c5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b60006146946006600a0a6146866146606a0422ca8b0a00a4250000003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561461757600080fd5b505afa15801561462b573d6000803e3d6000fd5b505050506040513d602081101561464157600080fd5b8101908080519060200190929190505050614ab690919063ffffffff16565b61467860fa61ffff1687614b0090919063ffffffff16565b614b0090919063ffffffff16565b614ab690919063ffffffff16565b9050919050565b61474a83606060405190810160405280602781526020017f4552433737373a207472616e7366657220616d6f756e7420657863656564732081526020017f62616c616e6365000000000000000000000000000000000000000000000000008152506000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d59092919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147dd836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546149e290919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156148d25780820151818401526020810190506148b7565b50505050905090810190601f1680156148ff5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561493857808201518184015260208101905061491d565b50505050905090810190601f1680156149655780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050565b6000808284019050838110151515614a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000614aae83836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128d5565b905092915050565b6000614af883836040805190810160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614bcd565b905092915050565b600080831415614b135760009050614bc7565b60008284029050828482811515614b2657fe5b04141515614bc2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b600080831182901515614c7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614c40578082015181840152602081019050614c25565b50505050905090810190601f168015614c6d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385811515614c8957fe5b04905080915050939250505056fea165627a7a72305820c1bab4b5e3e40f4294e652b388dfc625ccf21445b4e184e78b601a51d58a2cc20029000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000422ca7d2949f07d9c0000000000000000000000000000000000000000000000000000000000000000000f4e4e4350726f6a656374546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044e4e43540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000003b4bfd216531e313aca3c878c04c8ccb109bb7a3