60806040527385f740958906b317de6ed79663012859067e745b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60006101000a81548160ff021916908315150217905550612a0a600e553480156200008757600080fd5b506040518060400160405280601281526020017f5468655769636b65645374616c6c696f6e7300000000000000000000000000008152506040518060400160405280600381526020017f545753000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200010c929190620001e7565b50806001908051906020019062000125929190620001e7565b50505060006200013a620001df60201b60201c565b905080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002fc565b600033905090565b828054620001f59062000297565b90600052602060002090601f01602090048101928262000219576000855562000265565b82601f106200023457805160ff191683800117855562000265565b8280016001018555821562000265579182015b828111156200026457825182559160200191906001019062000247565b5b50905062000274919062000278565b5090565b5b808211156200029357600081600090555060010162000279565b5090565b60006002820490506001821680620002b057607f821691505b60208210811415620002c757620002c6620002cd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b614108806200030c6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806355f804b3116100f9578063b88d4fde11610097578063eb8d244411610071578063eb8d2444146104cc578063f2fde38b146104ea578063fe8abb7414610506578063ff30487414610524576101a9565b8063b88d4fde14610450578063c87b56dd1461046c578063e985e9c51461049c576101a9565b8063715018a6116100d3578063715018a6146103ee5780638da5cb5b146103f857806395d89b4114610416578063a22cb46514610434576101a9565b806355f804b3146103725780636352211e1461038e57806370a08231146103be576101a9565b806323b872dd1161016657806334918dfd1161014057806334918dfd146102fe57806342842e0e146103085780634f6ccce7146103245780635134442a14610354576101a9565b806323b872dd146102825780632f745c591461029e57806333c41a90146102ce576101a9565b806301ffc9a7146101ae57806306fdde03146101de578063081812fc146101fc578063095ea7b31461022c578063109695231461024857806318160ddd14610264575b600080fd5b6101c860048036038101906101c39190612c7c565b610540565b6040516101d59190613269565b60405180910390f35b6101e66105ba565b6040516101f39190613284565b60405180910390f35b61021660048036038101906102119190612d0f565b61064c565b60405161022391906131d9565b60405180910390f35b61024660048036038101906102419190612c40565b6106d1565b005b610262600480360381019061025d9190612cce565b6107e9565b005b61026c61087f565b60405161027991906135a6565b60405180910390f35b61029c60048036038101906102979190612b3a565b61088c565b005b6102b860048036038101906102b39190612c40565b6108ec565b6040516102c591906135a6565b60405180910390f35b6102e860048036038101906102e39190612d0f565b610991565b6040516102f59190613269565b60405180910390f35b6103066109e7565b005b610322600480360381019061031d9190612b3a565b610a8f565b005b61033e60048036038101906103399190612d0f565b610aaf565b60405161034b91906135a6565b60405180910390f35b61035c610b46565b6040516103699190613284565b60405180910390f35b61038c60048036038101906103879190612cce565b610bd4565b005b6103a860048036038101906103a39190612d0f565b610c6a565b6040516103b591906131d9565b60405180910390f35b6103d860048036038101906103d39190612ad5565b610d1c565b6040516103e591906135a6565b60405180910390f35b6103f6610dd4565b005b610400610f11565b60405161040d91906131d9565b60405180910390f35b61041e610f3b565b60405161042b9190613284565b60405180910390f35b61044e60048036038101906104499190612c04565b610fcd565b005b61046a60048036038101906104659190612b89565b61114e565b005b61048660048036038101906104819190612d0f565b6111b0565b6040516104939190613284565b60405180910390f35b6104b660048036038101906104b19190612afe565b611257565b6040516104c39190613269565b60405180910390f35b6104d46112eb565b6040516104e19190613269565b60405180910390f35b61050460048036038101906104ff9190612ad5565b6112fe565b005b61050e6114aa565b60405161051b91906135a6565b60405180910390f35b61053e60048036038101906105399190612d61565b6114b0565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105b357506105b282611814565b5b9050919050565b6060600080546105c9906137fc565b80601f01602080910402602001604051908101604052809291908181526020018280546105f5906137fc565b80156106425780601f1061061757610100808354040283529160200191610642565b820191906000526020600020905b81548152906001019060200180831161062557829003601f168201915b5050505050905090565b6000610657826118f6565b610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068d90613466565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106dc82610c6a565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074490613526565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661076c611962565b73ffffffffffffffffffffffffffffffffffffffff16148061079b575061079a81610795611962565b611257565b5b6107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d1906133c6565b60405180910390fd5b6107e4838361196a565b505050565b6107f1611962565b73ffffffffffffffffffffffffffffffffffffffff1661080f610f11565b73ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085c90613486565b60405180910390fd5b80600c908051906020019061087b9291906128e4565b5050565b6000600880549050905090565b61089d610897611962565b82611a23565b6108dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d390613546565b60405180910390fd5b6108e7838383611b01565b505050565b60006108f783610d1c565b8210610938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092f906132a6565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6000600e5482106109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce90613506565b60405180910390fd5b6109e0826118f6565b9050919050565b6109ef611962565b73ffffffffffffffffffffffffffffffffffffffff16610a0d610f11565b73ffffffffffffffffffffffffffffffffffffffff1614610a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5a90613486565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b610aaa8383836040518060200160405280600081525061114e565b505050565b6000610ab961087f565b8210610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af190613566565b60405180910390fd5b60088281548110610b34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b600c8054610b53906137fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7f906137fc565b8015610bcc5780601f10610ba157610100808354040283529160200191610bcc565b820191906000526020600020905b815481529060010190602001808311610baf57829003601f168201915b505050505081565b610bdc611962565b73ffffffffffffffffffffffffffffffffffffffff16610bfa610f11565b73ffffffffffffffffffffffffffffffffffffffff1614610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4790613486565b60405180910390fd5b80600f9080519060200190610c669291906128e4565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90613426565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8490613406565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ddc611962565b73ffffffffffffffffffffffffffffffffffffffff16610dfa610f11565b73ffffffffffffffffffffffffffffffffffffffff1614610e50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4790613486565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610f4a906137fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610f76906137fc565b8015610fc35780601f10610f9857610100808354040283529160200191610fc3565b820191906000526020600020905b815481529060010190602001808311610fa657829003601f168201915b5050505050905090565b610fd5611962565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103a90613346565b60405180910390fd5b8060056000611050611962565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166110fd611962565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111429190613269565b60405180910390a35050565b61115f611159611962565b83611a23565b61119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590613546565b60405180910390fd5b6111aa84848484611d5d565b50505050565b60606111bb826118f6565b6111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f1906134e6565b60405180910390fd5b6000611204611db9565b90506000815111611224576040518060200160405280600081525061124f565b8061122e84611e4b565b60405160200161123f9291906131b5565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600d60009054906101000a900460ff1681565b611306611962565b73ffffffffffffffffffffffffffffffffffffffff16611324610f11565b73ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137190613486565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e1906132e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b600d60009054906101000a900460ff166114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f6906134a6565b60405180910390fd5b60008111611542576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611539906133a6565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161159f91906131d9565b60206040518083038186803b1580156115b757600080fd5b505afa1580156115cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ef9190612d38565b905060008111611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b90613386565b60405180910390fd5b81811015611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e906133e6565b60405180910390fd5b8183611683919061368b565b8110156116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc906133e6565b60405180910390fd5b60005b81811080156116d657508281105b1561180e57600e546116e661087f565b10611726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171d90613586565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f745c59338785611773919061368b565b6040518363ffffffff1660e01b8152600401611790929190613240565b60206040518083038186803b1580156117a857600080fd5b505afa1580156117bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e09190612d38565b90506117eb816118f6565b6117fa576117f93382611ff8565b5b5080806118069061385f565b9150506116c8565b50505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806118df57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806118ef57506118ee82612016565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166119dd83610c6a565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611a2e826118f6565b611a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6490613366565b60405180910390fd5b6000611a7883610c6a565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ae757508373ffffffffffffffffffffffffffffffffffffffff16611acf8461064c565b73ffffffffffffffffffffffffffffffffffffffff16145b80611af85750611af78185611257565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611b2182610c6a565b73ffffffffffffffffffffffffffffffffffffffff1614611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e906134c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde90613326565b60405180910390fd5b611bf2838383612080565b611bfd60008261196a565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c4d9190613712565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ca4919061368b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611d68848484611b01565b611d7484848484612194565b611db3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daa906132c6565b60405180910390fd5b50505050565b6060600f8054611dc8906137fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611df4906137fc565b8015611e415780601f10611e1657610100808354040283529160200191611e41565b820191906000526020600020905b815481529060010190602001808311611e2457829003601f168201915b5050505050905090565b60606000821415611e93576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611ff3565b600082905060005b60008214611ec5578080611eae9061385f565b915050600a82611ebe91906136e1565b9150611e9b565b60008167ffffffffffffffff811115611f07577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611f395781602001600182028036833780820191505090505b5090505b60008514611fec57600182611f529190613712565b9150600a85611f6191906138a8565b6030611f6d919061368b565b60f81b818381518110611fa9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611fe591906136e1565b9450611f3d565b8093505050505b919050565b61201282826040518060200160405280600081525061232b565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61208b838383612386565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120ce576120c98161238b565b61210d565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461210c5761210b83826123d4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121505761214b81612541565b61218f565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461218e5761218d8282612684565b5b5b505050565b60006121b58473ffffffffffffffffffffffffffffffffffffffff16612703565b1561231e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121de611962565b8786866040518563ffffffff1660e01b815260040161220094939291906131f4565b602060405180830381600087803b15801561221a57600080fd5b505af192505050801561224b57506040513d601f19601f820116820180604052508101906122489190612ca5565b60015b6122ce573d806000811461227b576040519150601f19603f3d011682016040523d82523d6000602084013e612280565b606091505b506000815114156122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd906132c6565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612323565b600190505b949350505050565b6123358383612716565b6123426000848484612194565b612381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612378906132c6565b60405180910390fd5b505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016123e184610d1c565b6123eb9190613712565b90506000600760008481526020019081526020016000205490508181146124d0576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506125559190613712565b90506000600960008481526020019081526020016000205490506000600883815481106125ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080600883815481106125f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612668577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061268f83610d1c565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277d90613446565b60405180910390fd5b61278f816118f6565b156127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c690613306565b60405180910390fd5b6127db60008383612080565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461282b919061368b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b8280546128f0906137fc565b90600052602060002090601f0160209004810192826129125760008555612959565b82601f1061292b57805160ff1916838001178555612959565b82800160010185558215612959579182015b8281111561295857825182559160200191906001019061293d565b5b509050612966919061296a565b5090565b5b8082111561298357600081600090555060010161296b565b5090565b600061299a612995846135e6565b6135c1565b9050828152602081018484840111156129b257600080fd5b6129bd8482856137ba565b509392505050565b60006129d86129d384613617565b6135c1565b9050828152602081018484840111156129f057600080fd5b6129fb8482856137ba565b509392505050565b600081359050612a1281614076565b92915050565b600081359050612a278161408d565b92915050565b600081359050612a3c816140a4565b92915050565b600081519050612a51816140a4565b92915050565b600082601f830112612a6857600080fd5b8135612a78848260208601612987565b91505092915050565b600082601f830112612a9257600080fd5b8135612aa28482602086016129c5565b91505092915050565b600081359050612aba816140bb565b92915050565b600081519050612acf816140bb565b92915050565b600060208284031215612ae757600080fd5b6000612af584828501612a03565b91505092915050565b60008060408385031215612b1157600080fd5b6000612b1f85828601612a03565b9250506020612b3085828601612a03565b9150509250929050565b600080600060608486031215612b4f57600080fd5b6000612b5d86828701612a03565b9350506020612b6e86828701612a03565b9250506040612b7f86828701612aab565b9150509250925092565b60008060008060808587031215612b9f57600080fd5b6000612bad87828801612a03565b9450506020612bbe87828801612a03565b9350506040612bcf87828801612aab565b925050606085013567ffffffffffffffff811115612bec57600080fd5b612bf887828801612a57565b91505092959194509250565b60008060408385031215612c1757600080fd5b6000612c2585828601612a03565b9250506020612c3685828601612a18565b9150509250929050565b60008060408385031215612c5357600080fd5b6000612c6185828601612a03565b9250506020612c7285828601612aab565b9150509250929050565b600060208284031215612c8e57600080fd5b6000612c9c84828501612a2d565b91505092915050565b600060208284031215612cb757600080fd5b6000612cc584828501612a42565b91505092915050565b600060208284031215612ce057600080fd5b600082013567ffffffffffffffff811115612cfa57600080fd5b612d0684828501612a81565b91505092915050565b600060208284031215612d2157600080fd5b6000612d2f84828501612aab565b91505092915050565b600060208284031215612d4a57600080fd5b6000612d5884828501612ac0565b91505092915050565b60008060408385031215612d7457600080fd5b6000612d8285828601612aab565b9250506020612d9385828601612aab565b9150509250929050565b612da681613746565b82525050565b612db581613758565b82525050565b6000612dc682613648565b612dd0818561365e565b9350612de08185602086016137c9565b612de981613995565b840191505092915050565b6000612dff82613653565b612e09818561366f565b9350612e198185602086016137c9565b612e2281613995565b840191505092915050565b6000612e3882613653565b612e428185613680565b9350612e528185602086016137c9565b80840191505092915050565b6000612e6b602b8361366f565b9150612e76826139a6565b604082019050919050565b6000612e8e60328361366f565b9150612e99826139f5565b604082019050919050565b6000612eb160268361366f565b9150612ebc82613a44565b604082019050919050565b6000612ed4601c8361366f565b9150612edf82613a93565b602082019050919050565b6000612ef760248361366f565b9150612f0282613abc565b604082019050919050565b6000612f1a60198361366f565b9150612f2582613b0b565b602082019050919050565b6000612f3d602c8361366f565b9150612f4882613b34565b604082019050919050565b6000612f6060318361366f565b9150612f6b82613b83565b604082019050919050565b6000612f83601f8361366f565b9150612f8e82613bd2565b602082019050919050565b6000612fa660388361366f565b9150612fb182613bfb565b604082019050919050565b6000612fc960518361366f565b9150612fd482613c4a565b606082019050919050565b6000612fec602a8361366f565b9150612ff782613cbf565b604082019050919050565b600061300f60298361366f565b915061301a82613d0e565b604082019050919050565b600061303260208361366f565b915061303d82613d5d565b602082019050919050565b6000613055602c8361366f565b915061306082613d86565b604082019050919050565b600061307860208361366f565b915061308382613dd5565b602082019050919050565b600061309b60268361366f565b91506130a682613dfe565b604082019050919050565b60006130be60298361366f565b91506130c982613e4d565b604082019050919050565b60006130e1602f8361366f565b91506130ec82613e9c565b604082019050919050565b600061310460218361366f565b915061310f82613eeb565b604082019050919050565b600061312760218361366f565b915061313282613f3a565b604082019050919050565b600061314a60318361366f565b915061315582613f89565b604082019050919050565b600061316d602c8361366f565b915061317882613fd8565b604082019050919050565b600061319060258361366f565b915061319b82614027565b604082019050919050565b6131af816137b0565b82525050565b60006131c18285612e2d565b91506131cd8284612e2d565b91508190509392505050565b60006020820190506131ee6000830184612d9d565b92915050565b60006080820190506132096000830187612d9d565b6132166020830186612d9d565b61322360408301856131a6565b81810360608301526132358184612dbb565b905095945050505050565b60006040820190506132556000830185612d9d565b61326260208301846131a6565b9392505050565b600060208201905061327e6000830184612dac565b92915050565b6000602082019050818103600083015261329e8184612df4565b905092915050565b600060208201905081810360008301526132bf81612e5e565b9050919050565b600060208201905081810360008301526132df81612e81565b9050919050565b600060208201905081810360008301526132ff81612ea4565b9050919050565b6000602082019050818103600083015261331f81612ec7565b9050919050565b6000602082019050818103600083015261333f81612eea565b9050919050565b6000602082019050818103600083015261335f81612f0d565b9050919050565b6000602082019050818103600083015261337f81612f30565b9050919050565b6000602082019050818103600083015261339f81612f53565b9050919050565b600060208201905081810360008301526133bf81612f76565b9050919050565b600060208201905081810360008301526133df81612f99565b9050919050565b600060208201905081810360008301526133ff81612fbc565b9050919050565b6000602082019050818103600083015261341f81612fdf565b9050919050565b6000602082019050818103600083015261343f81613002565b9050919050565b6000602082019050818103600083015261345f81613025565b9050919050565b6000602082019050818103600083015261347f81613048565b9050919050565b6000602082019050818103600083015261349f8161306b565b9050919050565b600060208201905081810360008301526134bf8161308e565b9050919050565b600060208201905081810360008301526134df816130b1565b9050919050565b600060208201905081810360008301526134ff816130d4565b9050919050565b6000602082019050818103600083015261351f816130f7565b9050919050565b6000602082019050818103600083015261353f8161311a565b9050919050565b6000602082019050818103600083015261355f8161313d565b9050919050565b6000602082019050818103600083015261357f81613160565b9050919050565b6000602082019050818103600083015261359f81613183565b9050919050565b60006020820190506135bb60008301846131a6565b92915050565b60006135cb6135dc565b90506135d7828261382e565b919050565b6000604051905090565b600067ffffffffffffffff82111561360157613600613966565b5b61360a82613995565b9050602081019050919050565b600067ffffffffffffffff82111561363257613631613966565b5b61363b82613995565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613696826137b0565b91506136a1836137b0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136d6576136d56138d9565b5b828201905092915050565b60006136ec826137b0565b91506136f7836137b0565b92508261370757613706613908565b5b828204905092915050565b600061371d826137b0565b9150613728836137b0565b92508282101561373b5761373a6138d9565b5b828203905092915050565b600061375182613790565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156137e75780820151818401526020810190506137cc565b838111156137f6576000848401525b50505050565b6000600282049050600182168061381457607f821691505b6020821081141561382857613827613937565b5b50919050565b61383782613995565b810181811067ffffffffffffffff8211171561385657613855613966565b5b80604052505050565b600061386a826137b0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561389d5761389c6138d9565b5b600182019050919050565b60006138b3826137b0565b91506138be836137b0565b9250826138ce576138cd613908565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4d75737420686f6c64206174206c65617374206f6e65204372616e69756d207460008201527f6f206d696e742061205374616c6c696f6e000000000000000000000000000000602082015250565b7f4d757374206d696e74206174206c65617374206f6e65205374616c6c696f6e00600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4d75737420686f6c64206174206c65617374206173206d616e79204372616e6960008201527f756d7320617320746865206e756d626572206f66205374616c6c696f6e73207960208201527f6f7520696e74656e6420746f206d696e74000000000000000000000000000000604082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53616c65206d7573742062652061637469766520746f206d696e74206120537460008201527f616c6c696f6e0000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f746f6b656e4964206f75747369646520636f6c6c656374696f6e20626f756e6460008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d617820737570706c79206f66205374616c60008201527f6c696f6e73000000000000000000000000000000000000000000000000000000602082015250565b61407f81613746565b811461408a57600080fd5b50565b61409681613758565b81146140a157600080fd5b50565b6140ad81613764565b81146140b857600080fd5b50565b6140c4816137b0565b81146140cf57600080fd5b5056fea2646970667358221220f651fc62181842e25e5ac080c85da55f2617640a85fc97730d8537e17a0e28e764736f6c63430008030033